这是我的代码:
procedure TfrmServerMain.CmdHndler_GetOrderProdDatesCommand(ASender: TIdCommand);
begin
if Assigned(ASender.Params) then
with TADOQuery.Create(nil) do
begin
Connection := ADOConnection1;
SQL.Clear;
SQL.Add('SELECT *');
SQL.Add('FROM DoneOperations');
SQL.Add('WHERE OrderID = ' + ASender.Params[0]);
SQL.Add('ORDER BY DoneDate');
try
Open; // issued line
if RecordCount = 0 then
begin
ASender.Context.Connection.Socket.WriteLn(FloatToStr(MaxDateTime), TIdTextEncoding.UTF8);
ASender.Context.Connection.Socket.WriteLn(FloatToStr(MaxDateTime), TIdTextEncoding.UTF8);
end
else
begin
First;
ASender.Context.Connection.Socket.WriteLn(
FloatToStr(FieldByName('DoneDate').AsDateTime));
Last;
ASender.Context.Connection.Socket.WriteLn(
FloatToStr(FieldByName('DoneDate').AsDateTime));
end;
except
Log(ltError, 'Exception while sending Orders start/end date');
ASender.Context.Connection.Socket.WriteLn('error');
ASender.Context.Connection.Socket.WriteLn('error');
end;
Close;
Free;
ASender.Context.Connection.Disconnect;
end;
end;
一切正常,代码运行正常。但是,当应用程序执行Open;
行时,有时(20%的次数)会导致访问冲突错误。
单独测试SQL语句,并且在任何条件下都可以正常运行。
f.e。:SELECT * FROM DoneOperations WHERE OrderID = 35 ORDER BY DoneDate
我测试的操作系统:Windows7,Windows Server 2008。
我无法解决这个问题,或者找不到它。谢谢你的帮助。