問題タブ [tclientdataset]

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 に答える
3224 参照

delphi - Delphi - TClientDataset はスレッドセーフですか?

スレッド 1 で管理される TClientDataset があります。

別のスレッドに、TClientDataset の複製されたイメージがあります。

スレッドの問題が発生しますか?

編集

複製されたイメージは読み取り専用モードで使用されます。

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

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

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

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

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

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

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

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

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

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

コード例:

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

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

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

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

delphi - Delphi:Clientdataset:.OpenのEDatabaseError; ProviderNameが設定されている

したがって、クライアントがパターンで送信するものを処理するこのコードがあります。彼が「getBENUds」を送信すると、サーバーはSaveToStringメソッドを使用してこのテーブルのDataSetを送り返します。

次に、これがクライアントに送信されます。(私はSynapseを使用しています)。

それが言う行:DS_CLIENT.Open例外がスローされます:

例外がスローされました:クラスEDatabaseError。テキスト:'欠測データプロバイダーまたはデータパッケージ'。

上記のようにデータプロバイダーが「DS_PROV」に設定されているため、欠落しているデータパッケージである必要があります。

しかし、ClientDataSetはDataSetProviderからデータを取得し、DataSetProviderはデータベースからデータを取得するADOQueryからデータを取得するべきではありませんか?

これは、私の知識レベルで得られる限りです。私の目には、私がしたことはすべて正しかったので、それほど難しくないことを願っています。

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

delphi - Delphi: Clientdataset: EDatabaseError: Synapse を使用したデータ パッケージがありません

クライアントからサーバーに文字列を送信しています。今回は ClientDataSet によって作成されたストリームです。残念ながら、現時点では受信 (または送信??) は機能しません。

注: ソケットをブロックする Synapse を使用しています。サーバーはマルチスレッドです。

サーバー:

クライアント:

これで、サーバーを起動してクライアントの接続ボタンをクリックするたびに、DataSet がクライアントに転送され、TDBGrid が起動する必要があります。

残念ながら、これは起こりません。代わりに、タイトルに記載されているエラーが表示されます: Missing data provider or datapackage. ただし、データ プロバイダーは DataSetProvider1 に設定されています (オブジェクト インスペクターで)。

クライアントの TDBGrid にデータが入力されるようにするにはどうすればよいですか?

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

sql-server - TClientDataSet と大きな挿入

私のアプリケーションでは、select (MSSQL) で TADOQuery を使用し、TClientDataSet とリンクしています。約 100 万件のレコードと ApplyUpdates を挿入する必要があります。

では、SQL Server Profiler には何が表示されるのでしょうか? 挿入された行ごとに、3 つのクエリがあることがわかります。挿入スクリプトの sp_prepare、いくつかの値を指定した sp_execute、および sp_unprepare です。

挿入する前にすべてのレコードに対してSQLを1回準備し、後で準備を解除したいだけです。どうすればいいですか?

の後に追加:

クエリには、ストアド プロシージャを実行するためのスクリプトがあります。

いくつかのパラメーターを使用して、テーブルsTableNameからすべてのフィールドを選択します。

プロファイラーから挿入する例:

ステップ1:

ステップ2:

ステップ 3:

それはすべての新しい行のためのものです。

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

delphi - 3 つ以上のレベルで TClientdatasets を使用してデータセットをネストしますか?

データセット内にデータセットをネストしてから、このデータセットを別のデータセットにネストできるかどうかを知りたいです。Therfore 3 レベルのネスティング。現在、あるデータセットを別のデータセットにネストすることしかできません。3 番目のレベルをネストしようとすると、最初にプログラムをコンパイルしてデータを入力できるときに、データベースが正常に実行されます。その後、プログラムを 2 回目に実行しようとすると、「データパケットの不一致」というメッセージとともに EDBClient によって実行が発生しました。

3 レベルのデータセットを相互にネストすることは可能ですか?

よろしくリアーン

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

delphi - ClientDataSetの子孫のフィールドが設計時に表示されないのはなぜですか?

TClientDatasetから継承するコンポーネントを作成しようとしています。設計時にコンポーネントを作成する際に、フレームワーク内で使用される一般的なフィールドのリストをインスタンス化したいと思います。以下のコードはエラーなしで実行され、フィールドは実行時に表示されますが、設計時には表示されません。誰か助けてもらえますか?些細なことだと思います!

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

delphi - ClientDataSetを使用したDelphiADOQuery結果の連結

ユーザーがクエリを定義し、TADOQueryコンポーネントを使用して実行し、オフラインで表示するためにレポートをXMLドキュメント(PfXMLをFormatパラメーターとして渡すSaveAsFile)としてPCに保存できるアプリケーションを作成しました。これは正常に機能します。

私が今やらなければならないことは、結果を連結することです。これが意味するのは、少なくとも2つのレポート(同じクエリを使用しているのと同じフィールドを持つ)を取得し、それらを結合して1つのレポートを作成する必要があるということです。例:ユーザーのリストを取得するクエリがあるとします。このクエリは、「システムA」と「システムB」で実行します。ここで、システムAとシステムBは2つの別個のシステムです。両方のシステムでクエリを実行すると、2つの個別のレポートファイルが作成されます。これらのファイルをTADOQueryコンポーネントにロードして、画面に表示できます。ただし、レポートを結合する必要があるため、2つのレポートを切り替える代わりに、すべての結果を同時に画面に表示できます。

TClientDataSetを使用してこれを実行できると言われましたが、データベースプログラミングは比較的慣れていないため、どこから始めればよいかわかりません。http://delphi.about.com/od/usedbvcl/a/tclientdataset.htmで記事をチェックしましたが、必要なことを正確に実行できるものがないため、まだ暗闇の中にいます。

したがって、2つの質問があります。1。TClientDataSetを使用して、2つの別々の結果セットを取得し、それらを連結するための最良の方法ですか。これを行うためのより良い方法がある場合、それは何ですか?2. TClientDataSetを使用することがこれを行うための最良の方法である場合、これをどの程度正確に実行しますか?TADOQueryからTClientDataSetにデータを転送してから、再度データを転送するにはどうすればよいですか?処理の基本的なフローは、次のようになる必要があります。

レポート1(LoadFromFile)-> TADOQuery \

レポート2(LoadFromFile)-> TADOQuery /

これについては、すべての助けをいただければ幸いです。どこから始めたらいいのかわからない!