我用一个DBGrid来显示一张表的所有内容!怎样删除所选的记录!并且保存回数据库?

时间:2021-08-08 14:45:57
我用一个DBGrid来显示一张表的所有内容!怎样删除所选的记录!并且保存回数据库?

11 个解决方案

#1


dbgrid.datasource.dataset.firt;
while not dbgrid.datasource.dataset.eof do 
  dbgrid.datasource.dataset.delete;
dbgrid.datasource.dataset.Post;

#2


dataset.delete;
dataset.post;

#3


以下全删除,以下只删除选中的
dbgrid.datasource.dataset.delete;
dbgrid.datasource.dataset.Post;

#4


dbgrid.datasource.dataset.delete;
dbgrid.datasource.dataset.Post;

#5


to  ljmanage(过客) 我按按照您的办法,得到如提示:ADOtable1:DataSet not in edit or insert mode.

#6


ADOtable1.edit;
dbgrid.datasource.dataset.delete;
dbgrid.datasource.dataset.Post;

#7


var
  i:smallint;
  tmpBookMark :TbookMark;
begin
  dbGrid.DataSource.DataSet.DisableControls;
  for dbGrid.SelectedCount-1 downto 0 do
  begin
     query1.GotoBookmark(pointer(dbGrid.selectedRows[i]));
     query1.delete;
  end;
  query1.post;
  dbGrid.DataSource.DataSet.EnableControls;
end;

//query1为dbgrid关联的Query或Table,clientdataset

#8


估计你是使用了关联查询(如:select a.*,b.* from aa a,bb a where a.n=b.n),
否则上面的例子是可以的.
你还是要使用delete from where....来删除!

#9


如果你没有使用关联查询,你可以直接在DBGRIDE 里删除,方法是,
  if DBGrid1.DataSource.DataSet.Bof and DBGrid1.DataSource.DataSet.Eof then exit;
if (messagedlg('确实要删除这条记录吗?',mtinformation,[mbyes,mbno],0) = mryes) then begin
  DBGrid1.DataSource.DataSet.Delete ;
如果你使用了关联查询,用这种方法删除你就会把其他表里相关联的字段删除,这时候就得在表里删除,方法是,先用LOCATE 将记录定位到你要删除的记录,然后删除所指记录,例如:     name:=DBGrid1.DataSource.DataSet.FieldValues['name']; 
ADOTable1.Locate('name',name,[]);
ADOTable1.Delete;  
(这儿假设以 name 索引)

#10


我没有使用关联查询!只是简单的设置相关的数据集!数据源而已!

#11


通过TDbGrid的SelectedRows 来处理,不会还要注意这个会少删一条记录

#1


dbgrid.datasource.dataset.firt;
while not dbgrid.datasource.dataset.eof do 
  dbgrid.datasource.dataset.delete;
dbgrid.datasource.dataset.Post;

#2


dataset.delete;
dataset.post;

#3


以下全删除,以下只删除选中的
dbgrid.datasource.dataset.delete;
dbgrid.datasource.dataset.Post;

#4


dbgrid.datasource.dataset.delete;
dbgrid.datasource.dataset.Post;

#5


to  ljmanage(过客) 我按按照您的办法,得到如提示:ADOtable1:DataSet not in edit or insert mode.

#6


ADOtable1.edit;
dbgrid.datasource.dataset.delete;
dbgrid.datasource.dataset.Post;

#7


var
  i:smallint;
  tmpBookMark :TbookMark;
begin
  dbGrid.DataSource.DataSet.DisableControls;
  for dbGrid.SelectedCount-1 downto 0 do
  begin
     query1.GotoBookmark(pointer(dbGrid.selectedRows[i]));
     query1.delete;
  end;
  query1.post;
  dbGrid.DataSource.DataSet.EnableControls;
end;

//query1为dbgrid关联的Query或Table,clientdataset

#8


估计你是使用了关联查询(如:select a.*,b.* from aa a,bb a where a.n=b.n),
否则上面的例子是可以的.
你还是要使用delete from where....来删除!

#9


如果你没有使用关联查询,你可以直接在DBGRIDE 里删除,方法是,
  if DBGrid1.DataSource.DataSet.Bof and DBGrid1.DataSource.DataSet.Eof then exit;
if (messagedlg('确实要删除这条记录吗?',mtinformation,[mbyes,mbno],0) = mryes) then begin
  DBGrid1.DataSource.DataSet.Delete ;
如果你使用了关联查询,用这种方法删除你就会把其他表里相关联的字段删除,这时候就得在表里删除,方法是,先用LOCATE 将记录定位到你要删除的记录,然后删除所指记录,例如:     name:=DBGrid1.DataSource.DataSet.FieldValues['name']; 
ADOTable1.Locate('name',name,[]);
ADOTable1.Delete;  
(这儿假设以 name 索引)

#10


我没有使用关联查询!只是简单的设置相关的数据集!数据源而已!

#11


通过TDbGrid的SelectedRows 来处理,不会还要注意这个会少删一条记录