1,在DBgrid中,怎么样判断记录移动到上一行或者下一行?怎么样控制某一行在编辑的时候不能移动到其他行?
2.在DBgrid中我用
DBGrid.SelectedRows.Delete;
AdoCtmQry.UpdateBatch();
删除选择的多条记录!当我选择记录的时候,我用上面的语句怎么删除不了当前的记录呢?
我用:AdoCtmQry.delete;
AdoCtmQry.post;也不行?是那里没有控制好呢?谢谢指点.....
2.在DBgrid中我用
DBGrid.SelectedRows.Delete;
AdoCtmQry.UpdateBatch();
删除选择的多条记录!当我选择记录的时候,我用上面的语句怎么删除不了当前的记录呢?
我用:AdoCtmQry.delete;
AdoCtmQry.post;也不行?是那里没有控制好呢?谢谢指点.....
2.你试试行不:
...
for i := 0 to DBGrid.SelectedRows.Count - 1 do
begin
AdoCtmQry.GotoBook(Pointer(DBGrid.SelectedRows[i]));
AdoCtmQry.Delete;
end;
AdoCtmQry.UpdateBatch();
begin
inherited;
CBook:= CTable.GetBook;
end;
在 afterScroll事件中,记录当前记录
begin
inherited;
CBook与当前记录比较
end;
2,AdoCtmQry.delete;应该就删除了。
如果这样的话,我不是不能在DBGrid上修改数据?有没有办法提取DBgrid的行的索引值呢?
AdoCtmQry.delete;应该就删除了
还是删除不掉;哪怕post 后也删除不掉;只有我选择记录后才行!
procedure TForm1.Button4Click(Sender: TObject);
var i:Integer;
begin for i := 0 to DBGrid1.SelectedRows.Count - 1 do
begin
ADOQuery1.GotoBook(pointer(DBGrid1.SelectedRows[i]));
ADOQuery1.Delete;
end;
dbgrid1.SelectedRows.Clear;
//
end;
procedure TForm1.ADOQuery1BeforePost(DataSet: TDataSet);
begin
if true then
abort;//不想post 时候使用,但是DBgrid1的多行选择时候生效的情况下不能阻止多行选择。
end;
这里设ADOQuery1为DBGrid1.DataSource.DataSet
procedure TForm1.DBGrid1StoreKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if ADOQuery1.State = dsEdit then
if Key in [38, 40] then Key := 0;
end;
我用以下的语句实现了在DBgrid中 DBGrid.SelectedRows.Delete;AdoCtmQry.UpdateBatch();删除选择的多条记录!(必须在选择的情况下) 现在我只想删除DBGrid中当前的一条记录.我用AdoCtmQry.delete,为什么不行? 我设置了Dbgrid的Selectrows属性;我删除的记录是在没有选择的情况下,想删除当前指针默认的记录;
简单点:就是怎么样判断DBgrid中没有记录被选中!
我的修改不确定.我可以对DBgrid中的多条记录修改.因为我在keydown 和colexit中写了修改代码;当我离开的clounm时候自动修改值;这个时候当我换为其他行的时候,数据修改出现错误,(该修改的本行数据没修改,而是把当前焦点所在行的数据)
DataSetName.Tag := 1;在保存按钮事件中写:
Try
DataSetName.Tag := 0; //不可少,否则永远都提交不了数据
DataSetName.Post;
Except
DataSetName.Tag := 1
End;在DataSet.OnBeforePost事件中写:
If DataSetName.tag=1 then Abort;
以上代码借用了DataSet.Tag作业互斥条件,因为移动记录的时候,如果数据集在编辑状态下会自动提交,而自动提交心然会调用BeforePost事件。
你的方法解决了我的删除问题;谢谢你; 第一个问题我只要知道怎么捕捉到Dbgrid在不同的行就可以了;
比如:我现在在修改第一行的数据,
接着我又跳到第二行,我只想保存第一行,第二行不保存,怎么办?
Dbgrid中的每一行有没有唯一标识?