お世話になります。
Excel2010でAccess2007へのデータ接続をしています。
検索内容毎に基本のクエリから必要なデータをクエリとして作成し、その結果を取得したいと思っております。複数作成したクエリは名前の頭に「”出力用”+連番」で設定し、データが0のものは削除済みです。
Set dbCon = New ADODB.Connection
Set dbRes = New ADODB.Recordset
Set dbCmd = New ADODB.Command
Set dbCat = New ADOX.Catalog
~この間でクエリを作成、また0件のクエリは削除の処理~
dbCat.ActiveConnection ="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ”データベースのパス”
For Each obj In dbCat.Views
If InStr(obj.Name, "出力用") <> 0 Then
If sql = "" Then
sql = "SELECT DISTINCT * FROM " & obj.Name
Else
sql = sql & ", " & obj.Name
End If
Next obj
Set dbRes = New ADODB.Recordset
dbRes.Open sql, dbCon, adOpenStatic, adLockPessimistic
上記の最終行のところで「クエリが複雑すぎます」でエラーになります。
すべてのクエリの重複しないデータを取得する方法はないでしょうか?
よろしくお願い致します。
No.4ベストアンサー
- 回答日時:
うーんんn
当方の環境(Office2010 Pro)では
C:\Program Files (x86)\Common Files\System\ado\msjro.dll
にファイルが有り(これがJro.JetEngineの実体です)
参照設定のリストでも
Microsoft Jet and Replication Objects 2.6Library として選択できるのですが
なぜ、そちらでオブジェクト作成失敗のエラーになるのか・・・
力不足ですみません。
もっとも、作成に成功していたとしても当初の問題が解決できる保証もなく・・・。
この辺が私の限界です。
ご回答ありがとうございます。こちらのPCにもJro.JetEngineの実体のファイルはあるのですが。。詳しく調べていきたいと思います。大変勉強になりました。ありがとうございました。
No.3
- 回答日時:
ひとつずつ実行して行くと問題ない。
クエリの連投をしているようなのでキャッシュの問題かも?
オブジェクトの宣言を行って
Dim JE As Object
Set JE = CreateObject("JRO.JetEngine")
・・・・
JE.RefreshCache dbCon 'キャッシュの更新
dbRes.Open sql, dbCon, adOpenStatic, adLockPessimistic
Set JE=nothing '解放
のようにキャッシュの更新を挟み込んでみるとどうでしょう?
位置が適切なのか、一か所で十分なのかは残念ながら不明です。
ご回答頂き、ありがとうございます。
現在、標準モジュールにAccess接続・データ取得用のものを作成し、渡したSQL文を処理させる構造にしているため、そのモジュールの最初の部分に教えて頂いたオブジェクト宣言を記載し、実行してみました。Set JE = CreateObject("JRO.JetEngine")のところで「ActiveXコンポーネントはオブジェクトを作成できません」のエラーが表示されます。原因がわからない状態でおります。もしよろしければ教えて頂けないでしょうか?
No.2
- 回答日時:
では
Debug.print sql
Set dbRes = New ADODB.Recordset
dbRes.Open sql, dbCon, adOpenStatic, adLockPessimistic
として
sqlの値の確認。
次に、Accessをお持ちでしょうからそのsqlをクエリのSQLビューに張り付けてシートビューに切り替えられるか確認。
obj.Name はクエリ名が入るのかな?
モノによっては一時テーブルに書き出してからでないと上手く行かなかったり、
フィールド名などに半角スペースが含まれていたり不適切な文字
https://support.microsoft.com/ja-jp/kb/826763
が有る場合にもエラーになる可能性があります。多分ですがADO接続でも同様かと?
ご回答ありがとうございます。
SQLビューに貼り付け実行したところ、クエリが複雑すぎますとエラーがでました。教えて頂いた不適切な文字の使用がないか確認してみました。作成したクエリを一つずつ実行するとシートビューに切り替えられるようです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 【PHP/MySQL】コード上で生成したクエリを基に集計クエリを作りたい 1 2022/07/28 15:06
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA ACCESS SQL...
-
insert1つの処理でもトランザ...
-
Pro*Cの構文エラー
-
Q&Aサイトを作成していてURLの...
-
ResultSetインターフェイスでの...
-
CakePHPとMySqlを使用していま...
-
MySQLのINSERT時にたまに重複に...
-
JAVA SQLServerException 列名 ...
-
データベースに存在するデータ...
-
PHPでMySQLのテーブルからcount...
-
order by での変数使用について。
-
エクセルVBAについて
-
VBAをつかってクエリの情報を抽...
-
MySQLでデータベースにデータin...
-
実行時エラー3131 FROM 句の構...
-
円マークが付加されて保存され...
-
DBで検索結果に該当するデータ...
-
phpにて出欠登録管理を作成して...
-
phpのエラーについてです
-
sortable ギブアップです…助け...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JAVA SQLServerException 列名 ...
-
Q&Aサイトを作成していてURLの...
-
<VB.NET>INSERT文でDBにデータ...
-
insert1つの処理でもトランザ...
-
Pro*Cの構文エラー
-
ResultSetインターフェイスでの...
-
データベースに存在するデータ...
-
PHP&MySQLでの文字列+数列の一...
-
VBA ACCESS SQL...
-
phpで複数の検索語を検索対象に...
-
like検索の複数キーワードで、...
-
MySQLのINSERT時にたまに重複に...
-
C# で発生したException.Messag...
-
PHP+PDO+MYSQL で実行されたSQ...
-
PHPのUndefined index や varia...
-
INSERT,DELETEを同時に
-
配列をループさせてUPDATE
-
VB.NET エラーになる箇...
-
php postgres Insert と updat...
-
C#でDBの特定列をUpdate
おすすめ情報