0

我有一个 infoPower Grid,它使用以下 sql 绑定到 TQuery 组件

SELECT membership_number, message_id, msgText,target, date_time_creation, 
date_time_display
FROM MessageMembership
WHERE membership_number = :membershipnumber
ORDER BY date_time_display desc

qalso 我已将它绑定到 dbnavigator 以及与 InfoPOwer Grid 绑定的 DataSource。现在插入、删除和更新按钮已启用,但插入按钮不让我输入新值,更新按钮也不让我输入更新的值。但删除按预期工作。我错过了什么可能的问题或步骤?

执行 TQuery 的代码是:

 MessageMembershipSelectQuery.ParamByName('membershipnumber').AsString :=    
 custQuery.FieldByName('cust_code').AsString;
  MessageMembershipSelectQuery.Open;

请帮我。

4

1 回答 1

0

TQuery是一个BDE数据集。它不会让你编辑它的内容,除非RequestLive属性设置为True并且你有一个TUpdateSQL组件绑定到它,由UpdateObject属性。这两个属性协同工作以启用 BDE 的批处理模式,称为缓存更新

但是,我强烈建议您不要投资 BDE,甚至不要学习如何使用 Delphi 编程。更好的是开始学习的方式TClientDataset。这是一个功能更强大的数据集,可以让您更好地控制应用程序的所有部分,从选择到更新数据。

这样TClientDataset做的好处是,您将应用程序的 SQL 依赖项与主域逻辑隔离开来,主域逻辑将围绕TClientDataset. 该逻辑将依赖于数据,而不是依赖于 SQL。

想一想:现在您有一个与 MySQL 一起工作的应用程序。然后,突然之间,您必须将其移植到 Oracle 中。如果您将 SQL 依赖项与主代码隔离开来,那么这种重构将会更快、更安全。

请记住:BDE 已死

于 2013-09-17T10:54:56.390 回答