2014-10-20 2 views
1

Я использую ниже команду VBA для извлечения данных с использованием SQL-запроса с использованием ссылки на ячейку в качестве фильтра.Использование ссылки на ячейку в SQL-запросе

Public Sub Run() 

    Dim SQL As String 
    Dim Connected As Boolean 
    Dim server_name As String 
    Dim database_name As String 
    Dim Allocation As String 

    Sheets("Perc").Select 
    Range("A6").Select 
    Selection.CurrentRegion.Select 
    Selection.ClearContents 


    ' Our query 
    SQL = "SELECT Segmentation_ID,MPG,SUM(Segmentation_Percent) AS PERC " & _ 
      "FROM dbo.HFM_ALLOCATION_RATIO " & _ 
      "WHERE Segmentation_ID = " & Sheets("Perc").Range("A1").Value & " " & _ 
      "GROUP BY Segmentation_ID,MPG ORDER BY MPG" 

    ' Connect to the database 
    server_name = Sheets("General").Range("D1").Value 
    database_name = Sheets("General").Range("G1").Value 
    Connected = Connect(server_name, database_name) 

    If Connected Then 
     ' If connected run query and disconnect 
     Call Query(SQL) 
     Call Disconnect 
    Else 
     ' Couldn't connect 
     MsgBox "Could Not Connect!" 
    End If 

End Sub 

Но когда я запускаю макрос, он показывает ошибку времени выполнения

Invalid имя столбца ALO0000274

Здесь ALO0000274 является фильтр я поставил в A1.

Просьба помочь устранить эту ошибку.

ответ

2

Добавить цитаты в свой статье where (вы передаете значение текста, так что вам нужно включить кавычки):

SQL = "SELECT Segmentation_ID,MPG,SUM(Segmentation_Percent) AS PERC " & _ 
     "FROM dbo.HFM_ALLOCATION_RATIO " & _ 
     "WHERE Segmentation_ID = '" & Sheets("Perc").Range("A1").Value & "' " & _ 
     "GROUP BY Segmentation_ID,MPG ORDER BY MPG" 

(Обратите внимание на одинарные кавычки ', которые окружают значение, которое вы хотите фильтровать)

+0

Спасибо, что пропустили одинарные кавычки в моем фильтре ... Я установил кавычки, и я получаю результат ... –

+0

Обратите внимание, что эти одинарные кавычки aren ' t необходимо для числовых значений ... –

+0

@ n8. Пример, представленный в вопросе, - это строка, поэтому нужны цитаты * * ... конечно, вы можете проверить, является ли значение строкой или числом в коде, и включать/исключать кавычки, если необходимо – Barranka

1

Я не вижу, где вы добавляете одиночные кавычки вокруг своей строки. Вы пробовали изменить часть предложения WHERE вашего оператора SQL на "WHERE Segmentation_ID = '" & Sheets("Perc").Range("A1").Value & "' "

+0

Спасибо Одиночные кавычки были проблемой ... –

Смежные вопросы