アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。
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

上記の最終行のところで「クエリが複雑すぎます」でエラーになります。
すべてのクエリの重複しないデータを取得する方法はないでしょうか?
よろしくお願い致します。

A 回答 (4件)

うーんんn


当方の環境(Office2010 Pro)では
C:\Program Files (x86)\Common Files\System\ado\msjro.dll
にファイルが有り(これがJro.JetEngineの実体です)
参照設定のリストでも
Microsoft Jet and Replication Objects 2.6Library として選択できるのですが
なぜ、そちらでオブジェクト作成失敗のエラーになるのか・・・
力不足ですみません。
もっとも、作成に成功していたとしても当初の問題が解決できる保証もなく・・・。
この辺が私の限界です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。こちらのPCにもJro.JetEngineの実体のファイルはあるのですが。。詳しく調べていきたいと思います。大変勉強になりました。ありがとうございました。

お礼日時:2015/08/08 11:26

ひとつずつ実行して行くと問題ない。


クエリの連投をしているようなのでキャッシュの問題かも?

オブジェクトの宣言を行って
Dim JE As Object
Set JE = CreateObject("JRO.JetEngine")
・・・・
JE.RefreshCache dbCon 'キャッシュの更新
dbRes.Open sql, dbCon, adOpenStatic, adLockPessimistic

Set JE=nothing '解放

のようにキャッシュの更新を挟み込んでみるとどうでしょう?
位置が適切なのか、一か所で十分なのかは残念ながら不明です。
    • good
    • 0
この回答へのお礼

ご回答頂き、ありがとうございます。
現在、標準モジュールにAccess接続・データ取得用のものを作成し、渡したSQL文を処理させる構造にしているため、そのモジュールの最初の部分に教えて頂いたオブジェクト宣言を記載し、実行してみました。Set JE = CreateObject("JRO.JetEngine")のところで「ActiveXコンポーネントはオブジェクトを作成できません」のエラーが表示されます。原因がわからない状態でおります。もしよろしければ教えて頂けないでしょうか?

お礼日時:2015/08/07 16:19

では


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接続でも同様かと?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
SQLビューに貼り付け実行したところ、クエリが複雑すぎますとエラーがでました。教えて頂いた不適切な文字の使用がないか確認してみました。作成したクエリを一つずつ実行するとシートビューに切り替えられるようです。

お礼日時:2015/08/05 08:56

投稿時のタイプミス?


DISTINCT *
に全角スペースが入っているのが気になります。
    • good
    • 0
この回答へのお礼

nicotinismmさん、ご指摘ありがとうございます。
タイプミスでした。すみません。
半角スペースで行ってみても同じエラー内容でした。
宜しくお願い致します。

お礼日時:2015/08/04 17:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!