procedure TfrmInput.BtnAddClick(Sender: TObject);
begin
with DMtongtao do
begin
ADOCtongtao.BeginTrans;//事务提交
try
ADOQrkdj.SQL.Text:='select * from rkdjb where 1=0';
ADOQrkdj.LockType:=ltBatchOptimistic;
ADOQrkdj.CursorType:=ctKeyset;
ADOQrkdj.Open;
if find=0 then
begin
ADOQcpm.SQL.Text:='select * from cpmk where 1=0';
ADOQcpm.LockType:=ltBatchOptimistic;
ADOQcpm.CursorType:=ctKeyset;
ADOQcpm.Open; ADOQcpm.Append;
ADOQcpm.FieldByName('P_Code').AsString:=Trim(CmbP_code.text);
ADOQcpm.FieldByName('P_Name').AsString:=Trim(EdP_name.text);
ADOQcpm.FieldByName('P_Mode').AsString:=Trim(EdP_mode.text);
ADOQcpm.FieldByName('P_Dw').AsString:=Trim(EdP_Unit.text);
ADOQcpm.Post;
end; ADOQrkdj.Append;
ADOQrkdj.FieldByName('rkdh').AsString:=trim(Eddh.text);
ADOQrkdj.FieldByName('jhname').AsString:=trim(EdJhName.text);
ADOQrkdj.FieldByName('P_Code').AsString:=trim(CmbP_code.text);
ADOQrkdj.FieldByName('P_name').AsString:=trim(EdP_name.text);
ADOQrkdj.FieldByName('P_mode').AsString:=trim(EdP_mode.text);
ADOQrkdj.FieldByName('P_sl').AsInteger:=strtoint(trim(EdP_SL.text));
ADOQrkdj.FieldByName('P_price').AsCurrency:=strtocurr(trim(EdP_price.text));
ADOQrkdj.Post; ADOQcpm.UpdateBatch;
ADOQrkdj.UpdateBatch; ADOCtongtao.CommitTrans;
showMessage('数据保存成功!');
except
ADOCtongtao.RollbackTrans;
MessageDlg('保存数据失败!',mtError,[mbOK],0);
Close;
end;
end;
end;总说 ADOQcpm:Cannot perform this operation on a closed dataset
begin
with DMtongtao do
begin
ADOCtongtao.BeginTrans;//事务提交
try
ADOQrkdj.SQL.Text:='select * from rkdjb where 1=0';
ADOQrkdj.LockType:=ltBatchOptimistic;
ADOQrkdj.CursorType:=ctKeyset;
ADOQrkdj.Open;
if find=0 then
begin
ADOQcpm.SQL.Text:='select * from cpmk where 1=0';
ADOQcpm.LockType:=ltBatchOptimistic;
ADOQcpm.CursorType:=ctKeyset;
ADOQcpm.Open; ADOQcpm.Append;
ADOQcpm.FieldByName('P_Code').AsString:=Trim(CmbP_code.text);
ADOQcpm.FieldByName('P_Name').AsString:=Trim(EdP_name.text);
ADOQcpm.FieldByName('P_Mode').AsString:=Trim(EdP_mode.text);
ADOQcpm.FieldByName('P_Dw').AsString:=Trim(EdP_Unit.text);
ADOQcpm.Post;
end; ADOQrkdj.Append;
ADOQrkdj.FieldByName('rkdh').AsString:=trim(Eddh.text);
ADOQrkdj.FieldByName('jhname').AsString:=trim(EdJhName.text);
ADOQrkdj.FieldByName('P_Code').AsString:=trim(CmbP_code.text);
ADOQrkdj.FieldByName('P_name').AsString:=trim(EdP_name.text);
ADOQrkdj.FieldByName('P_mode').AsString:=trim(EdP_mode.text);
ADOQrkdj.FieldByName('P_sl').AsInteger:=strtoint(trim(EdP_SL.text));
ADOQrkdj.FieldByName('P_price').AsCurrency:=strtocurr(trim(EdP_price.text));
ADOQrkdj.Post; ADOQcpm.UpdateBatch;
ADOQrkdj.UpdateBatch; ADOCtongtao.CommitTrans;
showMessage('数据保存成功!');
except
ADOCtongtao.RollbackTrans;
MessageDlg('保存数据失败!',mtError,[mbOK],0);
Close;
end;
end;
end;总说 ADOQcpm:Cannot perform this operation on a closed dataset
begin
...
end
我把ADOQcpm.UpdateBatch放错地方了应该放在if find=0 then
begin
end;
里面,因为find在这里等于1了谢谢各位大虾!!一起努力!