- Details
- Written by: Stanko Milosev
- Category: Joomla
- Hits: 5345
- Details
- Written by: Stanko Milosev
- Category: dbExpress
- Hits: 6922
If you are receiving error: "Commands out of sync; you can't run this command now" in dbExpress / MySQL connection, then check your query, probably it's something wrong...
Also, with connection to MySQL you can't do "select" SQL statement inside transaction, for example:
var
DBXTran: TDBXTransaction;
begin
sql1.Close;
sql1.SQL.Clear;
sql1.SQL.Text := 'select * from table_one';
sql1.Open;
cds2.Open;
try
DBXTran := connnection1.BeginTransaction;
cds2.Append;
cds2.FieldByName('MyField').AsString := 'test';
cds2.Post;
cds2.ApplyUpdates(0);
connnection1.CommitFreeAndNil(DBXTran);
finally
connnection1.RollbackIncompleteFreeAndNil(DBXTran);
end;
Will be ok, while:
var
DBXTran: TDBXTransaction;
begin
cds2.Open;
try
DBXTran := connnection1.BeginTransaction;
sql1.Close;
sql1.SQL.Clear;
sql1.SQL.Text := 'select * from table_one';
sql1.Open;
cds2.Append;
cds2.FieldByName('MyField').AsString := 'test';
cds2.Post;
cds2.ApplyUpdates(0);
connnection1.CommitFreeAndNil(DBXTran);
finally
connnection1.RollbackIncompleteFreeAndNil(DBXTran);
end;
Will give you the error...
- Details
- Written by: Stanko Milosev
- Category: dbExpress
- Hits: 6668
If you tried something like:
with cds1.Params do
begin
ParamByName('finish').AsDateTime := now;
ParamByName('start').AsDateTime := Now-1;
end;
cds1.Open
And you received error like: DBX Error - ParameterNotSet then don't use AsDateTime, use AsSQLTimeStamp := DateTimeToSQLTimeStamp(Now-1);, so your code should look like:
with cds1.Params do
begin
ParamByName('finish').AsSQLTimeStamp := DateTimeToSQLTimeStamp(now);
ParamByName('start').AsDateTime := DateTimeToSQLTimeStamp(Now-1);
end;
cds1.Open