对数据库进行操作后,如何让DBGRID自动刷新?
我现在往数据库里面插入一条纪录,但是在DBGRID里面却看不到新增加的数据,请问如何刷新才能看到?
DBGRID1的DATASOURCE属性是DATASOURCE1
DATASOURCE1的DATASET属性是adoquery1
有一个增加记录的按钮,代码如下:
strsql:='insert into table(name,phone) values(''张三'',''12345678'')';
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(strsql);
adoquery1.ExecSQL;
datasource1.DataSet.Close;
datasource1.DataSet.Open;
结果提示:'当前提供程序不支持从单一执行返回多个记录集'.
应该如何解决呢?
[解决办法]
DBGRID1是用来显示查询的数据,你为什么要连接adoquery1插入数据集呢?这明显是个错误,DBGRID1要连接一个adoquery2的查询数据集.在adoquery2的SQL里你再写查询语句"select * from table1"
[解决办法]
刷新前保存关键字段值 刷新后ado.Locate('关键字段名',保存起来的值,[]);
[解决办法]
vName := adoquery1.fieldbyName('name').asString;
datasource1.DataSet.Close;
//插入数据
strsql:= 'insert into table(name,phone) values( ' '张三 ' ', ' '12345678 ' ') ';
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(strsql);
adoquery1.ExecSQL;
//刷新数据
strsql:= 'select name,phone from table';
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(strsql);
adoquery1.Open;
//定位原位置
adoquery1.Locate( 'name',vName,[]);
datasource1.DataSet.Open;