VBA "INSERT INTO" ошибка - импорт данных из Excel - PullRequest
0 голосов
/ 13 ноября 2018

Я использую код VBA в Excel, чтобы выбрать некоторые данные и вставить их в базу данных Access. Мне нужно это для нескольких столов.

Проблема в том, что для некоторых из этих таблиц я получаю сообщение об ошибке типа «INSERT INTO syntax error». Но если я получу строку, которую код генерирует и использует для вставки, и использую ее в режиме доступа SQL в форме Access, запрос работает просто отлично. Так что это не имеет никакого смысла. Вот часть этого:

For j = 6 To lastrow

            SQLStr = "INSERT INTO TENSILE(REFERENCE, REF_ID, POSITION, RATIO, YSL0, YSL90, YSL180, YSL270, YST0, YST90, YST180, YST270, UTSL0, UTSL90, UTSL180, UTSL270, UTST0, UTST90, UTST180, UTST270, EL0, EL90, EL180, EL270, ET0, ET90, ET180, ET270, ARL0, ARL90, ARL180, ARL270, ART0, ART90, ART180, ART270) SELECT '" & ws3.Cells(j, 1) & "', REF.ID,'" & ws3.Cells(j, 60).Value & "'"

            For i = 61 To 93

                SQLStr = SQLStr & "," & ws3.Cells(j, i).Value

            Next i

            SQLStr = SQLStr & " FROM REF WHERE REF.REFERENCE LIKE '" & ws3.Cells(j, 1) & "'"
            ws3.Cells(7, 3).Value = SQLStr
            MsgBox (SQLStr)
            'rs.Open SQLStr, con, adOpenStatic, adLockOptimistic 'Opening the query


        Next j

важно отметить, что эта же структура используется для других таблиц и работает нормально, как в:

For j = 6 To lastrow

            SQLStr = "INSERT INTO METALOGRAPHY(REFERENCE, REF_ID,  AUSTGRAINSIZE) SELECT '" & ws3.Cells(j, 1) & "',REF.ID ," & ws3.Cells(j, 18).Value & " FROM REF WHERE REF.REFERENCE LIKE '" & ws3.Cells(j, 1) & "'"
            'MsgBox (SQLStr)
            'ws3.Cells(2, 3).Value = SQLStr
            rs.Open SQLStr, con, adOpenStatic, adLockOptimistic 'Opening the query


        Next j

Что не так?

1 Ответ

0 голосов
/ 20 февраля 2019

Рассматривали ли вы возможность изменения вашей связи с БД Access, чтобы вы могли использовать такое выражение, как:

db.execute SQLStr

Это должно решить вашу проблему

...