4

Delphi6BDE​​アプリケーションをDelphi2010に移行することを計画しています...

  • まず、BDEから離れる必要がありますか?(私はそうしますが、可能であれば段階的にこれを行うことを好みます)

  • 次に、dbExpressが最良の選択ですか?(私はMS SQLを使用しています)

  • 最後に、dbExpressにTUpdateSQLに相当するものはありますか?(または他の何か)

グリッド内から読み取り専用クエリを更新するコードがたくさんあります(TUpdateSQLとApplyUpdateを使用)。

助けてください~~~

どうもありがとう。

4

4 に答える 4

3

1)間違いなく BDE からDbExpressに移行する必要があります。BDE は廃止され、非推奨のテクノロジです。

これらの記事を読むことができます

2) DbExpress は SQL Server と通信するための BDE よりも優れた代替手段ですが、SQL Server のネイティブであるため、私は ADO を好みます。

3) dbExpress には TUpdateSQL に似たコンポーネントはありませんが、Luxene にはdbExpress eXtensionコンポーネントの一部である TDBXUpdateSQL があります。

ETHEAからInstantBDExpress (古い BDE アプリケーションを dbExpress テクノロジにシームレスに移行できるようにするコンポーネント ライブラリ)も確認できます

さよなら。

于 2009-10-28T03:48:01.783 に答える
1

TDataSetProvider には、BeforeUpdateRecord というイベントがあり、これは基本的に TUpdateSQL をより手動で実行する方法です。

自分でSQLを作成してから更新する必要があります(TADOQueryなどを介して..)

古い値と新しい値の基本は同じですが、TUpdateSQL のどこにありますか。

これは C++ です。dehpli はわかりませんが、基本的には同じだと思います。

DeltaDS->FieldByName("id")->NewValue;

DeltaDS->FieldByName("id")->OldValue;

また、設定する必要があります

Applied = true;

手動で更新した後に更新を試行しないように

ここに役立ついくつかのリンクがあります BeforeUpdateRecordについて

さらに情報が必要な場合は、コメントを追加してください。折り返しご連絡いたします

于 2010-01-06T22:57:13.060 に答える
0

dbExpressのSQLQueryコンポーネントを使用すると、次のような「クエリ」を記述できます。

update <table>
set value = :v1
where something = :v2

次に、「execsql」メソッドを呼び出してテーブルを物理的に更新します。

于 2009-10-28T09:44:52.933 に答える
0

ClientDatasets とプロバイダを使用すると、TDatasetProvider を汎用の OnUpdateRecord(?、今は正確な名前を覚えていません) ハンドラと共に使用して、TUpdateSQL で使用した SQL を使用させることができます。

サードパーティのコンポーネントを使用できない場合のアイデアです....

于 2009-10-29T15:04:52.567 に答える