错误提示:Table is Read Only!(50分)

  • 主题发起人 ENIAC1946
  • 开始时间
E

ENIAC1946

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾:

  我现在点击删除按钮时,出现错误提示:Table is Read Only!

我使用的控件为TTable,TQuery,TDBGrid,TEdit,TButton!

  我在Edit1的OnChange事件中写的代码为:

  procedure TF_setbook.Edit1Change(Sender: TObject);
  begin
   F_DM.Table_book.Close;
   DBGrid1.DataSource:=F_DM.Data_book;
   with F_DM.Table_book do
   begin
   open;
   IndexName:='BidInd';
  setkey;
  fieldbyname('Bid').AsString:=Trim(Edit1.Text);
  gotonearest;
   IndexName:='';
  end;
  end;

  我在Edit1的OnKeyDown事件中写的代码为:

  procedure TF_setbook.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
  var
   sid:string;
  begin
   If int(key)=13 then
   begin
   with F_DM.Query_book do
  begin
   sid:='%'+Trim(Edit1.Text)+'%';
   close;
   SQL.Clear;
   SQL.Add('select * from Bookinfo where Lower(Bid) like '''+Lowercase(sid)+''' ');
  open;
   If RecordCount=0 then
  begin
   MessageDlg('没有与检索条件相符的选项',mtWarning,[mbOK],0);
   Edit1.SetFocus;
  Exit;
  end
  Else
  begin
  F_DM.Table_book.Close;
  DBGrid1.DataSource:=F_DM.DataSource_book;
  end;
  end;
  end;
  end;

  我在删除按钮的事件中写的代码为:

  procedure TF_setbook.Button3Click(Sender: TObject);
  begin
  If MessageDlg('确定要删除所选的记录吗?',mtWarning,[mbYes,mbNo],0)=mrYes then
  begin
  DBGrid1.DataSource.DataSet.Delete;
  DBGrid1.Refresh;
  end;
  end;
  
  如果在Edit1的OnKeyDown事件发生后,产生的新表中点击删除按钮会出现错误提示:Table is Read Only!

  如果在Edit1的OnChang事件发生后,点击删除按钮则可以顺利删除记录!

 
加上 F_DM.Table_book.Edit試試!
 
大虾:
  我加过F_DM.Table_book.Edit,这样也不行!

  还请赐教!
 
看看F_DM.Table_book的Readonly是否仍然為False
 
我是說把它(F_DM.Table_book.Edit)
加在
DBGrid1.DataSource:=F_DM.DataSource_book;后
試試!
 
大哥,这样也不行!
多谢!
 
我馬上去調試,好了我會通知你的.
 
在F_DM.Table_book.Close;之前把sql關閉就可以.
 
不知老兄有沒有搞掂?
 
你在Edit1的OnKeyDown事件中写的代码有问题:
你检索是用的F_DM.Query_book
而后面如果检索到的话则:
F_DM.Table_book.Close;
DBGrid1.DataSource:=F_DM.DataSource_book;
请问:
F_DM.DataSource_book的 dateset是什么,F_DM.Query_book or F_DM.Table_book?
如果是F_DM.Table_book,那么 F_DM.Query_book 已经被close
如果是F_DM.Query_book ,我试过你的代码了,出现了你的错误。
据我所知query组件不能直接delete,而要通过sql语句实现删除   
 
多谢指点!
 
顶部