問題タブ [firedac]
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 - datasnap REST クライアントで失われたレコード
DataSnap/REST サーバーとクライアント アプリケーションがあります。
サーバーには、いくつかのレコードを含む 1 つ以上のデータセットを返すメソッドがありますが、このレコード数が 50 を超えると、クライアント アプリケーションは最初の 50 レコードを受信しません。
サーバー アプリケーションをデバッグしたところ、SQL ステートメントは正しいものでした (IBExpert から実行したところ、正しいレコード数が返されました)。
XE7、FireDAC、および Firebird を使用しました。
サーバーアプリケーションには、データセットを返すこのメソッドがあります
レコードを受信するために、クライアントアプリケーションに、私はこのコードを持っています
それは設定の一部だと思いますが、何が見つかりません。
何か案が?ありがとう
oracle - 開始ブロックと終了ブロックを使用したときに結果としてカーソルを取得する
firedac クエリ エディターで、1 つの結果 (カーソル) に対して複数の slq ステートメントの結果を使用しようとしています。
エディターでの SQL コマンド
上記のコードは、select および begin ブロックと end ブロックを組み合わせることができないため、機能しません。作業コードの提案はありますか?
mysql - FireDac TTable での日付のフィルタリング
FireDac で TTable を使用して日付フィールドをフィルター処理する際に問題が発生しています。
MySQL/InnoDB のデータベース。フィールドのタイプは日付です。
フィルターを設定するために使用しているコードは
フィルターを設定するときにエラーが発生するたびに、「「SQL TimeStamp 文字列を解析できませんでした」というメッセージを含む EConvertError」というエラーが発生するか、フィルターがレコードを見つけられません。
上記の形式は、現在の地域設定用です。「yyyy-mm-dd」も試しました。そして、引用符の有無にかかわらず両方を試しました。
delphi - Firedac は、更新後数秒以内に古い値を取得します
現在、クライアント/サーバー (TCP 経由) システムを保守しています。サーバーには複数のクライアント (せいぜい数十) がアクセスできるので、FireDAC のような接続プーリングをセットアップします。ほとんどの場合、問題なく動作します。私はまだ1つの問題を抱えています:
クライアント アプリケーションの 1 つが「書き込み」関数 ( nb : データベースへの書き込みを意味する関数) を呼び出し、同じリソースで読み取り関数を呼び出した直後に、古い値 (前回の更新前の値) を取得します。 . この結果は数秒/数百ミリ秒続き、その後、ドライバー層でプロセスが完全に終了していないかのように、結果は良好に戻ります。INSERT クエリでも同じ動作が見られます。
奇妙なことは、DB を更新するために使用している TFDQuery が (.Post 関数を介して) プロセスが終了したかのように非常に迅速に返されることです。amNonBlocking パラメータを使用していませんが、デフォルト値 (amBlocking) を使用しています。自然な動作は、データが完全に更新されたときにのみ .Post 関数が返されるが、明らかにそうではないということだと思います。それはFireDacの問題ですか?それはジェットエンジンの問題ですか?RecordLocking を使用する方法はありますか? MS-ACCESSを含む4つのDBMSで同じ動作を維持する必要があるため、危険だと思います。現在、MS-ACCESS データベースで Delphi XE6 を使用していますが、アプリケーションは Oracle、MS SQL、および PostgreSQL でも実行できる必要があります。
どうもありがとうございました
delphi - Params.Size が正しく設定されていません
状況は次のとおりです。XE3 (anyDAC) から XE7 (Firedac) にアップグレードすると、Informix で 255 文字を超える文字フィールドを更新する際に突然問題が発生します。
エラーが発生します:
'[FireDAC][Phys][ODBC]-345. 変数 [#1] のデータが大きすぎます。最大長さ = [256]、実際の長さ = [1000] ヒント: TFDParam.Size をより大きな値に設定します'
問題は、「applyupdates」の使用と組み合わせてキャッシュされた更新モードを使用しているため、設定するパラメーターがありません (PK を除く)...
参考: レコードを更新するテーブル定義:
FDQuery コンポーネントは、次のクエリで構成されます。
永続フィールドなどは使用しません。
delphi - FireDac TFDCommand で autoinc フィールドの挿入操作を実行し、生成された値を取得する
autoinc フィールドを持つテーブルで挿入操作を実行しようとしていますが、そのために FireDac TFDCommand を使用しています。したがって、レコードは db に正常に挿入されていますが、autoinc フィールドの生成された値を取得するにはどうすればよいでしょうか?
Obs: TFDConnection を使用すると、最後の自動生成を取得できます。値ですが、テーブルは 2 つの autoinc フィールドを生成します。主キーを取得して db のレコードを選択することはできましたが、db への別の呼び出しになるので、それを防ぐ必要があります。
何か案が?
delphi - カスタム Delphi アクション クラス
私はいくつかの基本的な TAction クラス (TDataSetAdd や TDataSetReOpen など) を書きましたが、それは魅力的に機能します。ここで、トランザクションのコミットを処理するアクションを作成しようとしましたが、何らかの理由で動作が予期しないものになりました。「HandlesTarget」関数は、フォーム上にあるにもかかわらず、トランザクション コンポーネントをオブジェクトとしてまったく表示しませんか? 私は何が欠けていますか?前もって感謝します。
mysql - レコードを挿入するときに「重複エントリ」例外が発生するのはなぜですか?
次のエラー メッセージが表示されます。
[FireDAC][Phys][MySQL] キー「PRIMARY」の重複エントリ「1111」
データベースにデータを挿入しようとしたとき。データベース内の唯一のデータは、主キーが「0000」のタプルであるため、主キーが別のキーの複製ではないことがわかっています。データはデータベースに正しく挿入されているので、主キーが重複していないときにエラーが表示されないようにする方法はありますか?
Delphi XE7、MySQL 6.2、FDConnection
およびFDQuery
. 私のコードは次のとおりです。