如何检查TDBCheckBox是否已在运行时设置

时间:2011-01-24 16:48:59

标签: delphi ms-access boolean

我必须使用Access 2003 .mdb文件作为数据存储库在Delphi中创建一个程序。

Access数据库有一个表,其中包含一个名为“original”的布尔值(Access / Yes / No)字段。

我已将此字段映射到TDBCheckBox,其显示已检查为true且未选中为false,并显示半灰色检查是否尚未设置字段。

我想要的是将字段的字段设置为false(复选框未选中),并将字段值保存为false IF ,用户未明确设置字段。

我试过if(DVDQuery.FieldByName('Original')。AsBoolean<> True)和(DVDQuery.FieldByName('Original')。AsBoolean<> False)       然后是DVDQuery.FieldByName('Original')。AsBoolean:= False;

但这对新记录不起作用。我使用查询来访问数据集,因为有大量动态创建的where语句来过滤数据集。

非常感谢任何帮助指导。

罗布

3 个答案:

答案 0 :(得分:5)

您可以更改数据库中的结构吗?默认值的适当位置在列定义中。如果可以更新结构,请将字段更改为默认值“否”。然后,您将永远不需要针对此问题进行任何编码,即使直接通过Access输入,您的数据也将保证正确。

如果您需要检查代码中的值,请使用if DVDQuery.FieldByName('Original').IsNull确定该字段是否为空。

最后,如果您必须更改代码中的值而不是数据库默认值,请在相应的TDataset事件(AfterInsert,AfterScroll等)中进行更改。

答案 1 :(得分:2)

检查字段是否在DataSet的BeforePost事件中设置了值:

procedure TForm1.DVDQueryBeforePost(DataSet: TDataSet);
begin
  if DVDQuery.FieldByName('Original').IsNull then
    DVDQuery.FieldByName('Original').AsBoolean := False;

答案 2 :(得分:0)

如果仍然相关,请检查该字段的状态字段。它应该是cbChecked,cbUnchecked或cbGray,这正是你要找的。