我现在往数据库里面插入一条纪录,但是在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;结果提示:'当前提供程序不支持从单一执行返回多个记录集'.应该如何解决呢?

解决方案 »

  1.   

    DBGRID1是用来显示查询的数据,你为什么要连接adoquery1插入数据集呢?这明显是个错误,DBGRID1要连接一个adoquery2的查询数据集.在adoquery2的SQL里你再写查询语句"select * from table1"
      

  2.   

    datasource1.DataSet.Close; 
    datasource1.DataSet.Open; 
    也要删除掉
      

  3.   

    78hgdong  
    你的方法是重新查询一遍,而不是刷新,我希望刷新后的结果是,光标要定位在刚才新增加的那一条纪录上,而不是光标定位在第一条记录上.
      

  4.   

    刷新前保存关键字段值  刷新后ado.Locate('关键字段名',保存起来的值,[]);
      

  5.   

    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;