用delphi做修改按钮的时候因为数据有空值 当数据为空时候不能修改报错显示错误类型的值

withADOQuery1do//将修改后的学生数据提交给数据表studentbeginSQL.Clear;sql.Text:='updatestudentset学号=:... with ADOQuery1 do
//将修改后的学生数据提交给数据表student
begin
SQL.Clear;
sql.Text:='update student set 学号=:a,姓名=:b,高数=:c,操作系统=:d,大学英语=:e,金融学=:f,土木工程=:g,专业=:h where 学号='+edit1.Text+'';
parameters.ParamByName('a').Value:=edit1.Text;
parameters.ParamByName('b').Value:=edit2.Text;
parameters.ParamByName('c').Value:=edit3.Text;
parameters.ParamByName('d').Value:=edit4.Text;
parameters.ParamByName('e').Value:=edit5.Text;
parameters.ParamByName('f').Value:=edit6.Text;
parameters.ParamByName('g').Value:=edit7.Text;
parameters.ParamByName('h').Value:=edit8.Text;
ExecSQL;
请问下 这个直接在下面的赋值语句中修改怎么修改 或者有什么别的方法

数字是float学号是int
展开
 我来答
kobaer
2013-06-18 · 超过15用户采纳过TA的回答
知道答主
回答量:46
采纳率:0%
帮助的人:39.3万
展开全部
当数据为空时不能修改?

那你应该在拼接sql语句前就判断不能为空的字段。如果为空就提示用户输入。

如果有值 但是类型有问题的话,可以加上try catch,获取错误信息
更多追问追答
追问
我就是要有空值的输入 因为不同专业有的课程不涉及到的课值就为空 如果全部课程都输入在修改就没有问题
追答
那你的这种表设计就不合理啊 。
你直接做一个科目表、一个成绩表
成绩表 就3个字段 学号,科目,成绩
如果这个学生有10个科目
那么成绩表中就存10条数据。
当然 你的设计也可以
但是如果你这样设计的话 如果这个学生只有 高数,英语 没有 金融, 那你金融直接存空值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sunshine_thq
2013-06-18 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:107
采纳率:0%
帮助的人:97.9万
展开全部
检查一下你的数据库是否将这些字段设置成了必填字段。如果设置成了必填字段则修改数据库,将这些字段的属性改为可以为空。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liu55721
2013-06-18 · TA获得超过922个赞
知道大有可为答主
回答量:1861
采纳率:100%
帮助的人:861万
展开全部
if edit1.Text<>'' then
parameters.ParamByName('a').Value:=edit1.Text;

另外还得修改,字段的属性,为可以为空,数字字段,不屑修改,它身已经被0填充.
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mycls
2013-06-18 · TA获得超过419个赞
知道小有建树答主
回答量:242
采纳率:0%
帮助的人:117万
展开全部
用try语句
追问
前面有try没复制下来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式