ADO_Q:=TADOQuery.Create(nil);
ADO_Q.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ExtractFilePath(ParamStr(0))+'db1.mdb'+';Persist Security Info=False';
ADO_Q.SQL.Clear;
ADO_Q.SQL.Add('delete *from Alarm');
ADO_Q.ExecSQL; //下面是线程
QueryThread := TQueryThread.Create(True);
QueryThread.Resume; procedure TQueryThread.Execute;
begin
FreeOnTerminate := True;
try
AdoQuery.Active := True;
AdoConn1.Open;
AdoQuery1.SQL.text:='insert into AA(A_1,A_2) value('11','2')';
AdoQuery1.ExecSQL;
except
end;
end;为什么delete 还没有delete 完所有的数据,就已经insert了呀??该怎么办?
看出一个问题: delete写法不对,应该改为Delete from Alarm
delete * from AA 在TADOQUERY中通过.delete from AA 中from 是可选字段,应该delete AA
AdoConn1.Open;
//加入判断AdoConn1记录数的语句,先看是否是空表,若不是则延迟一估时间再执行
AdoQuery1.SQL.text:='insert into AA(A_1,A_2) value('11','2')';
begin
//下面是线程
QueryThread := TQueryThread.Create(True);
QueryThread.Resume;
end; 这里不会丢数据么?? with ADO_Q do
begin
sql.clear;
sql.add('SELECT * FROM Alarm');
open;
end;while (1=1) do
begin
if ADO_Q.IsEmpty then
begin
//下面是线程
QueryThread := TQueryThread.Create(True);
QueryThread.Resume;
Break;
end;
end;
建議樓主在檢查一下,是不是哪里誤解了。
delete * from Alarm 語法錯誤,不會得到執行
if ADO_Q.IsEmpty then //这样应该可以吧
begin
QueryThread := TQueryThread.Create(True);
QueryThread.Resume;
end;
这样肯定是不行的,可能线程是不运行的.引用>>delete * from Alarm 語法錯誤,不會得到執行
这个完全没有问题.你们可以Try看看while (1=1) do
begin
if ADO_Q.IsEmpty then
begin
//下面是线程
QueryThread := TQueryThread.Create(True);
QueryThread.Resume;
Break;
end;
end;
这条语句是可以的,就是变成一个假死的循环.