
クライアントのデータベースが入っているエクセルファイルを参照して請求書を作るマクロなのですが、検索画面に任意の文字を入れて検索をかけると「実行時エラー1004 一般ODBCエラー」とでます。デバックをすると「.Refresh BackgroundQuery:=False」のところでエラーの黄色いハイライトがでてしまいます。ネット上に存在する同じような質問の回答で「IEの一時ファイルと履歴を削除したり、一時ファイルの容量を増やすとなぜか直る場合がある」とありましたが、もちろん直りませんでした。。
長いので2回に分けて貼りたいと思います。
どなたかご教授宜しくお願い致します。
Private Sub CommandButton1_Click()
Worksheets("Temp").Cells.ClearContents
With Worksheets("Temp").QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=Excel Files;DBQ=" & Range("データベースファイルパス").Value & ";DefaultDir=" & Range("デフォルトフォルダ").Value & ""), Array(";DriverId=790;MaxBufferSize=2048;PageTimeout=5;")), Destination:= _
Worksheets("Temp").Range("A1"))
.CommandText = Array( _
"SELECT ", _
" プロジェクトデータ.`PSFT ID`,", _
" プロジェクトデータ.プロジェクト概要,", _
" プロジェクトデータ.`担当者名(日本語)`,", _
" プロジェクトデータ.PIC,", _
" 会社マスタ.略称,", _
" 会社マスタ.`会社名(日本語名)`, ", _
" プロジェクトデータ.`アルファベットプロジェクト名` ", _
"FROM `" & Range("データベースファイルパス").Value & "`.`プロジェクトデータ$` プロジェクトデータ, ", _
" `" & Range("データベースファイルパス").Value & "`.`会社マスタ$` 会社マスタ ", _
"WHERE プロジェクトデータ.会社ID = 会社マスタ.会社ID AND ", _
"((会社マスタ.略称 like '%" & UserForm1.TextBox1.Value & "%') OR (会社マスタ.`会社名(フリガナ)` like '%" & UserForm1.TextBox1.Value & "%')", _
" OR (会社マスタ.`会社名(日本語名)` like '%" & UserForm1.TextBox1.Value & "%') ", _
" OR (会社マスタ.`会社名(英語)` like '%" & UserForm1.TextBox1.Value & "%') ", _
" OR (プロジェクトデータ.`PIC` like '%" & UserForm1.TextBox1.Value & "%') ", _
" OR (プロジェクトデータ.`プロジェクト概要` like '%" & UserForm1.TextBox1.Value & "%') ", _
" OR (プロジェクトデータ.`アルファベットプロジェクト名` like '%" & UserForm1.TextBox1.Value & "%') ", _
" ) ", _
" AND プロジェクトデータ.登録ステータス not in ('廃止','登録申請') ")
.Name = "Excel Files からのクエリ"
続きはこちらです。見づらくて本当すみません。
http://okwave.jp/qa/q6559798.html
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
No1です。
おそくなりましたが、
"SELECT " & _
"プロジェクトデータ.`PSFT ID`, " & _
"プロジェクトデータ.プロジェクト概要, " & _
"プロジェクトデータ.`担当者名(日本語)`, " & _
"プロジェクトデータ.PIC, " & _
"会社マスタ.略称, " & _
"会社マスタ.`会社名(日本語名)`, " & _
"プロジェクトデータ.`アルファベットプロジェクト名`" & _
"FROM `" & Range("データベースファイルパス").Value & "`.`プロジェクトデータ$`.プロジェクトデータ " & _
"INNER JOIN `" & Range("データベースファイルパス").Value & "`.`会社マスタ$`.会社マスタ " & _
"ON プロジェクトデータ.会社ID = 会社マスタ.会社ID" & _
"WHERE ( " & _
" ((会社マスタ.略称) Like '%" & UserForm1.TextBox1.Value & "%') OR " & _
" ((会社マスタ.`会社名(日本語名)`) Like '%" & UserForm1.TextBox1.Value & "%') OR " & _
" ((会社マスタ.`会社名(フリガナ)`) Like '%" & UserForm1.TextBox1.Value & "%') OR " & _
" ((会社マスタ.`会社名(英語)`) Like '%" & UserForm1.TextBox1.Value & "%') OR " & _
" ((プロジェクトデータ.PIC) Like '%" & UserForm1.TextBox1.Value & "%') OR " & _
" ((プロジェクトデータ.プロジェクト概要) Like '%" & UserForm1.TextBox1.Value & "%') OR " & _
" ((プロジェクトデータ.`アルファベットプロジェクト名`) Like '%" & UserForm1.TextBox1.Value & "%')" & _
") AND ((プロジェクトデータ.登録ステータス) In ("廃止","登録申請"));"
ではどうでしょうか?
すべて同じ環境を作成する手間まではちょっとないため、ACCESSでSQL文を生成し、加工しました。
解決してたらごめんなさい。
No.2
- 回答日時:
SQLは長いので見る時間はありませんが、
生成したSQLをDEBUG.PRINTで表示させ、
構文は正しいのか、"や'など不正はないか、NULL値でおかしいところはないか。
ODBC接続は問題ないか。
select・・・from・・・・
ができたら
select・・・from・・・・where・・・
だし
select・・・from・・・・where・・・
の各値を変数化していくし、で、
どこまで確認とれて、いざ実施していますか?。
いきなりこれだけ長いSQL文を書いて
1回目にて問題なくできるかどうかも怪しいのですが・・・。
いきなりこれだけ長いSQL文を書いて失敗しているのなら
やり方も工夫した方が良いと思います。
No.1
- 回答日時:
『.CommandText = Array( _
"SELECT ", _』
でSQL文を分解して引数でセットしていますが・・・
.CommandTextはSQL文なので配列では動作しないと思いますよ。
下記ではどうでしょう?
.CommandText = "SELECT " & _
" プロジェクトデータ.`PSFT ID`," & _
" プロジェクトデータ.プロジェクト概要," & _
" プロジェクトデータ.`担当者名(日本語)`," & _
" プロジェクトデータ.PIC," & _
" 会社マスタ.略称," & _
" 会社マスタ.`会社名(日本語名)`, " & _
" プロジェクトデータ.`アルファベットプロジェクト名` " & _
"FROM `" & Range("データベースファイルパス").Value & "`.`プロジェクトデータ$` プロジェクトデータ, " & _
" `" & Range("データベースファイルパス").Value & "`.`会社マスタ$` 会社マスタ " & _
"WHERE プロジェクトデータ.会社ID = 会社マスタ.会社ID AND " & _
"((会社マスタ.略称 like '%" & UserForm1.TextBox1.Value & "%') OR (会社マスタ.`会社名(フリガナ)` like '%" & UserForm1.TextBox1.Value & "%')" & _
" OR (会社マスタ.`会社名(日本語名)` like '%" & UserForm1.TextBox1.Value & "%') " & _
" OR (会社マスタ.`会社名(英語)` like '%" & UserForm1.TextBox1.Value & "%') " & _
" OR (プロジェクトデータ.`PIC` like '%" & UserForm1.TextBox1.Value & "%') " & _
" OR (プロジェクトデータ.`プロジェクト概要` like '%" & UserForm1.TextBox1.Value & "%') " & _
" OR (プロジェクトデータ.`アルファベットプロジェクト名` like '%" & UserForm1.TextBox1.Value & "%') " & _
" ) " & _
" AND プロジェクトデータ.登録ステータス not in ('廃止','登録申請') "
はずしてたらすみません。
(SQL文の内容は確認してませんがプロジェクトデータと会社マスタのFROM句ってこれでよかったでしたっけ?)
素早い回答ありがとうございます。
コピペして使用してみましたが、同じエラーが出ました。。。
お手数おかけしますが、引き続き宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EclipseのF3で宣言を開けないで...
-
キックオフ・・
-
プロジェクトとワーキングの違い
-
「委員会」「ワーキンググルー...
-
なぜ東方プロジェクトの人気投...
-
「意図と目的」の違いとは?
-
ACCESS フォームからサブフォ...
-
骨子の後って?
-
システム開発の規模に関する大...
-
EXCEL VBA 1004 一般ODBCエラー1
-
業務上知り得た情報の取り扱い...
-
人間社会で 有能なのに排除され...
-
ITベンダとSIベンダとSIerの違...
-
話に割り込んでくる人への対応...
-
うつ病になってしまい、新卒で...
-
嫌いな上司との出張
-
メモを見返さない人
-
私は仕事ができない国家公務員...
-
「残存能力」と「潜在的能力」...
-
IT業界はほかの業界に較べて、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EclipseのF3で宣言を開けないで...
-
「委員会」「ワーキンググルー...
-
キックオフ・・
-
失敗しないで成功する方法
-
プロジェクトとワーキングの違い
-
EXCEL VBA 1004 一般ODBCエラー1
-
ACCESS フォームからサブフォ...
-
なぜ東方プロジェクトの人気投...
-
「意図と目的」の違いとは?
-
IT表現の確認
-
ISO取得のための書類「PJ...
-
imovie`08を使っています
-
プロジェクト管理ツール
-
プロジェクトの進め方について
-
プロジェクトリーダは無能なエ...
-
客先の入館証を紛失し、契約取...
-
英文の日本語訳をお願いします!
-
ジェントルとは
-
MS Officeを使ってプロジェクト...
-
システム開発の規模に関する大...
おすすめ情報