var i:smallint; tmpBookMark :TbookMark; begin dbGrid.DataSource.DataSet.DisableControls; for dbGrid.SelectedCount-1 downto 0 do begin query1.GotoBook(pointer(dbGrid.selectedRows[i])); query1.delete; end; query1.post; dbGrid.DataSource.DataSet.EnableControls; end;//query1为dbgrid关联的Query或Table,clientdataset
估计你是使用了关联查询(如:select a.*,b.* from aa a,bb a where a.n=b.n), 否则上面的例子是可以的. 你还是要使用delete from where....来删除!
如果你没有使用关联查询,你可以直接在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 索引)
while not dbgrid.datasource.dataset.eof do
dbgrid.datasource.dataset.delete;
dbgrid.datasource.dataset.Post;
dbgrid.datasource.dataset.delete;
dbgrid.datasource.dataset.Post;
dbgrid.datasource.dataset.Post;
dbgrid.datasource.dataset.delete;
dbgrid.datasource.dataset.Post;
i:smallint;
tmpBookMark :TbookMark;
begin
dbGrid.DataSource.DataSet.DisableControls;
for dbGrid.SelectedCount-1 downto 0 do
begin
query1.GotoBook(pointer(dbGrid.selectedRows[i]));
query1.delete;
end;
query1.post;
dbGrid.DataSource.DataSet.EnableControls;
end;//query1为dbgrid关联的Query或Table,clientdataset
否则上面的例子是可以的.
你还是要使用delete from where....来删除!
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 索引)