我在Delphi 7中有一个项目,它使用MySQL中的数据库来存储一些配置。
每当我更改配置时,都会启用“保存”按钮。此按钮中的OnClick过程使用TADOQuery.Edit
属性Select
调用SQL
,TADOQuery.Open
字段并设置各种FieldsByName
。最后,TADOQuery.Post
配置Requery
。
只有在实际更改了其中一个字段时才能正常工作。
例如,如果我检查一个checkBox(最初未选中)然后再次取消选中它,则会启用“保存”按钮,但数据库中的实际数据不会更改。在这种情况下,当我调用Post
时,会引发异常。
我看到this问题可以解决我的问题,检查是否有任何修改,但是一旦我设置第一个字段,TADOQuery的Modified
属性就变为true,使此解决方案无效。
另一种选择是在设置字段之前检查它是否实际发生变化,最后将标志设置为实际发布与否。但是,有数百个领域要做,这将是非常无聊的。
我认为第三种方法是在数据库中使用“Last Modified”日期戳创建一个新字段,该字段强制始终至少进行一次修改,但我不想搞乱现有数据库。
有没有其他方法可以知道TADOQuery.Post是否会触发异常,因为没有数据真正改变过?我怎么解决这个问题?或者有一个简单的解决方法吗?
ADOQuery变量是在Save按钮的例程中动态创建的(最后是免费的)。
答案 0 :(得分:0)
使用CheckBrowseMode()而不是Post()会很好。
ADOQuery1.CheckBrowseMode
<强> CheckBrowseMode():强> 当活动记录更改时自动发布或取消数据更改。