我用以下方法选中DATAGRID中的一行,然后对选中行的数据进行修改,语句如下,
if dbgrid1.SelectedRows.CurrentRowSelected then
begin
dbgrid1.datasource:=datamodule9.datasource1;
datamodule9.adoquery1.close;
datamodule9.adoquery1.SQL.Add('update gz_data set item02=convert(money,'''+dbedit1.text+''',2),item07=convert(money,'''+dbedit3.text+''',2),item08=convert(money,'''+dbedit2.text+''',2),item13=convert(money,'''+dbedit4.text+''',2) where bmdm='''+form2.bm1+'''and mon='''+month+'''');
datamodule9.adoquery1.ExecSQL;
可以当我点保存后再打开窗口,数据没有被修改!可当我选中一行修改完,然后选另一行,再保存时,数据又被修改了!请问是不是在选择一行的语句有问题,或者是少了什么语句?
if dbgrid1.SelectedRows.CurrentRowSelected then
begin
dbgrid1.datasource:=datamodule9.datasource1;
datamodule9.adoquery1.close;
datamodule9.adoquery1.SQL.Add('update gz_data set item02=convert(money,'''+dbedit1.text+''',2),item07=convert(money,'''+dbedit3.text+''',2),item08=convert(money,'''+dbedit2.text+''',2),item13=convert(money,'''+dbedit4.text+''',2) where bmdm='''+form2.bm1+'''and mon='''+month+'''');
datamodule9.adoquery1.ExecSQL;
可以当我点保存后再打开窗口,数据没有被修改!可当我选中一行修改完,然后选另一行,再保存时,数据又被修改了!请问是不是在选择一行的语句有问题,或者是少了什么语句?
datamodule9.adoquery1.Close;
datamodule9.adoquery1.SQL.Clear;
datamodule9.adoquery1.SQL.Add('select * from gz_data');
datamodule9.adoquery1.Open;
记录集被更新之后,表格也就相应被更新了。
如果你又用了一个ADOTABLE1做datagrid的datasource的话,这样刷新adoauery1是没有用的,得刷新adotable1了,所以我们编程最好不要用这些绑定控件的。还有的时候会遇到锁定机制的原因的。这我也是不太明白,多看看ado吧,