問題タブ [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.
sql - Delphi 2010 の TADOQuery の配列パラメータ
簡単なクエリを実行する必要があります。
SELECT * FROM MyTable WHERE Id IN (:ids)
明らかに、指定されたリストに主キー「Id」を持つレコードのセットを返します。パラメータ 'ids' の ADOQuery.Parameters に整数 ID の配列を渡すにはどうすればよいですか? VarArray を試しましたが、うまくいきません。パラメータ 'ids' には、重要な場合、デフォルトで FieldType = ftInteger があります。
sql-server - ADO - 複数の結合ステートメントを含む複雑なクエリの結果を編集できますか?
私は、1 つのマスター データベースから多数の異なるデータベースにデータをプッシュできるデータ変換ユーティリティに取り組んでいます。ユーティリティ自体は、宛先にデータがどのように保持されるか (テーブル構造) を認識しませんが、複数の結合ステートメントを含む複雑な SQL クエリを使用して、宛先からデータを返す SQL ステートメントを記述したいと思います。データが、ユーティリティが ADO クエリで認識できる標準化された形式 (フィールド名) である限り。
私がやりたいことは、この ADO クエリのライブ データを変更することです。ただし、複数の結合ステートメントがあるため、これが可能かどうかはわかりません。少なくとも BDE については知っています (BDE を使用したことはありません)。これは非常に厳密で、すべてのフィールド (*) などを返す必要がありました。私が知っている ADO はより柔軟ですが、この場合の柔軟性はよくわかりません。
TADOQuery
結果に異なるテーブルのフィールドが含まれている場合、この方法でデータを変更できるはずですか? その場合でも、新しいレコードを最後に追加したいとします ( TADOQuery.Append
)。2 つの異なるテーブルに追加しますか?
私が選択している実際の主テーブルには、同じ主キー フィールドで結合された補完的なテーブルがあります。小さいテーブル)。したがって、典型的なステートメントには次のようなものが含まれます。
他のテーブルのレコードへの結合も多数ありますが、それらのレコードへの追加については心配していません。「小」テーブルと「詳細」テーブルに同時に追加することだけが心配です。
そのようなことは ADO クエリで可能ですか? これを可能にするために必要な方法で SQL ステートメントを微調整および変更するつもりです。ありえないとはいえ、嫌な予感がします。
互換性:
- SQL Server 2000 ~ 2008 R2
- デルファイ XE2
delphi - Delphi 6 を使用した Unicode 文字の処理
Delphi 6で開発されたポーリングアプリケーションがあります。ファイルを読み取り、仕様に従ってファイルを解析し、検証を実行してデータベースにアップロードします(SQL Server 2008 Express Edition)
日本語 OS などの 2 バイト文字セット (DBCS) を持つオペレーティング システムのサポートを提供する必要がありました。そこで、SQL Server のデータベース フィールドを varchar から nvarchar に変更しました。
ポーリングは、DBCS を使用するオペレーティング システムで正常に機能します。システム ロケールが日本語/中国語/韓国語に設定されていて、オペレーティング システムにそれぞれの言語パックがある場合、DBCS 以外のオペレーティング システムでも正常に機能します。ただし、ロケールが英語に設定されている場合、データベースには 2 バイト文字のジャンク文字が含まれます。
いくつかのテストを実行しましたが、解決策を特定できませんでした。
たとえば、TStringList を使用してUTF-8ファイルから読み取り、それを別のファイルに保存すると、Unicode データが保存されます。しかし、ファイルの内容を使用して TADOQuery コンポーネントを使用して更新クエリを実行すると、ジャンク文字が表示されます。データベースにはジャンク文字も含まれています。
PFB サンプル コード:
上記のコードは、DBCS オペレーティング システムで正常に動作します。
文字列、ワイド文字列、UTF8文字列で遊んでみました。ただし、ロケールが英語に設定されている場合、これは英語 OS では機能しません。
この問題に関する指針を提供してください。
event-handling - TDataSet->Cancel() で引き続き Post を続行できる
私はBeforePostイベントハンドラーで、投稿が完了する前にキャンセルしたいと考えています。BeforePost 関数の最後で、DataSet->Cancel(); を呼び出します。これをデバッグすると、自分の関数から TDataSet.DoBeforePost 関数に移動し、次に TDataSet.Post に移動することがわかります。ここで CheckOperation() を呼び出します。データが正しく入力されておらず、ユーザーにこのエラーが表示されるため、CheckOperation は例外をスローします (私は Cancel() を呼び出して回避しようとしました)。
この操作の順序で間違っていることはありますか? どんな種類のアイデアやガイダンスも大歓迎です。
delphi - TMemo コンポーネントから MS Access データベースに複数の行を追加する方法は?
という名前のテーブルを持つ ADO データベースを取得しましたt_codemeaning
。以下はテーブル構造です。
にすべてのテーブルを追加しますADOQuery1
。
この Delphi スクリプトでボタンをクリックします。
メモに1行追加すると、すべてFineです。
しかし、memo1 に複数行のテキストを追加すると、エラーが表示されます。
複数ステップの操作でエラーが発生しました。各ステータス値を確認してください。
これを修正するには?
私の最後の進歩として、新しい文字列変数 aValue を作成し、それに memo1.lines.text を追加しました。
そして、ADOQuery1codemeaning_description.value .... のスクリプトを次のように変更します。
それでも同じエラーが発生しました...
mysql - Delphi で SQL テーブルからデータを受け取る
MYSQL データベースからデータを取得して表示する必要があるフォームがあります。
私が作成した SQL コードは、MYSQL 内で実行しようとしたため、正常に動作します。
また、SQL データを取得して表示するために、別のフォーム内で、私のフォームと同様の形式のコードを使用しました。コードは他の形式で完全に機能します。
ただし、このフォームのコードは、SQL テーブルからデータを受信/表示していないようです。
OnShow
フォームのイベント用に記述されたコードのスニペットを次に示します。
delphi - Delphi7 TAdoQuery の複数行パラメータ
Delphi 7 と SQL Server 2005 で、複数行のパラメータ (Stringlist.text) を TAdoQuery 挿入スクリプトに渡そうとしています。挿入は成功しましたが、フィールドからデータを取り戻すと、
それ以外の
テーブルのフィールド タイプは nvarchar(MAX) で、他のタイプに変更することはできません。テーブルは私のものではありません。パラメータの型を widestring から ftMemo に変更しようとしましたが、何も変わりません。何か案が?
delphi - Delphi で ADOquery を使用して更新クエリを PostgreSQL に実行した場合のリターン コード
Postgres データベースで Adoquery を使用しています。UPDATE または INSERT クエリを実行すると、ExecSql も OPEN も影響を受けるレコードの数を返す必要がありますが、常に -1 です。psqlODBC の最新バージョン: 09.01.0200 を使用しています。
コード:
結果は-1
delphi - Delphi ADOQuery パラメータ アクセス違反
これが WinXP では機能しなくなったのに、Win7 などでは機能するのはなぜですか?
ここで、具体的に次のようなパラメーターを作成する必要があります。
明確にするために、2 番目のバージョンは機能しますが、最初のバージョンが機能しなくなった理由を知りたいです。アクセス違反には msado15.dll に関するものがあります。その .dll が最近の一部の Windows Update で変更されたかどうかはわかりません ...
問題があるかどうかはわかりませんが、これは最近、おそらく 1 か月ほど前に発生しました。
delphi - TADOQuery: 'フィールド 'MyField' の EDatabaseError 型が一致しません。予想: String actual: FixedWideChar'
3 つの異なるデータベース (開発、ホモログ、および製品) があり、それぞれが 11g と 10g のいずれかの Oracle バージョンにあります。
TADOQuery を使用して、一度にこれらのデータベースの 1 つのみでいくつかのデータを照会しています。
アプリを dev または prod で実行すると、データが完全に返されます。しかし、ホモログで実行すると、次のエラー メッセージが表示されます。
「フィールド 'MyField' の EDatabaseError 型が一致しません。期待値: 実際の文字列: FixedWideChar」
確認済みで、DDLは3つのデータベースで同じなので、データ型の問題ではありません。また、MyField はすべて CHAR(1) です。
誰でも私を助けることができますか?