Неверный синтаксис рядом с '>>'. Excel VBA считывает файл .SQL с забавными ведущими символами (т. Е. »Выбирает 100 лучших из теста). Проблема с кодировкой - PullRequest
0 голосов
/ 02 мая 2018

У меня проблемы с этим VBA-скриптом, и он, кажется, продолжает добавлять забавные символы (т.е. ») при каждом чтении файла .SQL. Я считаю, что это связано с кодировкой.

 Option Explicit

Sub SomeExtract()

With Application
    .ScreenUpdating = False: .DisplayAlerts = False: .Calculation = xlCalculationManual: .EnableEvents = False
End With

Dim strSQL As String, filePath As String, fileSQL As Integer, row As String
Dim connSQL As ADODB.Connection, serverName As String, databaseName As String, userID As String, userPassword As String, rs As ADODB.Recordset

fileSQL = FreeFile
strSQL = ""
filePath = Application.ThisWorkbook.Path & "\somesql.sql"

Open filePath For Input As fileSQL

Do Until EOF(fileSQL)
    Line Input #fileSQL, row
    strSQL = strSQL & row & vbNewLine
Loop

Close #fileSQL

serverName = "someserver"
databaseName = "somedb"

Set connSQL = New ADODB.Connection
Set rs = New ADODB.Recordset

connSQL.Open "Provider=SQLOLEDB;Server=" & serverName & ";Database=" & databaseName & _
";Trusted_connection=yes;"

rs.Open strSQL, connSQL, adOpenStatic

With ThisWorkbook.Sheets("test").Range("A1:Z1000000")
    .ClearContents
    .CopyFromRecordset rs
End With

With Application
    .ScreenUpdating = True: .DisplayAlerts = True: .Calculation = xlCalculationAutomatic: .EnableEvents = True
End With

 ExitPoint:
    With Application
       .ScreenUpdating = True: .DisplayAlerts = True: .Calculation = 
       xlCalculationAutomatic: .EnableEvents = True
   End With

    Set rs = Nothing
    Exit Sub


ErrHandler:
    With ThisWorkbook
       .Sheets("Control").Range("B1").Value = Err.Description
        .Sheets("Control").Range("C1").Value = strSQL
    End With

Resume ExitPoint

End Sub

Сообщение об ошибке гласит «Ошибка времени выполнения -2147217900 (80040e14)»: неправильный синтаксис рядом с «>>»; ". Файл SQL не имеет >> или других символов, как показано в сообщении об ошибке. На самом деле я заменил .sql, чтобы он содержал только прямую инструкцию SELECT. Но я все еще вижу смешные символы, добавляемые при чтении в Excel VBA (например, «выберите топ 100 * из теста» вместо «выбрать топ 100 * из теста»).

...