powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите прописать переменную (дата) в SQL запросе для VBA
13 сообщений из 13, страница 1 из 1
Помогите прописать переменную (дата) в SQL запросе для VBA
    #38653139
Ser123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Суть проблемы:

В ячейке A1 находится запрос вида:

Код: sql
1.
 "select date_proc from HARD_RESULT where date_proc >= '" + CStr(dateRAB) + "' and id = '157155'"


, где dateRAB - переменная, которая содержит значение '26.05.2014'.

При выполнении макроса:

Код: vbnet
1.
2.
sSQL = Worksheets("SQL").Cells(1, 1).Value
rst.Open sSQL, cnn, adOpenStatic, adLockReadOnly, adCmdText



выдаётся ошибка: "[Microsoft][SQL Server Native Client 10.0][SQL Server] Ошибка преобразования даты или времени из символьной строки"

Если выпоснять макрос в таком виде:

Код: vbnet
1.
2.
sSQL = " select date_proc from HARD_RESULT where date_proc >= '" + CStr(dateRAB) + "' and id = '157155' "
rst.Open sSQL, cnn, adOpenStatic, adLockReadOnly, adCmdText




то ошибки нет.

Помогите решить задачу.
...
Рейтинг: 0 / 0
Помогите прописать переменную (дата) в SQL запросе для VBA
    #38653151
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какого типа переменная dateRAB? какого типа поле date_proc в базе?
если Date, то:

Код: vbnet
1.
sSQL = " select date_proc from HARD_RESULT where date_proc >= #" + Format$(dateRAB, "mm\/dd\/yyyy") + "# and id = '157155' "
...
Рейтинг: 0 / 0
Помогите прописать переменную (дата) в SQL запросе для VBA
    #38653155
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дополнительный вопрос - в таблице HARD_RESULT какого типа поле id?
...
Рейтинг: 0 / 0
Помогите прописать переменную (дата) в SQL запросе для VBA
    #38653202
Ser123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

выполнение запроса происходит из базы MS SQL,
dateRAB - дата, date_proc - дата, id - текст

проблема в том, что из VBA, мой запрос выполняется, а если текст запроса брать с ячейки листа, то выдаёт вышеописаную ошибку.
проверил исправленный запрос, ошибка: "оператор SQL выполняется напрямую; без курсора"
...
Рейтинг: 0 / 0
Помогите прописать переменную (дата) в SQL запросе для VBA
    #38653243
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ser123если текст запроса брать с ячейки листатак чему равна переменная sSQL непосредственно перед выполнением запроса?

Код: vbnet
1.
2.
3.
sSQL = Worksheets("SQL").Cells(1, 1).Value
Debug.Print sSQL
rst.Open sSQL, cnn, adOpenStatic, adLockReadOnly, adCmdText
...
Рейтинг: 0 / 0
Помогите прописать переменную (дата) в SQL запросе для VBA
    #38653330
studieren
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ser123,

Если запрос отправляете в MS SQL Server, то формат даты должен быть таким
'yyyymmdd'
...
Рейтинг: 0 / 0
Помогите прописать переменную (дата) в SQL запросе для VBA
    #38653345
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
studierenдолжен бытьникому он не должен. Можно отправить в том формате, в каком он будет корректно распознан. Я шлю в формате 'yyyy-mm-dd'

Действительно, в первом посте я не заметил, что у автора MSSQL, написал для JET, приношу извинения.

В любом случае, мне кажется, у автора сейчас проблема в другом - он думал, что содержимое переменной волшебным образом подставится в строку запроса, и сейчас он понял, что проблема не там, ждем результата.
...
Рейтинг: 0 / 0
Помогите прописать переменную (дата) в SQL запросе для VBA
    #38653442
Ser123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proтак чему равна переменная sSQL непосредственно перед выполнением запроса?

Код: vbnet
1.
Debug.Print sSQL



перед выполнение запроса, если выполнять из VBA кода :

Код: vbnet
1.
select date_proc from HARD_RESULT where date_proc >= '26.05.2014' and id = '157155'




если брать из ячейки листа:

Код: vbnet
1.
select date_proc from HARD_RESULT where date_proc >= '" + CStr(dateRAB) + "' and id = '157155'



по каким то причинам переменная dateRAB в запросе не распознаётся, если текст запроса брать из ячейки..
как заставить работать макрос..
...
Рейтинг: 0 / 0
Помогите прописать переменную (дата) в SQL запросе для VBA
    #38653576
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ser123по каким то причинама по каким причинам она должна распознаваться, интересно?

в ячейку:
Код: sql
1.
select date_proc from HARD_RESULT where date_proc >= '%dateRAB%' and id = '157155'



код:
Код: vbnet
1.
2.
3.
sSQL = Worksheets("SQL").Cells(1, 1).Value
sSQL = Replace(sSQL, "%dateRAB%", Format$(dateRAB, "yyyy-mm-dd"))
rst.Open sSQL, cnn, adOpenStatic, adLockReadOnly, adCmdText
...
Рейтинг: 0 / 0
Помогите прописать переменную (дата) в SQL запросе для VBA
    #38653586
studieren
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TO: Ser123
Код: vbnet
1.
select date_proc from HARD_RESULT where date_proc >= '" + Format(dateRAB, "yyyymmdd") + "' and id = '157155'



Shocker.Pro...
никому он не должен. Можно отправить в том формате, в каком он будет корректно распознан. Я шлю в формате 'yyyy-mm-dd'
Не согласен с Вами. Формат даты 'yyyymmdd' универсальный для MS SQL Server. Любые другие форматы уже зависят от серверных/клиентских настроек и иногда сервер может отказать принимать как дата.
...
Рейтинг: 0 / 0
Помогите прописать переменную (дата) в SQL запросе для VBA
    #38653591
studieren
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
studierenTO: Ser123
Код: vbnet
1.
select date_proc from HARD_RESULT where date_proc >= '" + Format(dateRAB, "yyyymmdd") + "' and id = '157155'


...
P.S.
Я не знаю что такое "dateRAB" здесь. Я лишь предполагаю, что это VBA функцию, которая возвращает дату.
...
Рейтинг: 0 / 0
Помогите прописать переменную (дата) в SQL запросе для VBA
    #38653628
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
studieren, есть ANSI-формат даты: yyyy-mm-dd hh:nn:ss - он будет распознан в любом случае
...
Рейтинг: 0 / 0
Помогите прописать переменную (дата) в SQL запросе для VBA
    #38653645
Ser123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Код: vbnet
1.
sSQL = Replace(sSQL, "%dateRAB%", Format$(dateRAB, "yyyy-mm-dd"))



Replace - хорошая идея! помогло, спасибо!
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите прописать переменную (дата) в SQL запросе для VBA
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]