autodefine "off" $include "windowssdk.inc" DIALOG d1 DOUBLE calcDbl,totalDbl FLOAT calcFlt,totalFlt INT calcInt,totalInt POINTER pDB,pReturn INT count,i,times UINT hStmt SETPRECISION 8 ENUM d1_const d1_SYSBUTTON1=100 d1_SYSBUTTON2 d1_SYSBUTTON3 d1_LISTBOX1 d1_LISTBOX2 d1_LISTBOX3 STATIC1 STATIC2 STATIC3 ENDENUM CreateDialog d1,0,0,408,460,@CAPTION|@SYSMENU|@BORDER,0,"Money DB Test",&d1_handler CONTROL d1,@SYSBUTTON,"Test 20x",57,422,60,25,0,d1_SYSBUTTON1 CONTROL d1,@SYSBUTTON,"Test 25x",174,422,60,25,0,d1_SYSBUTTON2 CONTROL d1,@SYSBUTTON,"Exit",291,422,60,25,0,d1_SYSBUTTON3 CONTROL d1,@LISTBOX,"",15,15,120,374,0|@BORDER,d1_LISTBOX1 CONTROL d1,@LISTBOX,"",145,15,120,374,0|@BORDER,d1_LISTBOX2 CONTROL d1,@LISTBOX,"",275,15,120,374,0|@BORDER,d1_LISTBOX3 CONTROL d1,@STATIC,"DOUBLE (CURRENCY)",15,396,120,20,0,STATIC1 CONTROL d1,@STATIC,"FLOAT",145,396,120,20,0,STATIC2 CONTROL d1,@STATIC,"INTEGER",275,396,120,20,0,STATIC3 pDB=OpenDatabase(d1) IF pDB=NULL CLOSEDIALOG d1,@IDOK END ENDIF SHOWDIALOG d1 WAITUNTIL ISWINDOWCLOSED(d1) dbFreeSQL(hStmt) IF pDB<>NULL THEN dbDisconnect(pDB) END SUB d1_handler(),INT SELECT @MESSAGE CASE @IDINITDIALOG CENTERWINDOW d1 FOR i=STATIC1 TO STATIC3 SETCONTROLCOLOR(d1,i,RGB(0,0,255),GetSysColor(15)) NEXT i CASE @IDCONTROL SELECT @CONTROLID CASE d1_SYSBUTTON1 IF @NOTIFYCODE=0 times=20 TestCode() ENDIF CASE d1_SYSBUTTON2 IF @NOTIFYCODE=0 times=25 TestCode() ENDIF CASE d1_SYSBUTTON3 IF @NOTIFYCODE=0 CLOSEDIALOG d1,@IDOK ENDIF CASE d1_LISTBOX1 ENDSELECT CASE @IDCLOSEWINDOW CLOSEDIALOG d1,@IDOK ENDSELECT RETURN 0 ENDSUB SUB TestCode() SendMessage(d1,0x184,0,0,d1_LISTBOX1) 'Clear Listbox1 SendMessage(d1,0x184,0,0,d1_LISTBOX2) 'Clear Listbox2 SendMessage(d1,0x184,0,0,d1_LISTBOX3) 'Clear Listbox3 dbFreeSQL(hStmt) hStmt=NULL calcDbl=0 totalDbl=0 calcFlt=0 totalFlt=0 calcInt=0 totalInt=0 FOR i=1 TO times 'How many times to add 1.01 calcDbl=calcDbl+1.01 totalDbl+=calcDbl calcFlt=calcFlt+1.01 totalFlt+=calcFlt calcInt=calcInt+1.01 totalInt+=calcInt hStmt=dbExecSQL(pDB,"INSERT INTO testola (amountDbl,amountFlt,amountInt) VALUES("+STR$(calcDbl)+","+STR$(calcFlt)+","+STR$(calcInt)+")") ADDSTRING d1,d1_LISTBOX1,STR$(calcDbl) ADDSTRING d1,d1_LISTBOX2,STR$(calcFlt) ADDSTRING d1,d1_LISTBOX3,STR$(calcInt) NEXT i dbFreeSQL(hStmt) hStmt=NULL ADDSTRING d1,d1_LISTBOX1,"" ADDSTRING d1,d1_LISTBOX1,"Total:" ADDSTRING d1,d1_LISTBOX1,STR$(totalDbl) ADDSTRING d1,d1_LISTBOX2,"" ADDSTRING d1,d1_LISTBOX2,"Total:" ADDSTRING d1,d1_LISTBOX2,STR$(totalFlt) ADDSTRING d1,d1_LISTBOX3,"" ADDSTRING d1,d1_LISTBOX3,"Total:" ADDSTRING d1,d1_LISTBOX3,STR$(totalInt) ENDSUB SUB OpenDatabase(win as WINDOW),POINTER pReturn=dbConnect("Microsoft Access Driver (*.mdb)",GETSTARTPATH+"doubletest.mdb","",win) IF pReturn=NULL 'couldn't open, so try creating dbCreateMDB(GETSTARTPATH+"doubletest.mdb") pReturn=dbConnect("Microsoft Access Driver (*.mdb)",GETSTARTPATH+"doubletest.mdb","",win) IF pReturn<>NULL 'add a table hStmt=dbExecSQL(pReturn,"CREATE TABLE testola (id counter(1,1), amountDbl CURRENCY, amountFlt FLOAT, amountInt INT)") 'check for errors IF LEN(dbGetErrorCode(hStmt)) MESSAGEBOX win,dbGetErrorText(hStmt),dbGetErrorCode(hStmt) ENDIF dbFreeSQL(hStmt) hStmt=NULL ELSE MESSAGEBOX win,"Could not connect/create database","Error" ENDIF ENDIF 'are we open? IF pReturn<>NULL 'get the initial count of records count=dbCardinality(pReturn,"testola") ENDIF RETURN pReturn ENDSUB