下载了一个源码,DataSourcemz_zy_hj是DataSource控件,它与DBGrid相连,DataSet:ADOQuerymz_xy_hj,ADOQuerymz_xy_hj是ADOQuery控件,代码如下:
      ADOQuerymz_xy_hj.close;
      ADOQuerymz_xy_hj.sql.Clear;
      ADOQuerymz_xy_hj.sql.add('select * from mz_xy_hj where depa='+''''+depa_flag+'''');
      ADOQuerymz_xy_hj.sql.add(' and fycode=:a1');
      ADOQuerymz_xy_hj.Parameters.ParamValues['a1']:=editfycode.Text;
      ADOQuerymz_xy_hj.open;
     
  if application.MessageBox('真的要将费用帐进行确认存储吗?','系统操作提示:', mb_okcancel+mb_iconquestion)=1 then
    begin
      ADOQuerymz_xy_hj.open;
      ADOQuerymz_xy_hj.append;
      ADOQuerymz_xy_hj.edit;
ADOQuerymz_xy_hj.fieldbyname('fydepa').asstring:=self.ComboBox1.Text;
......
end;
if self.DataSourcemz_zy_hj.DataSet=nil then
      self.DataSourcemz_zy_hj.DataSet:=self.ADOQuerymz_xy_hj;
第一次添加数据正常,但第二次添加时出错:
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
后来跟踪后发现问题出在
if self.DataSourcemz_zy_hj.DataSet=nil then
      self.DataSourcemz_zy_hj.DataSet:=self.ADOQuerymz_xy_hj
去掉这一句后,添加的数据显示不了,怎么解决?谢谢!!

解决方案 »

  1.   

    if self.DataSourcemz_zy_hj.DataSet=nil 如果为nil了
    数据集成了ADOQuerymz_xy_hj 关键是这个数据集(ADOQuerymz_xy_hj
    )查询出数据了没?
      

  2.   

    问题有两处,
    1 ADOQuerymz_xy_hj.open;重复打开了,只要保留if前的一句就ok.ADOQuerymz_xy_hj.open;
         
      if application.MessageBox('真的要将费用帐进行确认存储吗?','系统操作提示:', mb_okcancel+mb_iconquestion)=1 then
     begin
          ADOQuerymz_xy_hj.open;
    2 ADOQuerymz_xy_hj.append;之后,应该加个post。edit可以不用。
    如ADOQuerymz_xy_hj.append;ADOQuerymz_xy_hj.fieldbyname('fydepa').asstring:=self.ComboBox1.Text;
    ......ADOQuerymz_xy_hj.post;