我必须使用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语句来过滤数据集。
非常感谢任何帮助指导。
罗布
答案 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,这正是你要找的。 p>