我要更新好几条数据,如果更新过程中有一条数据出错,前面的更新的数据就恢复,用事务不知道怎么处理。
m_ADOQuery.Close;
m_ADOQuery.SQL.Clear;
m_ADOQuery.SQL.Add('Select * from table'); for i := 0 to aNewRecords.Count-1 do
begin
try
m_ADOQuery.Active := true;
begin
m_ADOQuery.Insert;
m_ADOQuery.Fields[0].Value := ssTemp.Strings[0];
m_ADOQuery.Fields[1].Value := ssTemp.Strings[1];
m_ADOQuery.Fields[2].Value := ssTemp.Strings[2]; m_ADOQuery.Post;
end;
except
begin
showmessage('数据更新错误');
result := 1;
end; //except
end; //try
end;// for
m_ADOQuery.Close;
m_ADOQuery.SQL.Clear;
m_ADOQuery.SQL.Add('Select * from table'); for i := 0 to aNewRecords.Count-1 do
begin
try
m_ADOQuery.Active := true;
begin
m_ADOQuery.Insert;
m_ADOQuery.Fields[0].Value := ssTemp.Strings[0];
m_ADOQuery.Fields[1].Value := ssTemp.Strings[1];
m_ADOQuery.Fields[2].Value := ssTemp.Strings[2]; m_ADOQuery.Post;
end;
except
begin
showmessage('数据更新错误');
result := 1;
end; //except
end; //try
end;// for
m_ADOQuery.Close;
m_ADOQuery.SQL.Clear;
m_ADOQuery.SQL.Add('Select * from table');
m_ADOQuery.Active := true; for i := 0 to aNewRecords.Count-1 do
begin
try
begin
m_ADOQuery.Insert;
m_ADOQuery.Fields[0].Value := ssTemp.Strings[0];
m_ADOQuery.Fields[1].Value := ssTemp.Strings[1];
m_ADOQuery.Fields[2].Value := ssTemp.Strings[2]; end;
except
begin
showmessage('数据更新错误');
result := 1;
end; //except
end; //try
m_ADOQuery.Post;
end;// for
AdoQuery用adoconnection进行连接。AdoConnection.BeginTrans;
try
//
AdoConnection.CommitTrans;
except
AdoConnection.RollbackTrans;
ShowMessage('数据更新错误');
end;
try
...
Post;
...
Post;
....
Post;
AdoConnection.CommitTrans;
except
AdoConnection.RollbackTrans;
ShowMessage('数据更新错误');
end;
try
AdoConnection.CommitTrans;
except
AdoConnection.RollbackTrans;
end;