問題タブ [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.
delphi - TDatasetブックマークはどのくらい有効なままですか?
私が取り組んでいるプロジェクトには、以下のようなコードがあります。
個人的には、ブックマークをあまり使用しません。ただし、カーソル位置のみを移動したデータセットの位置を変更する場合を除きます(リストの作成、文字列リストの入力など)。Refresh
更新(特にフィルターによってレコードが非表示になる可能性がある場合)、再フェッチ(/ Close
)Open
、またはデータセット内のデータを変更する操作の場合、ブックマークは使用しません。私Locate
は主キーを使用するか(TClientDataset
もちろん、を使用して)、パラメーターを変更して再クエリすることを好みます。
ブックマークはいつまで有効ですか?までRefresh
?Close
データを再フェッチするために/が実行されるまでOpen
?セーフゾーンはどこで終わりますか?
私が(DbExpress)で使用TClientDataset
している答えを考えてみてください。TSQLQuery
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: リスナーは現在、接続記述子で要求されたサービスを認識していません。
命名の可用性をテストするツールがいくつかあると思います...
oracle - DBExpress を使用して Oracle 10g で 255 レコードの挿入制限を受けているのはなぜですか?
通常の SQL 処理中に壁にぶち当たります
DBEXPRESS を使用してリモート クライアントから Oracle 10g に接続する場合 - 標準の dbxpora.dll + oci.dll を使用
トランザクション中、ちょうど 255 回のレコード挿入の後、接続が 30 秒間ハングし、次のエラーが返されます。
ORA-03114 (接続が失われたかのように...)
これは、トランザクション中に任意のテーブルに 255 レコードを挿入すると発生します。(db ボックスでローカルに実行すると、すべて正常に動作します)
足りないものはありますか?
database - mysql用の無料のオープンソースdbexpressドライバーはどこにありますか
mysql用のdbxドライバーが必要です。それは無料でなければなりません。オープンソースは大歓迎です。(delphi7+およびmysql5+)
delphi - Delphi用の無料のdbexpressドライバのリスト
無料のオープンソースdbexpressドライバーの包括的なリストを知っている/持っている人はいますか?
delphi - ApplyUpdatesがデータを挿入または更新するかどうかをどのように検出できますか?
ClientDataSetのAfterPostイベントハンドラーで、現在のレコードのApplyUpdates関数が更新または挿入を行うかどうかの情報が必要です。
AfterPostイベントは、新しいレコードと更新されたレコードに対して実行されます。「更新」または「挿入」操作が進行中であるかどうかを示すために、新しいフラグ変数を宣言したくありません。
コード例:
ApplyUpdateが完了した後、アプリケーションはAfterPostメソッドにログを書き込みます。したがって、このメソッドはアクションに最も近い場所です。このイベントハンドラーに完全に挿入できるソリューションをお勧めします。
ClientDataSetインスタンスQryTestの情報を使用して、IsInserting関数を実装するにはどうすればよいですか?
編集:ここで説明されているClientDataSet.UpdateStatusを試してみます。
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を再び使用するにはどうすればよいですか?
助言がありますか?
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 への変更はありますか? ありがとう。
sql-server - Delphi 2010 または Delphi 2009 での TDatasetProvider のバグの解決 (困難な方法)
毎年のように、私は SA 所有者として新しい Delphi バージョンを受け取り、これが私がしていることです:
- Delphi バージョン XX をインストールします。
- Delphi バージョン XX を実行する
- TSQLConnection コンポーネントを挿入します。
- 少なくともあと 6 年間は Microsoft SQL Server 2000 に接続してください。
- いくつかの金額フィールドを持つテーブルである「select top 1 * from myTable」を使用して TSQLQuery を挿入します。
- さらにコンポーネント TDatasetProvider、TClientdataset、TDatasource、TDBGrid、および TButton を挿入します。
- すべてをリンクします。
- Raise 例外を使用して DatasetProvider.OnUpdateError にイベント ハンドラーを作成します。
- clientdataset1.applyupdates(0); ボタン1クリックで。
- 現在のレコードにいくつかの変更を加えます。
- button1 を押すと、delphi 2005 以降で提供されているものと同じ例外が発生します。
- 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'
誰かがこの問題の回避策を持っていますか?