問題タブ [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.
delphi - Delphi - TClientDataset はスレッドセーフですか?
スレッド 1 で管理される TClientDataset があります。
別のスレッドに、TClientDataset の複製されたイメージがあります。
スレッドの問題が発生しますか?
編集
複製されたイメージは読み取り専用モードで使用されます。
delphi - TDatasetブックマークはどのくらい有効なままですか?
私が取り組んでいるプロジェクトには、以下のようなコードがあります。
個人的には、ブックマークをあまり使用しません。ただし、カーソル位置のみを移動したデータセットの位置を変更する場合を除きます(リストの作成、文字列リストの入力など)。Refresh
更新(特にフィルターによってレコードが非表示になる可能性がある場合)、再フェッチ(/ Close
)Open
、またはデータセット内のデータを変更する操作の場合、ブックマークは使用しません。私Locate
は主キーを使用するか(TClientDataset
もちろん、を使用して)、パラメーターを変更して再クエリすることを好みます。
ブックマークはいつまで有効ですか?までRefresh
?Close
データを再フェッチするために/が実行されるまでOpen
?セーフゾーンはどこで終わりますか?
私が(DbExpress)で使用TClientDataset
している答えを考えてみてください。TSQLQuery
delphi - ApplyUpdatesがデータを挿入または更新するかどうかをどのように検出できますか?
ClientDataSetのAfterPostイベントハンドラーで、現在のレコードのApplyUpdates関数が更新または挿入を行うかどうかの情報が必要です。
AfterPostイベントは、新しいレコードと更新されたレコードに対して実行されます。「更新」または「挿入」操作が進行中であるかどうかを示すために、新しいフラグ変数を宣言したくありません。
コード例:
ApplyUpdateが完了した後、アプリケーションはAfterPostメソッドにログを書き込みます。したがって、このメソッドはアクションに最も近い場所です。このイベントハンドラーに完全に挿入できるソリューションをお勧めします。
ClientDataSetインスタンスQryTestの情報を使用して、IsInserting関数を実装するにはどうすればよいですか?
編集:ここで説明されているClientDataSet.UpdateStatusを試してみます。
delphi - Delphi:Clientdataset:.OpenのEDatabaseError; ProviderNameが設定されている
したがって、クライアントがパターンで送信するものを処理するこのコードがあります。彼が「getBENUds」を送信すると、サーバーはSaveToStringメソッドを使用してこのテーブルのDataSetを送り返します。
次に、これがクライアントに送信されます。(私はSynapseを使用しています)。
それが言う行:DS_CLIENT.Open例外がスローされます:
例外がスローされました:クラスEDatabaseError。テキスト:'欠測データプロバイダーまたはデータパッケージ'。
上記のようにデータプロバイダーが「DS_PROV」に設定されているため、欠落しているデータパッケージである必要があります。
しかし、ClientDataSetはDataSetProviderからデータを取得し、DataSetProviderはデータベースからデータを取得するADOQueryからデータを取得するべきではありませんか?
これは、私の知識レベルで得られる限りです。私の目には、私がしたことはすべて正しかったので、それほど難しくないことを願っています。
delphi - Delphi: Clientdataset: EDatabaseError: Synapse を使用したデータ パッケージがありません
クライアントからサーバーに文字列を送信しています。今回は ClientDataSet によって作成されたストリームです。残念ながら、現時点では受信 (または送信??) は機能しません。
注: ソケットをブロックする Synapse を使用しています。サーバーはマルチスレッドです。
サーバー:
クライアント:
これで、サーバーを起動してクライアントの接続ボタンをクリックするたびに、DataSet がクライアントに転送され、TDBGrid が起動する必要があります。
残念ながら、これは起こりません。代わりに、タイトルに記載されているエラーが表示されます: Missing data provider or datapackage. ただし、データ プロバイダーは DataSetProvider1 に設定されています (オブジェクト インスペクターで)。
クライアントの TDBGrid にデータが入力されるようにするにはどうすればよいですか?
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:
それはすべての新しい行のためのものです。
delphi - 3 つ以上のレベルで TClientdatasets を使用してデータセットをネストしますか?
データセット内にデータセットをネストしてから、このデータセットを別のデータセットにネストできるかどうかを知りたいです。Therfore 3 レベルのネスティング。現在、あるデータセットを別のデータセットにネストすることしかできません。3 番目のレベルをネストしようとすると、最初にプログラムをコンパイルしてデータを入力できるときに、データベースが正常に実行されます。その後、プログラムを 2 回目に実行しようとすると、「データパケットの不一致」というメッセージとともに EDBClient によって実行が発生しました。
3 レベルのデータセットを相互にネストすることは可能ですか?
よろしくリアーン
delphi - ClientDataSetの子孫のフィールドが設計時に表示されないのはなぜですか?
TClientDatasetから継承するコンポーネントを作成しようとしています。設計時にコンポーネントを作成する際に、フレームワーク内で使用される一般的なフィールドのリストをインスタンス化したいと思います。以下のコードはエラーなしで実行され、フィールドは実行時に表示されますが、設計時には表示されません。誰か助けてもらえますか?些細なことだと思います!
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 /
これについては、すべての助けをいただければ幸いです。どこから始めたらいいのかわからない!