我打算将以下信息插入表:ID_Number(身份证号码)Account_Number(帐号)PutInMoney(存款额)PutIn_Time(存款年月日)PutIn_timeSFM(存款时分秒)
Table_PutIn.Append();
Table_PutIn.FieldValues['ID_Number']:=Edit_IDNumber.Text;
Table_PutIn.FieldValues['Account_Number']:=ComboBox_AccountNumber.Text;
Table_PutIn.FieldValues['PutInMoney']:=Edit_PutInMoney.Text;
Table_PutIn.FieldValues['PutIn_Time']:=trunc(DateTimePicker1.DateTime);
Table_PutIn.FieldByName('PutIn_timeSFM').AsString:=formatdatetim('hh:nn:ss',DateTimePicker2.datetime);
Table_PutIn.Refresh();表中,列名             数据类型    长度
     ID_Number       char       18
    Account_Number   char       20
    PutInMoney       char       25
    PutIn_Time       datetime   8
    PutIn_timeSFM    datetime   8
当我输入18位身份证,15位帐号,100元钱,PutIn_Time--2008-5-7  PutIn_timeSFM--20:19:29
运行出现错误,将截断字符串或2进制数据

解决方案 »

  1.   

    长度不够
    用Trim将空格去掉试试
    如:
    Trim(Edit_IDNumber.Text);
      

  2.   

    不好意思,后来发现问题不是出在这里!是在这段代码:
    Query_PutIn.Close;
    Query_PutIn.SQL.Clear;
    Query_PutIn.SQL.Add('UPDATE Accounts');
    Query_PutIn.SQL.Add('SET Deposits='''+FloatToStr(D)+''',Average_Deposits='''+FloatToStr(A+'''');
    Query_PutIn.ExecSQL();在表里面,Deposits和Average_Deposits都是15位的char类型!我先把A和D从表里取出来,如下:
    A:=StrToFloatDef(Query_PutIn.FieldValues['Average_Deposits'],0);
    D:=StrToFloatDef(Query_PutIn.FieldValues['Deposits'],0);然后经过一些运算后,得到新的A和D!都是float类型的!因此在修改表的时候用了以上的FloatToStr函数!是不是不能这样转化啊?
      

  3.   

    补充一下,定义A和D的时候,都是double类型!
      

  4.   

    FloatToStr(D)
    这个你用formatfloat('####0.00',d)来进行转换试试
      

  5.   

    原来float类型,在运算的时候A和D小数点后面有很多位,超过了15位!后来我用RoundTo(A,-2)和RoundTo(D,-2)保留两位小数!不过还是要谢谢大家!分数大家分了吧!