質問編集履歴
3
修正
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -35,7 +35,7 @@ | |
| 35 35 |  | 
| 36 36 | 
             
            '** レコード処理
         | 
| 37 37 | 
             
            ###この下の行で実行エラーが発生する
         | 
| 38 | 
            -
              cn.Execute "INSERT INTO TRN_AUTOCAD VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', 1-00-4467102610431)"
         | 
| 38 | 
            +
              cn.Execute "INSERT INTO TRN_AUTOCAD VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', '1-00-4467102610431')"
         | 
| 39 39 |  | 
| 40 40 | 
             
            '** トランザクション終了
         | 
| 41 41 | 
             
              cn.CommitTrans
         | 
| @@ -48,23 +48,29 @@ | |
| 48 48 | 
             
            #わかったこと
         | 
| 49 49 | 
             
            上記に記入したプログラムのINSERTの部分をクエリツールで実行してみたところ。
         | 
| 50 50 | 
             
            ```SQL
         | 
| 51 | 
            -
            before:INSERT INTO TRN_AUTOCAD VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', 1-00-4467102610431)
         | 
| 51 | 
            +
            before:INSERT INTO TRN_AUTOCAD VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', '1-00-4467102610431')
         | 
| 52 52 |  | 
| 53 | 
            -
            after:INSERT INTO "TRN_AUTOCAD" VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', 1-00-4467102610431)
         | 
| 53 | 
            +
            after:INSERT INTO "TRN_AUTOCAD" VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', '1-00-4467102610431')
         | 
| 54 54 |  | 
| 55 55 | 
             
            ```
         | 
| 56 56 | 
             
            このようにして、**テーブルにダブルコーテーションしなくてはいけない**ことが分かりました。
         | 
| 57 57 | 
             
            なので、上記をVBA側にうまく変換して挑戦してみようと思いました。
         | 
| 58 58 | 
             
            ```VBA
         | 
| 59 | 
            -
            cn.Execute "INSERT INTO 'TRN_AUTOCAD'(CONSTRUCTION_NO, PAGE_START, PAGE_END, STONE_NO, HEIGHT, WIDTH, THICKNESS, STATUS, P_ID) VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認',  | 
| 59 | 
            +
            cn.Execute "INSERT INTO 'TRN_AUTOCAD'(CONSTRUCTION_NO, PAGE_START, PAGE_END, STONE_NO, HEIGHT, WIDTH, THICKNESS, STATUS, P_ID) VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', '1-00-4467102610431')"
         | 
| 60 60 | 
             
            ```
         | 
| 61 61 | 
             
            文字列にするために、シングルクォーテーションで括りました。
         | 
| 62 | 
            +
            そして、いろんな方からテーブルの列の名前を追加するといいといわれたため、
         | 
| 63 | 
            +
            それも追加しました。
         | 
| 62 64 | 
             
            結果は
         | 
| 63 65 | 
             
            ```Error
         | 
| 64 66 | 
             
            構文エラー:"TRN_AOTOCAD"周辺で構文エラーです。
         | 
| 65 67 | 
             
            ```
         | 
| 66 68 | 
             
            と表示されるようになりました。
         | 
| 67 69 |  | 
| 70 | 
            +
            **pgAdmin側で、列の名前を追加したものを実行してみたところ、**
         | 
| 71 | 
            +
            **構文エラーが出たので、列の名前を記入しない方がpgAdmin側ではうまくいきました。**
         | 
| 72 | 
            +
             | 
| 73 | 
            +
             | 
| 68 74 | 
             
            ほかにもいろいろと試しました。
         | 
| 69 75 |  | 
| 70 76 | 
             
            #接続時にdbnameの追加する
         | 
| @@ -79,8 +85,8 @@ | |
| 79 85 | 
             
            #{接続先DB名}やpublicと付け足す
         | 
| 80 86 |  | 
| 81 87 | 
             
            ```VBA
         | 
| 82 | 
            -
            cn.Execute "INSERT INTO public.TRN_AUTOCAD(CONSTRUCTION_NO, PAGE_START, PAGE_END, STONE_NO, HEIGHT, WIDTH, THICKNESS, STATUS, P_ID) VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認',  | 
| 88 | 
            +
            cn.Execute "INSERT INTO public.TRN_AUTOCAD(CONSTRUCTION_NO, PAGE_START, PAGE_END, STONE_NO, HEIGHT, WIDTH, THICKNESS, STATUS, P_ID) VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', '1-00-4467102610431');"
         | 
| 83 89 |  | 
| 84 | 
            -
            cn.Execute "INSERT INTO {接続先DB名}.TRN_AUTOCAD(CONSTRUCTION_NO, PAGE_START, PAGE_END, STONE_NO, HEIGHT, WIDTH, THICKNESS, STATUS, P_ID) VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認',  | 
| 90 | 
            +
            cn.Execute "INSERT INTO {接続先DB名}.TRN_AUTOCAD(CONSTRUCTION_NO, PAGE_START, PAGE_END, STONE_NO, HEIGHT, WIDTH, THICKNESS, STATUS, P_ID) VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', '1-00-4467102610431');"
         | 
| 85 91 | 
             
            ```
         | 
