比如在一个简单的数据库引用中嘛,
一个ttable,一个DATASOURSE,一个dbgrid
我现在用table.delete删除一个记录,然后用post写回磁盘,提示not in edit mode, 我用Table1.ApplyUpdates 提示 :index in read only,也不能写回磁盘。
用table.commitupdate也是一样。这应该这么改呢。
index in read only是为什么呢,或者说用post可以吗,怎么修改。。
谢谢。
一个ttable,一个DATASOURSE,一个dbgrid
我现在用table.delete删除一个记录,然后用post写回磁盘,提示not in edit mode, 我用Table1.ApplyUpdates 提示 :index in read only,也不能写回磁盘。
用table.commitupdate也是一样。这应该这么改呢。
index in read only是为什么呢,或者说用post可以吗,怎么修改。。
谢谢。
解决方案 »
- 关于coolcontrols这个控件的
- 需要一套delphi面试题
- dspack 图像播放问题
- canvas画完线后取消。
- 延时应该如何做
- 如何根据 IC卡的外部序号以及发行年份、省份 ,得出IC 卡的内部ID号 ?
- 求救 delphi
- 初级问题:添加新的method和procedure只能先手工输入声明,再输入实现吗?有没有象VC里那样简单的方法?
- 当程序执行到数据控件query时,出异常并提示:EACCESSVIOLATION异常错误,请指明方向!
- java 压缩的Gzip字符串delphi如何解压?我这里总是提示data error
- 布尔型变量
- 请问,怎样是mediaplayer播放的时候不要指定是哪个盘,只要指定是哪个目录下就可以拉?
这样子嘛。
table.edit;
table.delete;
table.post;
table.delete;
table.post;
这样的结果是:dataset not in edit or insert mode
这是怎么回事啊。。继续求解答
搞定了一定给分啊。。
begin
close;
sql.clear;
sql.add('delete from table_name where Id='+#39+edit1.text+#39);
execsql;
end;where id= ...
这就是你的删除条件。这个方法一定不会错。
我是将updatecache设为true,所以delete后不会写回磁盘吧。
我的程序中,我是希望比如点击删除按钮后用table.delete直接删除,但是要等到
点击Save按钮的时候才写回磁盘。我开始是希望用table.post,这个肯定不行嘛,
后来又是在table.delete前加一个table.edit;这样也不行,也是说dataset not in edit mode;
后来又用table.applyupdates和table.commitupdates这样也不行,提示是index in read only,
这就搞的我郁闷惨了。
希望哪位大虾给点意见。
不要Post;如果用缓存更新的话就要
table.applyupdates;否则table.delete;
就够了;
Table1.edit;
Table1.delete;
即可
这个问题又怎么解决啊
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.Edit;
DataModule1.Table1.Delete;
Change:=True;
end;procedure TMainForm.Button_OkClick (Sender: TObject);
begin
if (DataModule1.Table1.Modified = true) or (Change = True) then
//DataModule1.Table1.Post;
MainForm.Close;
end;
procedure TMainForm.Button_AddClick(Sender: TObject);
begin
Application.CreateForm(TForm1, Form1);
end;
procedure TMainForm.Button_SaveClick(Sender: TObject);
begin
if (DataModule1.Table1.Modified = true) or (Change=True) then
begin
// DataModule1.Table1.Post;
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.
table1.Post; //缓存更新
table1.Active:=false; //关闭再打开可确保写入磁盘了
table1.Active:=true;
该怎么往下做就直接写别的代码就行了,它自动post