在修改订单的时候,在dbgrid里增加记录,保存后发现增加的那几条记录没有保存到数据库,还是原样。
比如,一个订单本来有5条记录,我点修改进入修改界面,然后在dbgrid里又增加了5条数据,保存成功后,然后重新浏览该订单发现还是5条,原先增加的5条数据没有保存到数据库。注: 1.在点修改按钮单据时候(formshow事件),我启用了缓存更新
ADOQuery1.CursorType:=ctStatic; // 启用缓存更新
ADOQuery1.LockType:=ltBatchOptimistic; // 启用缓存更新
2. 点击保存按钮button时统一更新
ADOQuery1.Edit;
ADOQuery1.Post;
ADOQuery1.UpdateBatch(arAll);是不是这样的写法,只能更新记录,不能增加记录啊?
比如,一个订单本来有5条记录,我点修改进入修改界面,然后在dbgrid里又增加了5条数据,保存成功后,然后重新浏览该订单发现还是5条,原先增加的5条数据没有保存到数据库。注: 1.在点修改按钮单据时候(formshow事件),我启用了缓存更新
ADOQuery1.CursorType:=ctStatic; // 启用缓存更新
ADOQuery1.LockType:=ltBatchOptimistic; // 启用缓存更新
2. 点击保存按钮button时统一更新
ADOQuery1.Edit;
ADOQuery1.Post;
ADOQuery1.UpdateBatch(arAll);是不是这样的写法,只能更新记录,不能增加记录啊?
ADOQuery1.Edit;
ADOQuery1.Post;
ADOQuery1.UpdateBatch(arAll);參考以下的代碼:1.新增:
procedure TRes_Cq_HrQj_F.btnSB_NewClick(Sender: TObject);
begin
inherited;
ChangeStatus(sEdit);
qry_hrqj.Append;
qry_hrqj.FieldValues['OPID']:=_UserNo;
qry_hrqj.FieldValues['OPBY']:=_UserName;
qry_hrqj.FieldValues['QJDNO']:=FormatdateTime('yyyy'+ 'mm'+ 'dd'+ 'hh'+ 'mm'+ 'ss'+ 'zzz',Now);
cx_jb.SetFocus;
end;2.修改:procedure TRes_Cq_HrQj_F.btnSB_ModiClick(Sender: TObject);
begin
inherited;
qry_hrqj.Edit;
qry_hrqj.FieldByName('OPBY').AsString:=_UserName;
ChangeStatus(sEdit);
end;3.保存:procedure TRes_Cq_HrQj_F.btnSB_SaveClick(Sender: TObject);
begin
inherited;
if not btnSB_New.Enabled then
begin
if (Trim(cx_jb.Text)='') and
(Trim(cx_gh.Text)='') and
(Trim(cx_qjlb.Text)='') and
(Trim(cx_sqrq.Text)='') and
(Trim(cx_ksrq.Text)='') and
(Trim(cx_jsrq.Text)='') and
(Trim(cx_qjyy.Text)='') then
begin
MessageDlg('操作提示:數據不完整,如果不保存請點擊“取消”終止操作!',mtWarning,[mbOK],0);
exit;
end;
if qry_hrqj.State in [dsedit,dsinsert] then
begin
try
isSave:=true;
qry_hrqj.Post;
finally
ChangeStatus(sBrowse);
end;
end;
end;
end;4.刪除:procedure TRes_Cq_HrQj_F.btnSB_DelClick(Sender: TObject);
begin
inherited;
if MessageDlg('你確定要刪除此條記錄嗎?',mtWarning,[mbYes,mbNo],0)=mryes then
begin
if not qry_hrqj.IsEmpty then
begin
qry_hrqj.Delete;
end else
Abort;
end
end;5.取消操作:procedure TRes_Cq_HrQj_F.btnSB_CancelClick(Sender: TObject);
begin
inherited;
qry_hrqj.Cancel;
ChangeStatus(sBrowse);
end;基礎的東東,多研究一下...
保存时用 ADOQuery1.Edit;
ADOQuery1.Post;
ADOQuery1.UpdateBatch(arAll);//如果ADOQuery1.LockType:=ltOptimistic;就不用此句
就可以,