simpledataset.refresh不是重新刷新数据库吗?即重新从数据库中读出最新数据,那为什么我下面这语句会出错?
   simpledataset1.DataSet.CommandText:=sql;//一条插入语句
   simpledataset1.Execute;
   simpledataset1.Refresh;
   application.messagebox('调用成功','success',MB_OK);我本想通过插入数据再把最新的显示在DBGRID上面,可执行到simpledataset1.Refresh;时就出错了,提示数据已有重复字段不可再写入,好象是又执行了一次simpledataset1.Execute,所以主键重名出错了,但我不懂为什么调用simpledataset1.Refresh时会变成重复执行上面的SQL语句,而不是把最新数据读出到dbgrid中(我的dbgrid也是能过simpledataset1显示出来的)另:上面那条application.messagebox('调用成功','success',MB_OK);要在什么时候才可以不要application.而直接写messagebox('调用成功','success',MB_OK);就可以了,我在程序中,没有application.时会出错,我记得有时好象又可以直接写messagebox('调用成功','success',MB_OK);郁闷呀;

解决方案 »

  1.   

    1、InternalRefresh执行的SQL语句没有返回数据集。执行Refresh时进行ReQuery
    3、MessageBox(0,'调用成功','success',MB_OK); //第一个参数为窗口句柄,函数在窗体内
                                                   可用Hanlde代替
      

  2.   

    一个打开的 simpledataset1 你更换成执行更新语句的SQL是不能用Refresh的
    请用另外一个数据集进行更新或把 simpledataset1 的SQL语句重新写,并执行Open