11 个解决方案
#1
dbgrid.datasource.dataset.firt;
while not dbgrid.datasource.dataset.eof do
dbgrid.datasource.dataset.delete;
dbgrid.datasource.dataset.Post;
while not dbgrid.datasource.dataset.eof do
dbgrid.datasource.dataset.delete;
dbgrid.datasource.dataset.Post;
#2
dataset.delete;
dataset.post;
dataset.post;
#3
以下全删除,以下只删除选中的
dbgrid.datasource.dataset.delete;
dbgrid.datasource.dataset.Post;
dbgrid.datasource.dataset.delete;
dbgrid.datasource.dataset.Post;
#4
dbgrid.datasource.dataset.delete;
dbgrid.datasource.dataset.Post;
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;
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
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....来删除!
否则上面的例子是可以的.
你还是要使用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 索引)
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;
while not dbgrid.datasource.dataset.eof do
dbgrid.datasource.dataset.delete;
dbgrid.datasource.dataset.Post;
#2
dataset.delete;
dataset.post;
dataset.post;
#3
以下全删除,以下只删除选中的
dbgrid.datasource.dataset.delete;
dbgrid.datasource.dataset.Post;
dbgrid.datasource.dataset.delete;
dbgrid.datasource.dataset.Post;
#4
dbgrid.datasource.dataset.delete;
dbgrid.datasource.dataset.Post;
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;
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
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....来删除!
否则上面的例子是可以的.
你还是要使用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 索引)
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 来处理,不会还要注意这个会少删一条记录