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

strSQL = strSQL & " FROM[顧客マスタ$] M INNER JOIN [データ$] T "
strSQL = strSQL & " ON M.顧客番号 = T.顧客番号 "

このコードは顧客番号を紐づけしています。
これをさらにテーブルを一つふやして
[売上表$] S として顧客番号を紐づけしたいのですが、
やり方かわかりません。

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

  • へこむわー

    このサイト見ました。しかし、わからなった。
    くやしいです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2018/05/10 08:39

A 回答 (2件)

SELECT句で何を求めているのかわからないので、抽出された全項目を表示します。


新規のBookを作成して試して下さい。
あと接続するブック名.拡張子に注意も。

Sub megu()
    Dim objCn As Object '★参照設定なし版
    Dim objRS As Object '★参照設定なし版
    Dim i As Integer
    Dim strSQL As String

    Set objCn = CreateObject("ADODB.Connection") '★参照設定なし版
    Set objRS = CreateObject("ADODB.Recordset") '★参照設定なし版
  
    With objCn
        .Provider = "Microsoft.ACE.OLEDB.12.0"
        .Properties("Extended Properties") = "Excel 12.0;HDR=YES;" '★HDR(ヘッダー)の扱いに注意
        .Open ThisWorkbook.Path & "\test.xls" '★ブック名.拡張子に注意
    End With

    strSQL = ""
    strSQL = strSQL & " SELECT *" '◆何を求めてるのかわからないので抽出できる物全部にしてます
    strSQL = strSQL & " FROM ([顧客マスタ$] M INNER JOIN [データ$] T" '★シート名に注意!
    strSQL = strSQL & " ON M.顧客番号 = T.顧客番号)"
    strSQL = strSQL & " INNER JOIN [売上表$] S"
    strSQL = strSQL & " ON M.顧客番号 = S.顧客番号;"

    Set objRS = objCn.Execute(strSQL)

    With ActiveSheet '★ActiveSheetを使用
        .Range(.Range("A2"), .Range("A2").SpecialCells(xlLastCell)).ClearContents
        For i = 0 To objRS.Fields.Count - 1
            .Cells(1, i + 1).Value = objRS.Fields(i).Name
        Next
        .Range("A2").CopyFromRecordset objRS
    End With

    objCn.Close
    Set objCn = Nothing
    Set objRS = Nothing
End Sub
    • good
    • 0
この回答へのお礼

やったー
上手くいきました。
有難うございます。

お礼日時:2018/05/14 21:05

http://pgcafe.moo.jp/SQL/main_2.htm

ここのように『2つの表を結合した物に、更に結合を行なう』感じではないかな?(未検証ですけど)
この回答への補足あり
    • good
    • 0

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