プロが教える店舗&オフィスのセキュリティ対策術

strSQL = ""
strSQL = strSQL & " SELECT S.顧客番号, S.顧客名" ←なんとなくいいと思うがs.の意味?
任意でつけてもいいと認識している

strSQL = strSQL & " FROM" たぶんあっている

strSQL = strSQL & " [顧客マスタ$]"    ←あっているかも $はシートだと思う

strSQL = strSQL & " ORDER BY S.顧客番号" ←違うとおもう

シート名 顧客マスタ 
顧客番号 顧客名  住所
1     A   東京
2     B   神奈川

ここから A 東京
を取り出したい
シート名 抽出 
教えくれませんでしょぅか

質問者からの補足コメント

  • どう思う?

    テーブル名 s.顧客名ということですね わかりました。シートに顧客名 テーブルにs. だからs.で登録できなかったんですね という事は、この場合え、一列事にテーブルを作るということですか。
    S.顧客名  S住所
    後ドライバですが 最初の段階で接続できたのですから最初めぐさんから頂いたコードでやります。ACEではなく。今から仕事です。終了しだいやりたいですか、残業かな?

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/12/04 08:43

A 回答 (3件)

まず前回の


https://oshiete.goo.ne.jp/qa/10110963.html
ドライバの問題は解決できましたか?

そこは抜きにSQL文のみとしてであれば違いますね。

決定的に違うのは

>←なんとなくいいと思うがs.の意味?
>任意でつけてもいいと認識している

『任意』に勝手につける物ではないと言う事です。
あくまで『存在するテーブル名等を簡潔に書けるよう宣言をした後に使う』のです。
それに今回は使用するテーブルが1つなので、本来は必要ないと思うのですけどね。

あと『A 東京』を取り出すための条件がないのと、
『抽出されるデータは1つなのに、並び替え(ORDER BY)をしている』点ですかね。

strSQL = ""
strSQL = strSQL & " SELECT S.顧客名,S住所"
strSQL = strSQL & " FROM"
strSQL = strSQL & " [顧客マスタ$] As S" ’ここでテーブル名を『S』に置き換える。
strSQL = strSQL & " WHERE S.顧客番号 = 1"

でしょうかね。
この回答への補足あり
    • good
    • 0
この回答へのお礼

Sub test()
Dim objCn As New ADODB.Connection
Dim objRS As ADODB.Recordset
Dim GYO As Long, COL As Long
Dim strSQL As String
With objCn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Extended Properties") = "Excel 8.0"
.Open ThisWorkbook.Path & "\" & ThisWorkbook.Name
End With

strSQL = ""
strSQL = strSQL & " SELECT 顧客名,住所"
strSQL = strSQL & " FROM"
strSQL = strSQL & " [顧客マスタ$] As S" 'ここでテーブル名を『S』に置き換える。
strSQL = strSQL & " WHERE 顧客番号 = 2"

Set objRS = New ADODB.Recordset
Set objRS = objCn.Execute(strSQL)

With Worksheets("集計表")
.Range(.Range("A2"), .Range("A2").SpecialCells(xlLastCell)).ClearContents
.Range("A2").CopyFromRecordset objRS
End With

objCn.Close
Set objCn = Nothing
End Sub

やっとうまくいきました。なんか凄いです。
有難うございました。

お礼日時:2017/12/05 08:42

No.1の回答についてです。



まず

>S.顧客名  S住所

ここはこちらのミスで正しくは

S.顧客名  S.住所

と同じ略されたテーブルのフィールド(1行目の項目名)になりますね。

でも本来はテーブルが1つだけなので As S をなくして、顧客名や住所だけで良いのですけどね。

>後ドライバですが 最初の段階で接続できたのですから

接続は出来たけどRecordsetで「1つ以上の必要なパラメータの値が設定されていません」と出るようであれば、
http://www.excel.studio-kazu.jp/kw/2015101513400 …
https://qiita.com/yaju/items/86314412741deb806366
あたりも見てみてください。
    • good
    • 0

>strSQL = strSQL & " [顧客マスタ$]"    ←あっているかも $はシートだと思う



要は
Sheet名+"$" を [] 内に書き入れるという事です。
文字列の連結としてみれば理解しやすいかな?
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す