这是我的代码:
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;
一切正常,代码运行正常。但有时(20% 的时间)在应用程序执行Open;
行时随机导致访问冲突错误。
SQL 语句是单独测试的,在任何情况下都可以正常工作。费:SELECT * FROM DoneOperations WHERE OrderID = 35 ORDER BY DoneDate
我测试的操作系统:Windows7、Windows Server 2008。
我无法处理这个,或者找到它的原因。感谢您的帮助。