問題タブ [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.

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

delphi - 演算子またはセミコロンのエラーメッセージがありません

hi iveは、次のコードでSQLを取得しました。

SELECT SUM(Travel_Cost)
FROM Travel
WHERE Job_ID =:mcode

ユーザーがSQLに渡される編集コンポーネントから値を入力できるようにするために、次のコードも取得しました。

エラーメッセージが表示され続ける

「演算子またはセミコロンがありません」

コンパイルしようとすると、何か提案はありますか?

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

delphi - adoquery.activeを変更するときの基準式のデータ型の不一致

私は次のクエリを持っています

プログラムを実行すると、ステータスが「進行中」のすべてのプロジェクトタイトルがDBlookuplistboxに正常に一覧表示され、次のコードのボタンが表示されます。

adoqCurrentProjectsはadoqueryの名前ですが、ボタンをクリックすると、「条件式のデータ型の不一致」というエラーメッセージが表示されます。プロジェクトテーブルのレコード数を「進行中」のステータスで変更してボタンをクリックすると、プログラムを再起動したときと同じように、DBlookuplistboxに新しい結果が表示されると思いました。何か提案はありますか?

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

delphi - Delphi 2010で親カテゴリを表示するには?

OK、私は Embarcadero Delphi 2010 を使用しています。現在、そのファイル内で名前が付けられた Access データベース ファイルを使用していflib.mdbます。次のMCategory名前の 4 つの列を持つテーブルを作成します。テキストとして。codecategoryparentcategorycategorynotes

データベース接続には、ADOConnection を使用します。クエリには ADOQuery を使用します。テーブルには ADOTable を使用します。

コードはプレフィックス付きで自動生成されますが、例では通常の数値を文字列として使用しています。

ROOT は 1 つだけです:codecategory="0" // parentcategory="" // category="ROOT"別の ROOT を追加することはできません (parentcategory が空のもの)

私の質問は、下の図のようにすべての親カテゴリを再マスクする方法ですか? そして、それを DBGrid で表示する方法は?

親カテゴリのマスキング

recursive を使用する必要がありますか? そうする簡単な方法はありますか?

また、Delphi 2010 のソース コードもお願いします.... ^^

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

delphi - SQL の 2 回目の実行中の TADOQuery エラー

TADOQueryWindows XP および Windows7 オペレーティング システムの Delphi 7 では、コンポーネントによって奇妙な動作が発生します。次の問題は、Windows7 オペレーティング システムでは問題なく動作しますが、XP オペレーティング システムではエラーが発生します。

シナリオを説明しましょう。1 つの TADOConnection コンポーネントと 2 つの TADOQuery コンポーネントがあります。TADOConnection コンポーネントのConnectionStringプロパティの値は次のとおりです。

アプリケーションにログインしているユーザー ID/パスワードに、ロール/付与された権限を既に適用しています。

プロパティを使用して、TADOConnection コンポーネントを TADOQuery コンポーネントに接続しConnectionました。

最初の SQL を実行するとエラーは発生しませんが、2 番目の SQL を実行すると Windows XP オペレーティング システムで次のエラーが発生します。

[Microsoft] [SQL Server Native Client 10.0] [SQL Server] オブジェクト 'My Table Name'、データベース 'My Database Name'、スキーマ 'dbo' に対する SELECT 権限が拒否されました

同じコードを Windows7 オペレーティング システムで実行すると、エラーなく正常に動作します。

不足している可能性のあるものや問題の可能性があるものに焦点を当てることができますか?


「Persist Security Info = False;」を追加しました。次のように接続文字列に追加します。

ここで、TADOQuery コンポーネントを使用して SQL を実行するたびに、最初に TADOQuery の「接続」プロパティを設定していても、SQL を実行するたびにこのプロパティを設定する必要があるため、毎回次のステートメントを記述する必要があります。

しかし、前述したように、Windows7 では TADOConnection コンポーネントの「ConnectionString」プロパティを変更する必要はなく、TADOQuery コンポーネントの「Connection」プロパティを設定する必要もありません。

誰が正確に何をしなければならないか教えてもらえますか?

アプリケーションが大きすぎて、多くの場所でコーディングの変更が必要な場合、それに同意する人はいますか? そして、テストの取り組みについてはどうですか?すべての場所でテストを行う必要がありますよね?

だから、私はまだ適切な解決策を探しています。質問はまだ答えられていません。

誰かが手がかりやヒント、または適切な解決策を持っている場合は、非常に高く評価されます。

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

delphi - ADOを使用してExcelファイルに値を挿入するにはどうすればよいですか?

次のコードを使用して、Excelファイルに値を挿入しています。

前のルーチンが完全に表示されます。

Excelファイルへの接続

誰かが私が間違っていることを教えてもらえますか?

エラーは「INSERTINTOステートメントの構文エラー」です。

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

delphi - TADOConnectionのOnExecuteCompleteイベントを誰が起動したかを見つける方法はありますか?

Delphi7でADOデータベースプロファイラーを作成しようとしています。これはDelphiプロジェクトの一部です。

イベントを使用してOnExecuteCompleteいますが、一部のPCで「MSADO15.DLL」アクセス違反エラーが発生します。

私は調査し、いくつかの勝利バージョンが互換性がないか、破損しているか、バージョンが異なることを過小評価しています。

parameters[i].value「コマンド」のプロパティを使用すると、そのAVエラーが発生しました。次に、別のタイプを作成することにしOnExecuteCompleteました。ここで、ADOConnectionでイベントを呼び出したオブジェクトへの参照が必要です。到達できれば問題は解決します。

「Command」と「Recordset」の参照を使用して、このADOConnectionによってリンクされたすべてのADOオブジェクトで比較しますが、一部のADOオブジェクトにはRecordsetがありません。そのイベントを発生させたユーザーを見つける方法はありますか?送信者のように?

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

delphi - Delphi2005 - 別のメソッドで TADOQuery の結果を使用する

コードの冗長性のため、通常の ADOQuery 処理を独自のメソッドに一般化し、そのメソッドはクエリの _RecordSet を返します。今、そのメソッド内のクエリ結果をチェックすると、問題なくチェックアウトされます。しかし、返された _RecordSet は空または nil のようです (例外: EOleException 'アイテムが対応する名前または序数のコレクションに見つかりません。' ) 収集したものから、クエリの _RecordSet のクローンを返す必要があるようです。これまで私は使ってみました

res := qr.Recordset.Clone(adLockUnspecified); Result := res;

TADOQuery.RecordSet._xClone()方法

失敗しただけでなく、これらの方法も機能しませんでした(いくつかのコンポーネントが認識されず、バージョンの違いが推測されます)。

クエリに使用するコード:


誰かが以前にこの問題を解決し、適切な答えを知っているか、役立つコンテンツに私を導くことができますか?

0 投票する
0 に答える
2199 参照

delphi - SQL Server Compact Edition への接続時に「オブジェクトが開いていました」

私は髪を引き裂いているので、誰かがこれを手伝ってくれることを願っています。

SQL Server Compact を使用して一連のデータを格納するアプリケーションを作成しています。正常に動作しているサーバーに接続するために TADOQuery を使用しており、テーブルを作成してデータベースに値を挿入することができます。その後、Management Studio でこれをチェックして、すべてが正常に完了したことを確認できます。

私が遭遇する問題は、テーブルからデータを取得しようとしたときです。Management Studio では、標準の SQL クエリを実行できます

これにより、コンポーネント テーブルに格納されているすべてのデータを含むテーブルが返されます。

しかし、TADOQuery を使用して Delphi でこのコードを実行すると、「オブジェクトが開いていました」というエラーが表示されます。私が使用しているコードは次のとおりです。

これにより、「オブジェクトが開いていました」というエラーが発生します。

どんな考えでも大歓迎です!

乾杯、

アリー

アップデート

次のようにコードを更新しましたが、それでも同じエラーが発生します。何か案は?

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

sql-server-2008 - Delphi - TADOQuery.RowsAffected は UPDATE SQL ステートメントで常に -1

TADOQuery コンポーネントを使用して SQL UPDATE ステートメントを実行しており、更新された行数を調べたいと考えています。UPDATE ステートメントは正常に実行され、それに応じて行が変更されますが、.RowsAffected プロパティは常に -1 を返します。ドキュメントには、-1 はステートメントのエラーを示すと記載されていますが、私が言うように、正常に実行されます。ステートメントの前に SET NOCOUNT OFF を付けてみましたが、違いはありませんでした。私のコードは次のとおりです。

MS SQL Server 2008R2 に接続している Delphi XE2 を使用しています。

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

delphi - ClientDataSetは、TADOQueryからデータを部分的にのみ転送します

2つのデータベースがあり、一方のデータベースのすべてのレコードがもう一方のデータベースに一致するレコードを持っていることを確認する必要があります。これらをDB-SQLおよびDB-Legacyと呼びます

両方にSQLインターフェイスがあれば、これは十分に簡単ですが、残念ながら、私は一方にしかアクセスできず、もう一方には「レコードの検索/最初/次」タイプのインターフェイスがあります。

このタスクを実行するために選択した方法は、以下のコードを介してDB-SQLをclientdatasetに転送することです。

これは、 http://www.podgoretsky.com/ftp/docs/Delphi/D5/dg/5_ds3.html#20536のコードに基づいています。

これにより、EOFまでFirst / NextでDB-legacyを反復処理し、FindKeyを使用してClientDataSetを検索し、DB-LegacyのすべてのレコードがDB-SQLに存在することを確認できます。FoundInGISタグを1に設定することで、この値でフィルタリングして、DB-SQLにはあるが、DB-Legacyにはないすべてのレコードを見つけることができます。

私の問題は、私たちのデータベースの1つが他のデータベースよりも大幅に大きく、3,310,510レコードであるということです。lQueryには正しい数のレコードがありますが、プロシージャの最後では、lDataSetには約2,500,000しかありません。

ここで、CDを使用してFindKeyメソッドを使用したいと思います。これは、TADOQueryでサポートされていませんが、レコードの3分の1を無視する場合は、あまり使用されません。DataSetProviderまたはClientDataSet内のどこかに整数のオーバーフローがあるかもしれないと推測していますが、例外が発生しないのは少しやんちゃです!他の誰かがこの種の問題を抱えていましたか?それを並べ替える方法はありますか(おそらく、データを小さなチャンクにダウンロードするか、CDSにデータを取り込む別の方法を使用することによって)?

この場合のSQL-DBはOracleですが、DBの問題ではないかと思いますが、コードもSQL-Serverで動作する必要があります。

編集:私は今、いくつかのわずかに異なる動作をしています。クエリからいくつかのフィールドを削除しようとすると、正常に実行されます。すべてのフィールドは個別に正常に実行されますが、すべてを処理することはできません(これは私のオーバーフロー仮説をサポートします)。私は今ですが、時々例外が発生します。例外は

これは誤解を招く可能性があります。デバッグDCUを詳しく調べると、エラーが次の原因で発生していることがわかります。

TCustomClientDataSet.SetData(DBClient行1482)。これにより、ESafeArrayError(AResult = -2147024882)が発生し、「予期しないバリアントまたは安全な配列エラー」になりますが、その後のFormatStrの呼び出しを処理できません。