Hallo,
ich habe folgendes Problem:
Wenn ich über 2 Programmaufrufe eine Änderung eines Datensatzes vornehme, überschreiben sich diese gegenseitig. Grundsätzlich sind Inno-
DB-Tabellen ja transaktionssicher, also mache ich offenbar was falsch.
Folgende Einstellungen habe ich vorgenommen:
Delphi-Quellcode:
object DB1: TZConnection
Protocol = '
mysql'
HostName = '
localhost'
Port = 0
Database = '
ware'
User = '
'
Password = '
'
Catalog = '
ware'
AutoCommit = True
ReadOnly = False
TransactIsolationLevel = tiRepeatableRead
Connected = True
AfterConnect = DB1AfterConnect
SQLHourGlass = True
Left = 8
Top = 16
end
.
.
.
.
object LK: TZQuery
Connection = DM1.DB1
CachedUpdates = False
AfterPost = LKAfterPost
RequestLive = True
SQL.Strings = (
'
select * from LKopf'
'
WHERE lsnr = :lsnr'
'
FOR UPDATE'
'
')
ParamCheck = True
Params = <
item
DataType = ftUnknown
Name = '
lsnr'
ParamType = ptUnknown
end>
ShowRecordTypes = [usUnmodified, usModified, usInserted]
DataSource = LKSALL
UpdateMode = umUpdateChanged
WhereMode = wmWhereKeyOnly
Options = [doCalcDefaults]
Left = 341
Top = 60
ParamData = <
item
DataType = ftUnknown
Name = '
lsnr'
ParamType = ptUnknown
end>
Ich habe mich auch schon herumgespielt mit DB1.autocommit:= false; und DB1.starttransaction in lkbeforeedit(); DB1.commit in lkafterpost(); aber das lässt mich den Datensatz im zweiten Programmaufruf nicht einmal anzeigen (
db-connection bekommt irgendwann ein timeout).
Habt ihr Ideen,wass ich falsch mache?
Danke für eure Antworten!