пробел во имя таблицы sql - PullRequest
       0

пробел во имя таблицы sql

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

макрос ниже экспортирует данные в таблицы SQL, когда имя таблицы не имеет пробела, оно работает идеально, но если имя имеет пробел, оно блокируется,

блокируется на rs.Openline tableName, Cn, adOpenKeyset, adLockOptimistic

Я пытался перехватить [...] апостроф '...' и ..., но ничего не работает `

Sub Injection()


Dim Cn As ADODB.connection    
Dim ServerName As String    
Dim DatabaseName As String    
Dim tableName As String    
Dim UserID As String    
Dim Password As String    
Dim rs As ADODB.recordset    

ServerName = "vmalsdisdb"
DatabaseName = "Produits"
tableName = "PRELEVEMENT PRODUIT"
UserID = ""
Password = ""


Set rs = New ADODB.recordset


Set Cn = New ADODB.connection
Cn.Open "Driver={SQL Server};Server=" & ServerName & ";Database=" & DatabaseName & _
";Uid=" & UserID & ";Pwd=" & Password & ";"


rs.Open tableName, Cn, adOpenKeyset, adLockOptimistic`

Ответы [ 2 ]

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

спасибо всем за ваши ответы, проблема была не в том, чтобы беспокоиться в пространстве, но в одной из таблиц я смог обойти проблему, заменив тип курсора "adOpenKeyset" на "adOpenDynamic", но его понимание проблемы можетМожет быть, что другой пользователь работал на столе?!

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

Странно!В моем тестовом сценарии он отлично работает!

Sub ADOExcelSQLServer()
     '
     ' FOR THIS CODE TO WORK
     ' In VBE you need to go Tools References and check Microsoft Active X Data Objects 2.x library
     '

    Dim Cn As ADODB.Connection
    Dim Server_Name As String
    Dim Database_Name As String
    Dim User_ID As String
    Dim Password As String
    Dim SQLStr As String
    Dim rs As ADODB.Recordset
    Set rs = New ADODB.Recordset

    Server_Name = "EXCEL-PC\SQLEXPRESS" ' Enter your server name here
    Database_Name = "Test Method" ' Enter your database name here
    User_ID = "" ' enter your user ID here
    Password = "" ' Enter your password here
    SQLStr = "SELECT * FROM [mytable]" ' Enter your SQL here

    Set Cn = New ADODB.Connection
    Cn.Open "Driver={SQL Server};Server=" & Server_Name & ";Database=" & Database_Name & _
    ";Uid=" & User_ID & ";Pwd=" & Password & ";"

    rs.Open SQLStr, Cn, adOpenStatic
     ' Dump to spreadsheet
    For iCols = 0 To rs.Fields.Count - 1
        Worksheets("Sheet1").Cells(1, iCols + 1).Value = rs.Fields(iCols).Name
    Next
    With Worksheets("sheet1").Range("a2:z500") ' Enter your sheet name and range here
        '.ClearContents
        .CopyFromRecordset rs
    End With
     '            Tidy up
    rs.Close
    Set rs = Nothing
    Cn.Close
    Set Cn = Nothing
End Sub

Полагаю, вы можете использовать тройные кавычки вокруг любых «странных» соглашений об именах, таких как пробелы в именах или специальные символы в именах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...