把表里的一个字段原来的类型是VarChar改成现在的类型是Float后(改之前表里的数据已经全部删关了),数据就写不进去了,提示不匹配的类型,后来我把表重新建立过(先删除)也是不行,我在DELPHI里把ADOConnection、ADODataSet等也重新删除再建立过,还是不行!我的代码如下:
procedure Tdengjichengbenfm.BitBtn1Click(Sender: TObject);
begin
  if ComboBox3.Text = '' then
  begin
    ShowMessage('你没有选择客户名称!请选择客户名称。')
  end
  else if ComboBox2.Text = '' then
  begin
    ShowMessage('你没有选择合同编号!请选择合同编号。')
  end
  else if ComboBox1.Text = '' then
  begin
    ShowMessage('你没有选择费用性质!请选择费用性质。')
  end
  else if Edit1.Text = '' then
  begin
    ShowMessage('金额不能为空!')
  end
  else
  begin
    ADODst.Open;
    ADODst.Append;
    ADODst.FieldByName('kh_khmc').AsString := ComboBox3.Text;
    ADODst.FieldByName('ht_id').AsString := ComboBox2.Text;
    ADODst.FieldByName('htcbmx_zcrq').AsString := DateTimeToStr(DateTimePicker1.DateTime);
    ADODst.FieldByName('htcbmx_cbmc').AsString := ComboBox1.Text;
    ADODst.FieldByName('htcbmx_je').Value:=StrToFloat(Edit1.Text);
  //这样也不行: ADODst.FieldByName('htcbmx_je').AsString := Edit1.Text;
    ADODst.FieldByName('htcbmx_jsr').AsString := Edit3.Text;
    ADODst.FieldByName('htcbmx_bz').AsString := Edit2.Text;
    ADODst.Post;
    ShowMessage('记录添加成功!');
    close;
  end;
end;

解决方案 »

  1.   

    ADODst.FieldByName('htcbmx_je').AsFloat:=StrToFloat(Edit1.Text);
    另外数据类型改成numeric,会好些,比如在小数点的问题上
      

  2.   

    可以这样试试:
    ADODst.FieldByName('htcbmx_je').Value := Edit1.Text;
      

  3.   

    把所有的临时文件和Obj文件删掉重新编译一下,如果还不行,就一句一句屏蔽缩小范围,然后锁定是在那一句报的错,就可以专心的思考是什么原因了?说不定不是你所想的问题呢?事情往往要先找着问题的所在才能分析,如果你那么找比较盲目的,试一试,感觉一下?!
      

  4.   

    是提示“'htcbmx_je'”字段类型不匹配呀?
    代码有改过的呀?到现在为止还是不行,试过好多方法了
      

  5.   

    把ADODst里的固定字段都删除掉,打开一个ADODst(也就是先active设成true一下),然后再把固定字段添上,应该就可以。
      

  6.   

    使用numeric,decimal类型,定义“标识种子”。
      

  7.   

    ADODst中是不是有原先表的字段定义呀?重新建立一下
      

  8.   

    对,是固定字段的问题,是不是你开始建立程序的时候双击Dbgrid或者Adodst了把字段添加进去了,如果是就删掉原来的字段就可以了,我想应该是这个问题把
      

  9.   

    将ClientDataSet中的字段和dbgrid列中的字段删除后,重新添加应该就能就决
      

  10.   

    StrToFloat(Edit1.Text);
    要保证Edit1.text能转化为FLOAT.另:重新编译。如果有DBGRID-》FIELD最好也要重新载入