問題タブ [dbexpress]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
6470 参照

delphi - TDatasetブックマークはどのくらい有効なままですか?

私が取り組んでいるプロジェクトには、以下のようなコードがあります。

個人的には、ブックマークをあまり使用しません。ただし、カーソル位置のみを移動したデータセットの位置を変更する場合を除きます(リストの作成、文字列リストの入力など)。Refresh更新(特にフィルターによってレコードが非表示になる可能性がある場合)、再フェッチ(/ CloseOpen、またはデータセット内のデータを変更する操作の場合、ブックマークは使用しません。私Locateは主キーを使用するか(TClientDatasetもちろん、を使用して)、パラメーターを変更して再クエリすることを好みます。

ブックマークはいつまで有効ですか?までRefreshCloseデータを再フェッチするために/が実行されるまでOpen?セーフゾーンはどこで終わりますか?

私が(DbExpress)で使用TClientDatasetしている答えを考えてみてください。TSQLQuery

0 投票する
4 に答える
6165 参照

oracle - リモートクライアントから Oracle 10g に接続するには?

標準の Delphi dbexpress dbexpora.dll + oci.dll (10g) を使用します (Oracle InstantClient がインストールされています)。

Oracle Database ボックスに直接接続すると、dbexpress アプリを問題なく実行できます。その場合に使用されるローカルの dbxconnections.ini エイリアスは、DB サービス名 ORCL を「データベース」パラメータとして指定するだけです。

クライアント マシンからこの同じデータベースに接続しようとすると、一連のエラーが発生します。

当然、データベース パラメータであらゆる種類の文字列を試しています。MOHAWK2:1521:ORCL のような文字列を使用すると、少なくともリスナー エラーが発生する可能性があります。

接続の失敗: ORA-12514 TNS: リスナーは現在、接続記述子で要求されたサービスを認識していません。

命名の可用性をテストするツールがいくつかあると思います...

0 投票する
1 に答える
345 参照

oracle - DBExpress を使用して Oracle 10g で 255 レコードの挿入制限を受けているのはなぜですか?

通常の SQL 処理中に壁にぶち当たります

DBEXPRESS を使用してリモート クライアントから Oracle 10g に接続する場合 - 標準の dbxpora.dll + oci.dll を使用

トランザクション中、ちょうど 255 回のレコード挿入の後、接続が 30 秒間ハングし、次のエラーが返されます。

ORA-03114 (接続が失われたかのように...)

これは、トランザクション中に任意のテーブルに 255 レコードを挿入すると発生します。(db ボックスでローカルに実行すると、すべて正常に動作します)

足りないものはありますか?

0 投票する
2 に答える
1687 参照

database - mysql用の無料のオープンソースdbexpressドライバーはどこにありますか

mysql用のdbxドライバーが必要です。それは無料でなければなりません。オープンソースは大歓迎です。(delphi7+およびmysql5+)

0 投票する
2 に答える
2506 参照

delphi - Delphi用の無料のdbexpressドライバのリスト

無料のオープンソースdbexpressドライバーの包括的なリストを知っている/持っている人はいますか?

0 投票する
3 に答える
13274 参照

delphi - ApplyUpdatesがデータを挿入または更新するかどうかをどのように検出できますか?

ClientDataSetのAfterPostイベントハンドラーで、現在のレコードのApplyUpdates関数が更新または挿入を行うかどうかの情報が必要です。

AfterPostイベントは、新しいレコードと更新されたレコードに対して実行されます。「更新」または「挿入」操作が進行中であるかどうかを示すために、新しいフラグ変数を宣言したくありません。

コード例:

ApplyUpdateが完了した後、アプリケーションはAfterPostメソッドにログを書き込みます。したがって、このメソッドはアクションに最も近い場所です。このイベントハンドラーに完全に挿入できるソリューションをお勧めします。

ClientDataSetインスタンスQryTestの情報を使用して、IsInserting関数を実装するにはどうすればよいですか?

編集:ここで説明されているClientDataSet.UpdateStatusを試してみます。

0 投票する
2 に答える
4611 参照

delphi - Delphi2007でのdbExpressエラー

私はしばらくの間Delphi2007を使用しています。Delphi2009トライアルを試しました。次に、トライアルをアンインストールしました。これをdbExpressDelphi2007アプリケーションで取得します。

PCのどこにもdbxora.dllがありません。代わりに、dbxora30.dllがあります。別の開発マシン(Delphi 2009がインストールされたことがない)を見ると、dbxora30.dllも表示されます。FWIW、そのファイルはここにあります:

そして、私のパスにはこの場所が含まれています

したがって、Delphi2009は「dbxora30.dll」を置き換える新しい「dbxora.dll」を導入したようです...そしてDelphi2009をアンインストールすると、システムが元の「dbxora30.dll」に戻ることができませんでした。しかし、dbxora30を再び使用するにはどうすればよいですか?

助言がありますか?

0 投票する
3 に答える
1018 参照

delphi - Delphi 6 -> Delphi 2006 dbexpress の奇妙さ?

Delphi 2006 (アップデート 2) に移植する必要がある古いアプリケーション (Delphi 6 で記述) があります。アプリケーションは DBExpress を使用して Interbase 6.x データベースに接続していましたが、新しいバージョンは Firebird 2.x スーパーサーバーに接続する必要があります。

移植はうまくいきました。実際の問題はありません。しかし、移植したアプリから新しい Firebird サーバーに接続しようとすると、次のエラーが表示されます。

データベース エラー データベース サーバー エラー: フェッチ操作のための現在のレコードがありません

Delphi 6 でコンパイルされた同じアプリケーションを実行し、同じ Firebird サーバーと通信すると、正常に動作します。Delphi 2006 でアプリをコンパイルするために必要な変更は、データベース コードに関連するものではなく、すべてローカル ライブラリのものでした。アプリケーションは、TSQLDataset en datasetproviders および clientdatasets を使用します。

誰もがどのように、または理由を知っていますか? この動作を引き起こす可能性のある DBExpress への変更はありますか? ありがとう。

0 投票する
1 に答える
1271 参照

sql-server - Delphi 2010 または Delphi 2009 での TDatasetProvider のバグの解決 (困難な方法)

毎年のように、私は SA 所有者として新しい Delphi バージョンを受け取り、これが私がしていることです:

  1. Delphi バージョン XX をインストールします。
  2. Delphi バージョン XX を実行する
  3. TSQLConnection コンポーネントを挿入します。
  4. 少なくともあと 6 年間は Microsoft SQL Server 2000 に接続してください。
  5. いくつかの金額フィールドを持つテーブルである「select top 1 * from myTable」を使用して TSQLQuery を挿入します。
  6. さらにコンポーネント TDatasetProvider、TClientdataset、TDatasource、TDBGrid、および TButton を挿入します。
  7. すべてをリンクします。
  8. Raise 例外を使用して DatasetProvider.OnUpdateError にイベント ハンドラーを作成します。
  9. clientdataset1.applyupdates(0); ボタン1クリックで。
  10. 現在のレコードにいくつかの変更を加えます。
  11. button1 を押すと、delphi 2005 以降で提供されているものと同じ例外が発生します。
  12. MSQLServer 用の corelab または devArt dbx ドライバーを更新します。

今真剣に。数年前、TDatasetprovider が非常に単純なエラーを生成していることに気付きました。TFMTBCDField (Delphi での money フィールドの表現) は、SQL Server 2000 およびそれ以前のバージョンに対して互換性のない挿入/更新 SQL コマンドを生成します。問題は単純です。データセット プロバイダーは、これらの SQL サーバーでは受け入れられない金額フィールドの引用符付きの値を生成します。

例: varchar フィールドと money フィールドを持つテーブル。次のような更新を使用できます。

UPDATE テストテーブル セット MYMONEYFIELD = '1' where MYVARCHARFIELD = 'A'

以前のバージョンの SQLServer では、次を使用する必要があります。

UPDATE テストテーブル セット MYMONEYFIELD = 1 where MYVARCHARFIELD = 'A'

誰かがこの問題の回避策を持っていますか?