Страницы: 1
RSS
Как передать параметр в SQL запрос прописанный в соединениях (Connections)
 
Привет всем. Создал подключение в БД SQL. Таблицу вывел, в подключении прописал небольшой запрос, но идея в том, чтобы в ячейку вводить дату и при нажатии кнопки "Обновить" он в БД искал и выводил заказы именно по этой дате. Помогите плиз
 
Код
select Number AS 'Номер заказа',
SumOrderWeight as 'Количество план ',
SumPickingWeight as 'Подобрано',
date as 'Дата'
 FROM "KS.Chelny"."dbo"."t_PickingOrderHeader"
where Date >=?
order by date, number


Послое появится параметр, который можно указать сославшись на ячейку. Можно поставить галочку обновлять при изменении параметра и тогда и кнопка не потребуется.
Альтернатива тоже есть
Менять в connection строку запроса макросом
Код
Thsworkbook.Connections(1).OLEDBConnection.CommandText= 
Изменено: БМВ - 20.08.2019 13:04:03
По вопросам из тем форума, личку не читаю.
 
Название темы должно отражать проблему.  Предложите новое,  модераторы заменят
 
тема: Как передать параметр в SQL запрос прописанный в соединениях (Connections)
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
Послое появится параметр, который можно указать сославшись на ячейку. Можно поставить галочку обновлять при изменении параметра и тогда и кнопка не потребуется.Альтернатива тоже естьМенять в connection строку запроса макросом
После символа '?' выходит ошибка.  
Изменено: mannan - 23.08.2019 10:00:59
 
Код
Sub Обновить()
ThisWorkbook.Connections(1).OLEDBConnection.CommandText = Cells(F2)
    ActiveWorkbook.RefreshAll
End Sub
Не получается.  
Изменено: mannan - 23.08.2019 09:55:50
 
mannan, Как вы догадываетесь, при отсутствии доступа к базе, проверять не получится. Вы как запрос создавали? Если через MSQuery, то прямо там используете в критерии параметр заключив его в квадратные скобки. >=[Date] . ну и смотрите, что будет на выходе.
По вопросам из тем форума, личку не читаю.
 
Через "С сервера SQL Server".
Изменено: mannan - 23.08.2019 09:55:10
 
Цитата
БМВ написал:
Послое появится параметр, который можно указать сославшись на ячейку.
Привет, Михаил.
А точно параметры работают с
Цитата
БМВ написал:
OLEDBConnection
?
Несколько лет тому назад у меня не получилось это сделать в Excel 2010. По крайней мере с данными из книг Excel параметры в свойствах подключения работали только с ODBC подключением.
 
Андрей VG, Андрей, очень может быть что и не работают, по этому и альтернативу предложил, проверить сейчас никак не могу. Но с учетом того что тема ранее совсем была не в кассу, да и текущая мной предложенная не конкретизирует провайдера, то …..
По вопросам из тем форума, личку не читаю.
 
Цитата
mannan написал:
ThisWorkbook.Connections(1).OLEDBConnection.CommandText = Cells(F2)

ну не так ж е в лоб :-)

Код
With ThisWorkbook.Connections(1)
.OLEDBConnection.CommandText = _
"select Number AS 'Номер заказа',SumOrderWeight as 'Количество план ',SumPickingWeight as 'Подобрано', date as 'Дата'" & vbCr & _
"FROM ""KS.Chelny"".""dbo"".""t_PickingOrderHeader""" & vbCr & _
"where Date >= " & Range("F2") & vbCr & _
"order by date, number"
.refresh
End With
По вопросам из тем форума, личку не читаю.
 
Пока не вписывал дату он ругался на значение перед "order" и выделял .Reflesh. Я так понимаю сейчас он не понимает формат даты?
Изменил формат ячейки на ГГГГ-ММ-ДД, не помогло. Также попробовал с кнопкой с "Элементы управления формы", таже самая ошибка.
Изменено: mannan - 23.08.2019 09:57:57
 
Изменил формат ячейки на ГГГГ-ММ-ДД, не помогло. Также попробовал с кнопкой с "Элементы управления формы", таже самая ошибка.
 
Код
Sub Обновить()
    Dim q As Single
    Dim a As String
    a = Cells(2, 1)
    b = Cells(2, 2)
    With ActiveWorkbook.Connections
        .BackgroundQuery = True
        .CommandText = a & b
        .CommandType = xlCmdSql
        .Connection = Array( _
        
        )
        .RefreshOnFileOpen = False
        .SavePassword = True
        .SourceConnectionFile = ""
        .SourceDataFile = ""
        .ServerCredentialsMethod = xlCredentialsMethodIntegrated
        .AlwaysUseConnectionFile = False

    End With



End Sub
Вот нашел подобный отчет нашего предприятия, ищет по вбитым параметрам ячейки. Может отсюда что получится стянуть, база одна и таже.
Изменено: mannan - 26.08.2019 11:47:39
 
Там тоже есть sql запрос, но он в подключении только.
 
Так пробуйте
Код
With ThisWorkbook.Connections(1)
.OLEDBConnection.CommandText = _
"select Number AS 'Номер заказа',SumOrderWeight as 'Количество план ',SumPickingWeight as 'Подобрано', date as 'Дата'" & vbCr & _
"FROM ""KS.Chelny"".""dbo"".""t_PickingOrderHeader""" & vbCr & _
"where Date >= " & Format(Range("F2"), "\'YYYY-MM-DD\'") & vbCr & _
"order by date, number"
.Refresh
End With



Ну или  YYYY-MM-DD  меняйте DD.MM.YYYY
По вопросам из тем форума, личку не читаю.
 
mannan, вернитесь, сами приведите свои сообщения в порядок.
При цитировании тоже нужно думать.
Код в сообщениях следует офрмлять с помощью кнопки <...>

Помощь скрыта до устранения замечанй.
 
Off vikttur, Вить можно не скрывать , она уже прочитана. Про оформление в личке я уже написал.
Цитата
Цитата
Цитата

Цитата
Спасибо. Помогло. Почему то мне доступ на сообщения на стене закрыли.
Закрыли по тому что некорректно оформляли сообщения.
Хм, я писал как понимаю. Не понял, что такого.
Зачем подряд три сообщение? их можно дополнять
Почему код не оформлен тегами?
Зачем цитата с кодом?
Вам повезло что ответил я пред закрытием, а не после.  
Изменено: БМВ - 21.08.2019 15:22:19
По вопросам из тем форума, личку не читаю.
 
если автор имеет  уважение к другим посетителям, придет и поправит...
Страницы: 1
Наверх