SQLite2: Logout problem with FileDrop on form

Hi,

I was trying out the program I created for PTSS 43443, which has a simple browse/form, and the form in one instance of the program cannot write if the browse in a second instance is open.

I converted this to use the SQLite2 driver, and it fails with just a single version of the program: it is unable to do a logout when trying to save (after selecting a different value from the FileDrop) from the form. The form has a FileDrop on it that allows selection from another table in the same database. Pressing OK on the form throws an Error 48: Unable to log transaction. Log file looks like this:

[SQLite2][F][4941][051062S][JonWaterhouse][19424][2][10/21/25][11:29:39][][sqlprobs2.sqlite][clients][66][SQL ]SELECT A.file_no,A.PROG,A.GROUP_TYPE,A.a1name FROM clients A WHERE (A.file_no >= ?1) ORDER BY A.file_no ASC LIMIT 30 OFFSET ?2 ;
[SQLite2][F][4941][051062S][JonWaterhouse][19424][2][10/21/25][11:29:39][][sqlprobs2.sqlite][clients][66][SQL ]30 rows, 4 columns in result set
[SQLite2][F][4941][051062S][JonWaterhouse][19424][2][10/21/25][11:29:41][][sqlprobs2.sqlite][clients][66][BIND][sb28]1 (long)339289
[SQLite2][F][4941][051062S][JonWaterhouse][19424][2][10/21/25][11:29:41][][sqlprobs2.sqlite][clients][66][SQL ]SELECT A.STATUS,A.file_no,A.GROUP_TYPE,A.PROG,A.a1name FROM clients A WHERE A.file_no= ?1;
[SQLite2][F][4941][051062S][JonWaterhouse][19424][2][10/21/25][11:29:41][][sqlprobs2.sqlite][clients][66][DATA]  CLI:STATUS |
[SQLite2][F][4941][051062S][JonWaterhouse][19424][2][10/21/25][11:29:41][][sqlprobs2.sqlite][clients][66][DATA]  CLI:FILE_NO | 339289
[SQLite2][F][4941][051062S][JonWaterhouse][19424][2][10/21/25][11:29:41][][sqlprobs2.sqlite][clients][66][DATA]  CLI:GROUP_TYPE |
[SQLite2][F][4941][051062S][JonWaterhouse][19424][2][10/21/25][11:29:41][][sqlprobs2.sqlite][clients][66][DATA]  CLI:PROG | Relative Home Services
[SQLite2][F][4941][051062S][JonWaterhouse][19424][2][10/21/25][11:29:41][][sqlprobs2.sqlite][clients][66][DATA]  CLI:NAME |
[SQLite2][F][4941][051062S][JonWaterhouse][19424][2][10/21/25][11:29:41][][sqlprobs2.sqlite][clients][66][CLAR]GETPROPERTY(29457 PROP:Memos,0)
[SQLite2][F][4941][051062S][JonWaterhouse][19424][2][10/21/25][11:29:41][][sqlprobs2.sqlite][clients][66][CLAR]GETNULLS()
[SQLite2][F][4941][051062S][JonWaterhouse][19424][2][10/21/25][11:29:41][][sqlprobs2.sqlite][clients][66][CLAR]GETSTATE(0)
[SQLite2][F][4941][051062S][JonWaterhouse][19424][2][10/21/25][11:29:41][][sqlprobs2.sqlite][clients][66][CLAR]POSITION(key)
[SQLite2][F][4941][051062S][JonWaterhouse][19424][2][10/21/25][11:29:41][][sqlprobs2.sqlite][clients][66][CLAR]GETPROPERTY(29457 PROP:Memos,0)
[SQLite2][F][4941][051062S][JonWaterhouse][19424][2][10/21/25][11:29:41][][sqlprobs2.sqlite][clients][66][CLAR]GETNULLS()
[SQLite2][F][4941][051062S][JonWaterhouse][19424][2][10/21/25][11:29:41][][sqlprobs2.sqlite][clients][66][CLAR]GETPROPERTY(29457 PROP:Memos,0)
[SQLite2][F][4941][051062S][JonWaterhouse][19424][2][10/21/25][11:29:41][][sqlprobs2.sqlite][clients][66][CLAR]GETNULLS()
[SQLite2][F][4941][051062S][JonWaterhouse][19424][2][10/21/25][11:29:45][][sqlprobs2.sqlite][clients][66][CLAR]GETPROPERTY(31989 PROP:Object,0)
[SQLite2][F][4941][051062S][JonWaterhouse][19424][2][10/21/25][11:29:45][][sqlprobs2.sqlite][clients][66]OK button pressed on form
[SQLite2][F][4941][051062S][JonWaterhouse][19424][2][10/21/25][11:29:45][][sqlprobs2.sqlite][clients][66][CLAR]GETPROPERTY(29441 PROP:Logout,0)
[SQLite2][F][4941][051062S][JonWaterhouse][19424][2][10/21/25][11:29:45][][sqlprobs2.sqlite][clients][66][CLAR]SETPROPERTY(PROP:Logout,0)=1
[SQLite2][F][4941][051062S][JonWaterhouse][19424][2][10/21/25][11:29:54][][sqlprobs2.sqlite][clients][66][CLAR]GETPROPERTY(29457 PROP:Memos,0)

Somewhere around the end of that, or maybe a couple of steps afterwards LOGOUT throws the error message (the “OK button pressed on form” is a LOG() message before the parent call on the OK button on the form). Only option is to abort the update.

App, dct and sqlite file in zip

sqlite2 version.zip (168.2 KB)

Everything is about as plain vanilla ABC as you can get. My embedded code just turns logging on and writes the LOG() to indicate when the form OK button is pressed.

Morning Jon,

Thanks for the example. Unfortunately I was unable to duplicate the issue.

a) I did need to add the File Driver Kit global extension. This suggests to me that perhaps you zipped the app while it was open? In which case not all of your changes may have been included.

b) I tried changing records in one app, and in 2 apps at the same time. All seemed to work fine. I was changing the drop-down option, not the ID though.

I am testing using build 1.12. (Which should be going up today). But I’m not aware offhand of any logout issues changed in that build. I presume you were on 1.10?

Cheers
Bruce

update:1.12 is up

Hi,

Yes, I’m using 1.10. No extension – used the directions in the Hand Code section (cwdriver and compile flags).

Jon

try with 1.12, and if it fails let me know explicit instructions to duplicate please.

Hi Bruce,

Unfortunately I cannot get 1.12 to compile. Whole bunch of errors. The first one is in DriverClass.clw (line 2787), TranslateDate method

Return self._TranslateDateSql(fld,mth,dy,yr,LabelType,Cond)

Unknown function label and no matching prototype. It may be because fld is declared as a cstring in TranslateDate, and the function in the clw file expects a cstring as the first parameter, but the declaration in DriverClass.Inc is
_TranslateDateSql Procedure(String pMonth, String pDay, String pYear, Byte pLabelType, *Cstring pCond),String,Virtual

i.e. with a String as the first parameter.

Jon

sorry, the GitHub 1.12 push was missing some fles. I’ve pushed 1.12.1 now to include the missing files.

Works until it reports that 103 things in CLAOBD.exp are unresolved for export. So far as I could tell these were all the procedures that are in CWDriver.CLW. So I added cwdriver.clw to the solution for both claodb and cladobl and that seemed to solve the problem.

thanks, I’ll add those to the projects.