数据库编程中使用table控件将cacheupdate设为true;
当使用 table1.delete;后
再调用 table1.post;就会发生一个错误。
提示是dataset不是在edit状态,这里应该怎么设置呢
应该怎么修改才能使post正常呢,或者说怎么是delete操作后,能够写回磁盘啊
当使用 table1.delete;后
再调用 table1.post;就会发生一个错误。
提示是dataset不是在edit状态,这里应该怎么设置呢
应该怎么修改才能使post正常呢,或者说怎么是delete操作后,能够写回磁盘啊
直接提交就可以了commit;
edit,append,insert后才用post
直接用delete就行了
commit怎么用啊。不行啊。
with CustomerQuery do
begin
Database1.StartTransaction;
try
ApplyUpdates; {try to write the updates to the database};
Database1.Commit; {on success, commit the changes};
except
Database1.Rollback; {on failure, undo the changes};
raise; {raise the exception to prevent a call to CommitUpdates!}
end;
CommitUpdates; {on success, clear the cache}
end;end;
table.post;
不用post。
unit main;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, DBTables, StdCtrls,Addnew,DATAModle;type
TMainForm = class(TForm)
DBGrid1: TDBGrid;
Button_Add: TButton;
Button_Del: TButton;
Button_Ok: TButton;
Button_Find: TButton;
Button_Save: TButton;
procedure Button_DelClick(Sender: TObject);
procedure Button_OkClick(Sender: TObject);
procedure Button_AddClick(Sender: TObject);
procedure Button_SaveClick(Sender: TObject);
procedure Button_FindClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
MainForm: TMainForm;
Change:Boolean;implementationuses Search;{$R *.dfm}procedure TMainForm.Button_DelClick(Sender: TObject);
begin
if DataModule1.Table1.IsEmpty=true then
exit
else
DataModule1.Table1.Delete;
Change:=True;
end;procedure TMainForm.Button_OkClick (Sender: TObject);
begin
if DataModule1.table1.state in [dsInsert, dsEdit] then
DataModule1.table1.post;
if Change=True then
begin
DataModule1.Table1.ApplyUpdates;
Change:=False;
end;
end;
procedure TMainForm.Button_AddClick(Sender: TObject);
begin
Application.CreateForm(TForm1, Form1);
end;
procedure TMainForm.Button_SaveClick(Sender: TObject);
begin
if DataModule1.table1.state in [dsInsert, dsEdit] then
DataModule1.table1.post;
if Change=True then
begin
DataModule1.Table1.ApplyUpdates;
Change:=False;
end;
end;procedure TMainForm.Button_FindClick(Sender: TObject);
begin
Application.CreateForm(TSearchForm, SearchForm);
end;procedure TMainForm.FormCreate(Sender: TObject);
begin
Change:=False;
end;end.
直接提交就可以commit;
还有,一般post前面对应的是edit
post一定要在insert 或edit 状态下。post之前要先检查是否处于这两种状态