如图,字段不能为空保存数据时如何判断,要不要判断字段类型

zuilu5339 2018-06-13 01:39:13


原来是这样设置的,做死的
if (FieldByName('F_Unit').AsString='') then
begin
Bookmark:=varBookmark;
EnableControls;
MsgBoxinfo('单位不能为空。 ');
FocusControl(DBGridEh1) ;
exit;
end;

现在想通过设置字段的不能为空这样的话就灵活了,就是判断的时候要不要判断字段类型,
请各位指导一下
...全文
1210 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
技术上空值是字段没有赋值之前的状态,赋值之后,即便一个string字段值为'',也不再是空值。但是在实际应用中,业务逻辑上一般把字符型字段为''或者全空格也视之为空值,所以需要进一步判断。
lyhoo163 2018-06-14
  • 打赏
  • 举报
回复
integer是空值,默认为0
zuilu5339 2018-06-14
  • 打赏
  • 举报
回复
引用 11 楼 DelphiGuy 的回复:
这是业务逻辑问题,你需要建立一个映射表(不一定要使用数据库表,可以文本文件或者INI之类的),内容为 (数据库名)字段名 是否允许空,然后在检查函数中根据参数Field.FieldName查一下表,如果可以空,直接返回true,否则再判断
是的,就是要简单点,不然感觉会影响速度
  • 打赏
  • 举报
回复
这是业务逻辑问题,你需要建立一个映射表(不一定要使用数据库表,可以文本文件或者INI之类的),内容为 (数据库名)字段名 是否允许空,然后在检查函数中根据参数Field.FieldName查一下表,如果可以空,直接返回true,否则再判断
zuilu5339 2018-06-14
  • 打赏
  • 举报
回复
现在主要问题是字段要和数据库匹配上,这个麻烦,现在用了配置,程序如何知道当前字段是否允许为空
zuilu5339 2018-06-13
  • 打赏
  • 举报
回复
string是空,integer是空值
zuilu5339 2018-06-13
  • 打赏
  • 举报
回复
引用 5 楼 lyhoo163 的回复:
明白你的意图,将不能为空存入表中。 这样要编写一个函数,调用指定字段,是否为不能为空。例如: if GetFieidNotEmpt(Field) and (FieldByName(Field)=‘’) then ...... end;
是的,如果是空值,并且这个字段设置不能为空就要报错,提醒用户必须填好
lyhoo163 2018-06-13
  • 打赏
  • 举报
回复
明白你的意图,将不能为空存入表中。 这样要编写一个函数,调用指定字段,是否为不能为空。例如: if GetFieidNotEmpt(Field) and (FieldByName(Field)=‘’) then ...... end;
zuilu5339 2018-06-13
  • 打赏
  • 举报
回复
因为不同的窗体不一样的,有的界面可能规格可以空,有的不可以,所以要根据配置来
zuilu5339 2018-06-13
  • 打赏
  • 举报
回复
引用 2 楼 DelphiGuy 的回复:
function CheckField(const F: TField): boolean; begin Result := true; if F.IsNull then Result := false; if F.DataType = ftString then if Trim(F.AsString) = '' then Result := false; end; 使用: if not CheckField(FieldByName('F_Unit')) then ...
思路是对的,只是如何判断当前的数据集字段和设置的字段要匹配上,就是当前的字段能不能找要通过数据库查询才知道
  • 打赏
  • 举报
回复
function CheckField(const F: TField): boolean; begin Result := true; if F.IsNull then Result := false; if F.DataType = ftString then if Trim(F.AsString) = '' then Result := false; end; 使用: if not CheckField(FieldByName('F_Unit')) then ...
秋天之落叶 2018-06-13
  • 打赏
  • 举报
回复
没有理解你的意思,如果你在数据表设计时设计为字段不能为空,那么应用保存数据时系统会自动判断并提示错误,不需要判断数据类型。

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