0

次のSQLでTQueryコンポーネントにバインドされたinfoPowerグリッドがあります

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

qまた、InfoPOwer GridにバインドされているDataSourceだけでなく、dbnavigatorにもバインドしています。挿入ボタンと削除ボタンと更新ボタンが有効になりましたが、挿入ボタンでは新しい値を入力できず、更新ボタンでは更新された値を入力できません。しかし、削除は期待どおりに機能しています。私が見逃している可能性のある問題またはステップは何ですか?

TQuery を実行するためのコードは次のとおりです。

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

私を助けてください。

4

1 に答える 1

0

TQueryBDEデータセットです。RequestLiveプロパティが に設定されTrueTUpdateSQLいて、プロパティによってコンポーネントがバインドされていない限り、コンテンツを編集することはできませんUpdateObject。これら 2 つのプロパティが連携して、キャッシュされた更新と呼ばれる BDE のバッチ モードを有効にします。

ただし、BDE に投資しないこと、Delphi でのプログラミング方法を学ぶことさえしないことを強くお勧めします。の方法を勉強し始める方がはるかに良いですTClientDataset。データの選択から更新まで、アプリケーションのすべての部分をより詳細に制御できる、より機能的なデータセットです。

良い点TClientDatasetは、アプリケーションの SQL 依存関係をメイン ドメイン ロジックから分離できることですTClientDataset。そのロジックは、SQL に依存するのではなく、データに依存します。

考えてみてください。これで、MySQL で動作するアプリケーションができました。その後、突然、Oracle で動作するように移植する必要があります。SQL 依存関係をメイン コードから切り離すと、このリファクタリングはより高速かつ安全になります。

覚えておいてください: BDE は死んでいます。

于 2013-09-17T10:54:56.390 に答える