問題タブ [tadoquery]
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 - ADO コンポーネント CommandTimeout
TADOQuery、TADOCommand、または TADODataSet でのクエリ実行タイムアウトの設定に問題があります (それぞれで試しました)。データベースに接続し、結果としてデータセットを返すストアド プロシージャを定期的に実行する小さなアプリケーションがあります。私の目的は、このアプリケーションを常にオンラインに保つことですが、私の問題は、接続が失われると、(前述のコンポーネントの 1 つを介して) 実行されたばかりのコマンドのタイムアウトにデフォルトの 30 秒かかることです。私は解決策を探していましたが、何もうまくいきません。 CommandTimeout を 5 秒以上に設定して、自分のタイムアウトを尊重するために ADODB.pas を変更する方法を教えてください。
set DataComponent.Connection.CommandTimeout := 1; のように、これには多くの「解決策」がありました。しかし、実際には何も機能しません。私はD2009、MSSQL2005を使用しており、データコンポーネントとともに接続がスレッドで動的に作成されます。
最後に、私が試したのはこれです
どうもありがとう :)
sql - DELPHIADOQuery-データセットが返されるかどうかを検出します
SQLクエリを実行するための正しい手順に苦労しています。
基本的に、ユーザーがSQLコードを入力すると、プログラムがそれを実行するテキストフィールドがあります。残念ながら、データセットが返されるかどうかわからないため、使用する関数ADOQuery.OpenまたはADOQuery.ExecSQLがわかりません。
しかし、結果が返される場合は、いくつかの計算を行う必要があります。
クエリが何らかの結果を返すかどうか、またはそれがUPDATEのみであるかどうかを予測する方法はありますか...この状況を処理する方法はありますか?
string - Delphi-ADOクエリとFillCharはエラーを生成します
私は次のコードを持っています:
cSpacesAfterは定数で、値は1035です。wSpacesはローカル文字列変数です。問題は、TAdoQueryの作成時に次のエラーが発生することです。
フランス語でも、あなたはその考えを理解したと思います。
FillCharコードにコメントすると、すべて問題なく動作します。私は通常のコンパイラ指令を持っていますが、特別なことは何もありません。Delphi7を使用しています。
誰かがそのコードの何が問題なのか教えてもらえますか?
delphi - TADOQuery SQL.add()SQLの送信/準備
概要:
ユーザーがクエリを定義し、サーバーに送信して結果を表示できるようにするアプリケーションを作成しました。ソフトウェアはDB2またはMySQLで実行できます。
問題:
DB2バージョンで、ユーザーがクエリを実行しようとしたときに、ユーザープロファイルが無効になっているためにクエリが失敗したという問題が発生しました。DB2(IBM i上)で照会を実行するために、ユーザーのプロファイル名とパスワードが接続ストリングに指定されています。サーバーのセキュリティでは、2回または3回の誤ったログイン後にユーザーのプロファイルが無効になるように指定できます。
質問:
アプリケーションをデバッグしましたが、問題はクエリが2回送信されていることにあることがわかりました。ユーザーのパスワードが間違っている場合は、もちろん、これはユーザーのプロファイルを無効にするというノックオン効果があります。
さらに詳しく調べてみると、サーバーのログを(1行ずつデバッグしながら)調べたところ、TADOQuery.sql.add()を呼び出したときと、TADOQueryのを呼び出したときに、クエリがサーバーに送信されることがわかりました。アクティブプロパティはtrueに設定されます(これは、クエリがサーバーに送信されると予想されるポイントです)。クエリの実行に使用しているコードの例を次に示します。
したがって、私の質問は非常に単純です
。1. TADOQuery.sql.add()メソッドがクエリを送信するのはなぜですか(TADOQueryのsqlプロパティにSQLを追加する必要がある場合)。
2.これを防ぐために何ができますか?つまり、add()メソッドを呼び出したときにSQLが送信されないようにする方法はありますか?
ログに関する追加情報が必要な方のために、IBM iの出口点ログは、上記の例でadoqry.sql.addを呼び出すと、クエリが「データベースサーバー-SQL要求」出口を介して実行されることを示しています。 「準備と説明」機能を介したポイントアプリケーション。上記の例でadoqry.active:= trueを呼び出すと、同じクエリが同じ出口点アプリケーションを通過しますが、「Open/Describe」関数を経由します。
IBM iに精通していない場合でも、心配する必要はありません。送信されたクエリを2回トレースした証拠として、その情報を含めているだけです。本当の問題は、TADOQueryのsql.add()処理にあります。
delphi - クエリ内の 2 つ以上の場所に配置する必要がある整数型のパラメーター タイプで TADOQuery.Parameters を使用するにはどうすればよいですか?
同じ主キー値を置換する必要がある複数の場所を含む複雑なクエリがあります。次のようになります。
この重要なクエリで整数パラメータを使用しようとすると、不可能に思えます。次のエラーが表示されます。
を取り出して:aBaitid
リテラルに置き換えると、クエリは正常に機能します1
。
上記のクエリに対して他にできることはありますか? 次のような簡単なテストでテストすると:
これらの単純なケースは問題なく機能します。コンポーネントはであり、SQL 文字列にTADOQuery
追加するまで正常に動作します。:parameters
更新:実行時に次のコードを使用すると、パラメーターの置換が実際に行われ (ADO コンポーネントの不具合が回避されます)、別のエラーが表示されます。
エラーは次のように変わります。
パラメーター置換機能の使用を単に停止すると、このエラーはなくなることに注意してください。
Update2:受け入れられた回答は、同じ名前のパラメーターの2つの異なるコピーを見つける必要があることを示唆しているため、気になったので、次のようにクエリを作り直しました。
次に、必要に応じてスクリプト全体で @aVar を使用し、:aBaitId
. (パラメーター値が使用される回数が変化した場合、名前に一致するすべてのパラメーターを見つけてそれらを置き換える必要はありません)。
このようなヘルパー関数も問題ないと思います。 SetAllParamsNamed(aQuery:TAdoQuery; aName:String;aValue:Variant)
delphi - パラメータを ADOQuery オブジェクトに渡す方法は?
Delphi 7 と Oracle で ADOQuery を使用しています。パラメータを ADOQuery に渡すときにエラーが発生します。次の行を使用しました。エラーを特定するのを手伝ってください。
クエリを開くと、次のエラーが表示されます。
パラメータ オブジェクトが正しく定義されていません。一貫性のない、または不完全な情報が提供されています。
delphi - 編集状態のTAdoQueryが変更されたかどうかを知る方法はありますか?
編集状態のTAdoQueryが変更されたかどうかを知る方法はありますか?
強制的に編集状態にし、変更を保持するかどうかをユーザーに確認したいとします。
sql - SQL クエリを更新して変更を元に戻す
私は現在、1つの問題に困惑しています。テーブルからレコードを挿入および削除できますが、特定のフィールドを更新できません。0.5 秒後に変更を元に戻す前に、一時的に更新します。物理的に変更を確認できます。ところで、これは Delphi 7 で行われます。
OI で何かを間違って更新したり、欠落したりしていませんか? 更新するだけで永続的にはなりません。
言い忘れました: 表の単語リストには 3 つのフィールドがあります: ID と呼ばれる自動番号フィールド、英語、アフリカーンス語です。自動番号が更新に問題を引き起こしている可能性はありますか?
performance - Delphiのパフォーマンス:データセットのフィールドの下にあるすべての値を読み取る
TADOQueryから読み取ったパフォーマンスの修正を見つけようとしています。現在、Q.eof do begin ... Q.nextメソッドではなく、'を使用してレコードをループします。それぞれについて、各レコードのIDと値を読み取り、それぞれをコンボボックスリストに追加します。
指定したフィールドのすべての値を一度にリストに変換する方法はありますか?データセットをループするのではなく?こんなことができたら本当に重宝します…
それが本当のコマンドではないことは知っていますが、それが私が探しているコンセプトです。迅速な対応と解決策を探しています(いつものように、これは本当に緊急のパフォーマンスの問題を修正するためです)。
delphi - ここで「不足している SQL プロパティ」とは何ですか?
コードを実行しようとすると:
「SQL プロパティがありません」というエラー メッセージが表示されます。どこで私は間違えましたか?
前もって感謝します!