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.