关于数据填充(10)

  • 主题发起人 主题发起人 terry_zhou82
  • 开始时间 开始时间
T

terry_zhou82

Unregistered / Unconfirmed
GUEST, unregistred user!
我有下列代码:要填入到数据库中table1.fieldbyname('姓名').asstring:=edit1.text;table1.fieldbyname('年龄').asinteger:=edit2.text;table1.fieldbyname('地址').asstring:=edit3.text;但是每次只要一个为空,他就出错,不能保存,有没有办法让他可以某一个为空啊,而继续保存呢?我试过了,每个数据库的字段的REQUIRED都设为FALSE;还是不行,大家帮我看看吧
 
应该是:table1.fieldbyname('年龄').asinteger:=edit2.text; 这句的问题改为table1.fieldbyname('年龄').asinteger:=strtoint(edit2.text);或者if trim(Edit1.text) <> '' thenbegin table1.fieldbyname('姓名').asstring:=edit1.text;end;。。。。
 
to 楼上的 我刚才是笔误,我的代码是table1.fieldbyname('年龄').asinteger:=strtoint(edit2.text);没有错,就是说如果我edit2.text里面没有输值的情况下,按下保存,会出错,搞不懂什么意思。
 
那是空字符串不能转化为integer导致的异常,if trim(edit2.text)<>'' then table1.fieldbyname('年龄').asinteger:=strtoint(edit2.text);
 
你的EDIT2没有输入任何东西,调用StrToInt(Edit2.text)当然会会出错,把字符串转换为整数的时候,你的字符串是一个空值,转换就会出错,你可以trytable1.fieldbyname('年龄').asinteger:=strtoint(edit2.text);exceptend;
 
table1.fieldbyname('姓名').asstring:=edit1.text;table1.fieldbyname('年龄').asinteger:=strtointdef(edit2.text,0); //改成这样。table1.fieldbyname('地址').asstring:=edit3.text;
 
字段类型为字符串的为空不会报错,如果字段类型为整形,日期类型等的话,如果不加判断,直接使用strtoint,strtodate的话就话报错,空不能够装换成整形或日期类型。
 
那么如果是STRING的类型呢?有没有可以允许用空字符?
 
姓名和地址这两个字段,无论是否输入都不会出现异常,也就是说错误出在年龄这个字段上了。你的文本框edit2没有输入任何东西,调用StrToInt(edit2.text)当然会出错,把字符串转换为整数的时候,你的字符串是一个空值,转换就会出错,所以你的第二行代码应该这样写: 声明一个整型变量i: Integer; if TryStrToInt(Edit2.Text, i) then begin Table1.FieldByName('年龄').AsInteger:= i; end;
 
多人接受答案了。
 
后退
顶部