edit为非数据感应控件,不知道你会如何应用它的值,具体的应用种类会很多,
同样就会有不同的解决办法。
1 插入数据库
在edit的退出事件或者你的向数据库增加记录的事件中增添检测操作:
假设数据库字段不能为空:
showmessage('XXX不能为空');
edit1.setfocus;
数据库字段可以为空:
strFName, strFVal, strAll : string;
strFname := '(';
strFVal := '(';
if edit1.Text <> '' then
begin
strFname := strFname + tabfname;
strFval := strFVal + #39 + Edit1.Text + #39;
end;
...
strFname := strFname + ')';
strFVal := strFVal + ')';
strAll := 'insert into tabname' + strFname + ' values' + strFVal;
showmessage(strall);
第一种方式是对插入数据库时的字段名根据值的不同进行控制
2 不控制插入时的字段名,则在edit1.text = ''时,将edit1所对应的字段的值写为null,
这要根据你所使用的数据库的类型而定,不同的数据库类型,可能在空值方面的取值不同。
但几乎可以肯定的是数据库和delphi的空值表示是不同的。
你的问题出现的最根本原因就是这个。
3 查询时的条件字段
CommandText := 'Select * from Customer ';
if Edit1.text <> '' then
CommandText := CommandText + ' where fname = ' + #39 + Edit1.Text + #39;