Code: Alles auswählen
#include "Gra.ch"
#include "Xbp.ch"
#include "AppEvent.ch"
*#include "pgdbe.ch" // gibt es nicht
#define _PG 1
PROCEDURE Main
LOCAL oSession
LOCAL cConnStr
local nStart, nEnde
local nRecno
cls // nix PM
// Load the PostgreSQL DatabaseEngine
DbeLoad("pgdbe")
DbeSetDefault("pgdbe")
// Connect to the Server
cConnStr := "DBE=pgdbe;server=localhost;db=mdidemo;uid=postgres;pwd=********"
oSession := PgSession():New(cConnStr)
IF(!oSession:IsConnected())
MsgBox("connection failed, database missing")
QUIT
ENDIF
IF(!IsTable(oSession,"fsicher"))
MsgBox("No fsicher table")
ENDIF
SET DELETED ON
nStart := SECONDS()
USE fsicher NEW
nEnde := SECONDS()
Msgbox("USE "+LTRIM(STR(nEnde-nStart))+" sec.")
IF ! NetErr()
nStart := SECONDS()
nRecno := LASTREC()
nEnde := SECONDS()
Msgbox("LastRec "+LTRIM(STR(nEnde-nStart))+" sec.")
nStart := SECONDS()
DbGoto( nRecno/2 )
nEnde := SECONDS()
Msgbox("GOTO 1/2 "+LTRIM(STR(nEnde-nStart))+" sec.")
nStart := SECONDS()
DbGoto( 1 )
nEnde := SECONDS()
Msgbox("GOTO 1 "+LTRIM(STR(nEnde-nStart))+" sec.")
nStart := SECONDS()
DbGoto( nRecno )
nEnde := SECONDS()
Msgbox("GOTO Lastrec "+LTRIM(STR(nEnde-nStart))+" sec.")
ENDIF
nStart := SECONDS()
GO TOP
nEnde := SECONDS()
Msgbox("GOTO 1 "+LTRIM(STR(nEnde-nStart))+" sec.")
nStart := SECONDS()
BROWSE()
nEnde := SECONDS()
Msgbox("Browse "+LTRIM(STR(nEnde-nStart))+" sec.")
nStart := SECONDS()
GO TOP
nEnde := SECONDS()
Msgbox("GOTO 1 "+LTRIM(STR(nEnde-nStart))+" sec.")
nStart := SECONDS()
BROWSE()
nEnde := SECONDS()
Msgbox("Browse "+LTRIM(STR(nEnde-nStart))+" sec.")
nStart := SECONDS()
GO TOP
nEnde := SECONDS()
Msgbox("GOTO 1 "+LTRIM(STR(nEnde-nStart))+" sec.")
nStart := SECONDS()
BROWSE()
nEnde := SECONDS()
Msgbox("Browse "+LTRIM(STR(nEnde-nStart))+" sec.")
WAIT
RETURN
FUNCTION IsTable(oSession,cTable)
LOCAL cStr,lRet
LOCAL nOldSelect := Select()
// checking if database is there
cStr := "SELECT Count(table_name) AS Count FROM information_schema.tables WHERE table_name='%1'"
cStr := StrTran(cStr,"%1",Lower(cTable))
DbSelectArea(0)
oSession:ExecuteQuery(cStr)
IF(!Used())
RETURN .F.
ENDIF
lRet := FIELD->Count!=0
DbCloseArea()
DbSelectArea(nOldSelect)
RETURN(lRet)
1st Browse : sobald er den Browse anfängt ESC drücken. spätestens wenn er "stable" ist, also die Cell "hilight" ist ESC
2nd Browse: jetzt wisst ihr ungefähr wie lange es bis zum "stable" dauert also beim 2nd BROWSE()
warten ... warten bis die Cell "hilight" erhält und dann CRTL-PGDN also an das Ende springen.
das "hilight" sollte weg sein ... mit PG_RIGHT (!) versuchen ob er noch reagiert, dann nochmal CRTL-PGDN sonst ESC.
3th Browse : ist nun zum "blättern" gedacht ... "oben"(BOF) und "unten"(EOF) mal "blättern" ob ihr einen Unterschied merkt.
damit bekommt man zumindest einen Eindruck was bei > 500000 und pgDBE passiert.
p.s. wer mit DbfUpSize.EXE nicht klar kommt sollte die "lates" PGu.EXE Version und den Import versuchen.