| 86 92 | 
             
            ダメでした。
         | 
2
やってみたことの追加
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -54,8 +54,33 @@ | |
| 54 54 |  | 
| 55 55 | 
             
            ```
         | 
| 56 56 | 
             
            このようにして、**テーブルにダブルコーテーションしなくてはいけない**ことが分かりました。
         | 
| 57 | 
            -
             | 
| 57 | 
            +
            なので、上記をVBA側にうまく変換して挑戦してみようと思いました。
         | 
| 58 | 
            +
            ```VBA
         | 
| 59 | 
            +
            cn.Execute "INSERT INTO 'TRN_AUTOCAD'(CONSTRUCTION_NO, PAGE_START, PAGE_END, STONE_NO, HEIGHT, WIDTH, THICKNESS, STATUS, P_ID) VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', `1-00-4467102610431`)"
         | 
| 60 | 
            +
            ```
         | 
| 61 | 
            +
            文字列にするために、シングルクォーテーションで括りました。
         | 
| 62 | 
            +
            結果は
         | 
| 58 63 | 
             
            ```Error
         | 
| 59 64 | 
             
            構文エラー:"TRN_AOTOCAD"周辺で構文エラーです。
         | 
| 60 65 | 
             
            ```
         | 
| 61 | 
            -
            と表示されるようになりました。
         | 
| 66 | 
            +
            と表示されるようになりました。
         | 
| 67 | 
            +
             | 
| 68 | 
            +
            ほかにもいろいろと試しました。
         | 
| 69 | 
            +
             | 
| 70 | 
            +
            #接続時にdbnameの追加する
         | 
| 71 | 
            +
            ```VBA
         | 
| 72 | 
            +
            '** ODBC 接続
         | 
| 73 | 
            +
              Set cn = CreateObject("ADODB.Connection")
         | 
| 74 | 
            +
              cn.Open "dsn=XXX;uid=XXX;pwd=XXX;dbname=XXX"
         | 
| 75 | 
            +
            ```
         | 
| 76 | 
            +
             | 
| 77 | 
            +
            ダメでした。
         | 
| 78 | 
            +
             | 
| 79 | 
            +
            #{接続先DB名}やpublicと付け足す
         | 
| 80 | 
            +
             | 
| 81 | 
            +
            ```VBA
         | 
| 82 | 
            +
            cn.Execute "INSERT INTO public.TRN_AUTOCAD(CONSTRUCTION_NO, PAGE_START, PAGE_END, STONE_NO, HEIGHT, WIDTH, THICKNESS, STATUS, P_ID) VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', `1-00-4467102610431`);"
         | 
| 83 | 
            +
             | 
| 84 | 
            +
            cn.Execute "INSERT INTO {接続先DB名}.TRN_AUTOCAD(CONSTRUCTION_NO, PAGE_START, PAGE_END, STONE_NO, HEIGHT, WIDTH, THICKNESS, STATUS, P_ID) VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', `1-00-4467102610431`);"
         | 
| 85 | 
            +
            ```
         | 
| 86 | 
            +
            ダメでした。
         | 
1
わかったことの追加
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -43,4 +43,19 @@ | |
| 43 43 | 
             
            '** ODBC 接続解除
         | 
| 44 44 | 
             
              cn.Close
         | 
| 45 45 | 
             
            End Function
         | 
| 46 | 
            -
            ```
         | 
| 46 | 
            +
            ```
         | 
| 47 | 
            +
             | 
| 48 | 
            +
            #わかったこと
         | 
| 49 | 
            +
            上記に記入したプログラムのINSERTの部分をクエリツールで実行してみたところ。
         | 
| 50 | 
            +
            ```SQL
         | 
| 51 | 
            +
            before:INSERT INTO TRN_AUTOCAD VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', 1-00-4467102610431)
         | 
| 52 | 
            +
             | 
| 53 | 
            +
            after:INSERT INTO "TRN_AUTOCAD" VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', 1-00-4467102610431)
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            ```
         | 
| 56 | 
            +
            このようにして、**テーブルにダブルコーテーションしなくてはいけない**ことが分かりました。
         | 
| 57 | 
            +
            しかし、実行してみると
         | 
| 58 | 
            +
            ```Error
         | 
| 59 | 
            +
            構文エラー:"TRN_AOTOCAD"周辺で構文エラーです。
         | 
| 60 | 
            +
            ```
         | 
| 61 | 
            +
            と表示されるようになりました。
         | 
