一条非常简单的sql语句问题(当插入的字段为空时怎么办?)(20分)

  • 主题发起人 主题发起人 wobuzhidao_yes
  • 开始时间 开始时间
W

wobuzhidao_yes

Unregistered / Unconfirmed
GUEST, unregistred user!
stredtExpenseTime: String;
stredtExpenseTime := edtExpense_Time.Text;

sqlInsert := 'insert into activities (' +
'Expense_Time,' + //字段为数字型,不是必须添内容。
'Employee_ID' +
') values (' +
stredtExpenseTime + ',' +
strcbEmployeeID +
')';

我的问题是:
当文本框edtExpense_Time.Text的文本内容为空,也就是我并没有写东西的时候,为什么
执行时回报错误?而当我写东西的时候,执行过后却没有错误?
遇到这种情况我应该怎么样处理?请大虾指点,谢谢。
 
if edtExpense_Time.Text<>'' then
try
...
finally
...
end;
 
如果你想插入一条记录是其中的一些字段为空,不要写那些字段就行了

这么写就行了
qlInsert := 'insert into activities ('+
'Employee_ID' +
') values (' +
strcbEmployeeID +
')';
 
if edtExpense_Time.Text<>'' then
ValueExpense_Time = 'NULL';
insert into .......
 
我的代码更正为:
if edtExpense_Time.Text = '' then
stredtExpenseTime = 'NULL';
insert into .......

这样的话,即使我没有在文本框内输入数据,也没有问题,但是,我有好多类似的
字段,难道我都需要这样判断吗?请指教,谢谢。
 
难道没有更好的解决办法了吗?

当我们从文本框中读取内容时都需要判断是否为空?如果不为空的话就必须将其
赋值为NULL??

请赐教,谢谢
 
如果是ACCESS数据库
把数据库中相应字段的"允许空字符串"设为真就没问题了
如果是其它的,也相似
 
我已经设置过了,不是必添字段,
但是当文本框为空的时候,我不做Null处理的话,就是不行。
 
设定一个onexit procedure,在离开时检测,如果内容为空,则将内容改写为'NULL',然后
将那些编辑框的事件全部统一到这个procedure上。

不过,这种方法感觉很不好,最好还是在组织语句时进行判断。
你不要真的以为这种方法很通用! 当你的数据库对数据完整性的要求发生变化时,这样会
引起很大的改动量。
 
將你字段改為字符型,就不會有此問題了
 
在窗体create时,首先将Expense_Time 赋值为NULL
其次,在onexit事件中进行处理,若为空,则将'Expense_Time 赋值为NULL
 
將你字段改為字符型,就不會有此問題了,好像不行,我试过了。
我想我还是用最早的方法吧。
谢谢各位的回答。
 
后退
顶部