Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
 Проблема с date в VBA  [new]
Автор123
Guest
Исходя из FAQ по формированию строки sql использую следующее: #" & Format([бд]![Внутренний заказДата],"mm\/dd\/yyyy") & "#
В запросе, созданным в конструкторе, работает нормально, но копируя код в VBA появляется ошибка 2465 “не удается найти поле”, пробовал с разными полями в разных базах, т.е. ошибка в синтаксисе, но перепробовав различные варианты, не смог ее найти. Поиск не помог.
Dim q As Date
q = Now
с подстановкой q вместо [бд]![Внутренний заказДата] не помогает также.
Как правильно писать в vba #" & Format([бд]![Внутренний заказДата],"mm\/dd\/yyyy") & "#. Спасибо.
25 сен 12, 11:35    [13217454]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
askerli
Member

Откуда: Баку
Сообщений: 598
Автор123,

пробовали использовать одинарные кавычки вместо двойных?
25 сен 12, 11:42    [13217501]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Автор123
Guest
Если менять какие-то одни, vba ругается и краснеет, если все 4 - ошибка синтаксиса.
25 сен 12, 11:47    [13217541]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
askerli
Member

Откуда: Баку
Сообщений: 598
Автор123,

покажите ту часть кода, где образуется скл строка полностью и где вба становится стыдно настолько, что она краснеет ))))
25 сен 12, 11:56    [13217627]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Agapov_stas
Member

Откуда:
Сообщений: 396
Автор123,
Я так подозреваю, что Вы делаете несколько иное...
Два примера для размышлений:

'Пример 1
Dim q As Date
q = Now
MsgBox Format(q, "\#dd\/mm\/yyyy\#")


'Пример 2
Dim q As Date
Dim strSQL As String
q = Now
strSQL = " SELECT * FROM tbl WHERE DateBegin >= #" & Format(q, "dd\/mm\/yy") & "# "
MsgBox strSQL
25 сен 12, 12:04    [13217722]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Автор123
Guest
Пример, в конструкторе работает, vba нет.
DoCmd.RunSQL "UPDATE бд SET бд.Прим2 = DSum('[Количество]','[бдп]','[бдп]![Внутренний заказДата]=#" & Format([бд]![Внутренний заказДата], "mm\/dd\/yyyy") & "#') WHERE (((бд.Количество)=1));"
25 сен 12, 12:07    [13217757]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
alvk.
Member [заблокирован]

Откуда: г.Находка
Сообщений: 446
Автор123,

у меня это выражение красным не выделяет.
25 сен 12, 12:14    [13217848]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Анатолий ( Киев )
Guest
Ну, во-первых короче и красивше выглядит строка:
Format([бд]![Внутренний заказДата],"\#mm\/dd\/yyyy\#")
Во-вторых кавычки внутри текстовой константы должны быть продублированы, а в случае с SQL строкой могут быть заменены на апострофы.
Т.е. запрос в виде:
sSQL = "SELECT ... WHERE [Поле]=Format(Now(),""\#mm\/dd\/yyyy\#"")"
или
sSQL = "SELECT ... WHERE [Поле]=Format(Now(),'\#mm\/dd\/yyyy\#')"
или
q = Now
sSQL = "SELECT ... WHERE [Поле]=Format(" q ",'\#mm\/dd\/yyyy\#')"
работать будет.
А вот если вместо Now() указать [бд]![Внутренний заказДата], то будет работать, если таблица "бд" включена в раздел FROM запроса.
25 сен 12, 12:18    [13217891]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Автор123
Guest
Есть у меня подозрение, что дело может быть в разных версиях (Access 2010, Vba 7.0), но скорее всего просто пишу с ошибкой.
Agapov_stas, не понял Вашу мысль, в обоих случаях выводит #25/09/2012#
alvk., Вы все 4 " меняете на ' или только пару?
25 сен 12, 12:30    [13218008]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Автор123
Guest
Анатолий ( Киев )
Ну, во-первых короче и красивше выглядит строка:
Format([бд]![Внутренний заказДата],"\#mm\/dd\/yyyy\#")
Во-вторых кавычки внутри текстовой константы должны быть продублированы, а в случае с SQL строкой могут быть заменены на апострофы.
Т.е. запрос в виде:
sSQL = "SELECT ... WHERE [Поле]=Format(Now(),""\#mm\/dd\/yyyy\#"")"
или
sSQL = "SELECT ... WHERE [Поле]=Format(Now(),'\#mm\/dd\/yyyy\#')"
или
q = Now
sSQL = "SELECT ... WHERE [Поле]=Format(" q ",'\#mm\/dd\/yyyy\#')"
работать будет.
А вот если вместо Now() указать [бд]![Внутренний заказДата], то будет работать, если таблица "бд" включена в раздел FROM запроса.

Что-то ни один из таких вариантов не работает, то тип неизвестный, то ошибка синтаксиса.
25 сен 12, 12:43    [13218112]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
George-III
Member

Откуда:
Сообщений: 3689
Автор123
Анатолий ( Киев )
Ну, во-первых короче и красивше выглядит строка:
Format([бд]![Внутренний заказДата],"\#mm\/dd\/yyyy\#")
Во-вторых кавычки внутри текстовой константы должны быть продублированы, а в случае с SQL строкой могут быть заменены на апострофы.
Т.е. запрос в виде:
sSQL = "SELECT ... WHERE [Поле]=Format(Now(),""\#mm\/dd\/yyyy\#"")"
или
sSQL = "SELECT ... WHERE [Поле]=Format(Now(),'\#mm\/dd\/yyyy\#')"
или
q = Now
sSQL = "SELECT ... WHERE [Поле]=Format(" q ",'\#mm\/dd\/yyyy\#')"
работать будет.
А вот если вместо Now() указать [бд]![Внутренний заказДата], то будет работать, если таблица "бд" включена в раздел FROM запроса.

Что-то ни один из таких вариантов не работает, то тип неизвестный, то ошибка синтаксиса.

Я не сомневаюсь, но просто:
[бд]![Внутренний заказДата] - это конечно же me.[бд].[Внутренний заказДата].value?
25 сен 12, 12:58    [13218234]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
alvk.
Member [заблокирован]

Откуда: г.Находка
Сообщений: 446
Автор123
alvk., Вы все 4 " меняете на ' или только пару?

я просто скопировал как есть
25 сен 12, 13:00    [13218250]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Автор123
Guest
George-III, запрос работает только с данными таблиц, me.[бд].[Внутренний заказДата].value это же если бы была форма?
alvk., у меня тоже ничего не выделяет, но не работает. А краснеет, если по совету askerli меняю " на '

Запрос конструктора (работает):
UPDATE бд SET бд.Прим2 = DSum("[Количество]","[бдп]","[бдп]![Внутренний заказДата]=#" & Format([бд]![Внутренний заказДата],"mm\/dd\/yyyy") & "#")
WHERE (((бд.Количество)=1));

Запрос в VBA (ошибка, не удается найти поле “|1”, указанное в выражении)
DoCmd.RunSQL "UPDATE áä SET áä.Ïðèì2 = DSum('[Êîëè÷åñòâî]','[áäï]','[áäï]![Âíóòðåííèé çàêàçÄàòà]=#" & Format([áä]![Âíóòðåííèé çàêàçÄàòà], "mm\/dd\/yyyy") & "#') WHERE (((áä.Êîëè÷åñòâî)=1));"
25 сен 12, 13:15    [13218360]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
askerli
Member

Откуда: Баку
Сообщений: 598
Автор123,

предполагаю, что первым параметром в функции Format должна быть ссылка на поле формы, которая содержит ту самую дату, по которой идет проверка. Есть ли такое поле на форме с указанным вами названием? Если есть, то и обращаться к ней надо как к полю формы.
25 сен 12, 13:27    [13218477]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
alvk.
Member [заблокирован]

Откуда: г.Находка
Сообщений: 446
Автор123,

1.перед копированием сюда включайте русский язык на клавиатуре.
2.пользуйтесь тэгами
25 сен 12, 13:29    [13218496]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Автор123
Guest
askerli
Автор123,

предполагаю, что первым параметром в функции Format должна быть ссылка на поле формы, которая содержит ту самую дату, по которой идет проверка. Есть ли такое поле на форме с указанным вами названием? Если есть, то и обращаться к ней надо как к полю формы.

М ... тут только две таблицы, никаких форм нетути.
25 сен 12, 13:30    [13218509]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Автор123
Guest
alvk.
Автор123,

1.перед копированием сюда включайте русский язык на клавиатуре.

Большое спасибо, думал что такие кракозябры норма.
DoCmd.RunSQL "UPDATE бд SET бд.Прим2 = DSum('[Количество]','[бдп]','[бдп]![Внутренний заказДата]=#" & Format([бд]![Внутренний заказДата], "mm\/dd\/yyyy") & "#') WHERE (((бд.Количество)=1));"
Но суть от названия полей и таблиц не меняется, они точно правильные.
25 сен 12, 13:32    [13218540]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
PMVolga
Guest
Автор123,

Попробуйте метод BuildCriteria.
25 сен 12, 13:35    [13218569]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
alvk.
Member [заблокирован]

Откуда: г.Находка
Сообщений: 446
Автор123,

если у вас две таблицы, то пользуйтесь объединением inner join и агрегатными функциями (sum) и не надо никаких format()
25 сен 12, 13:37    [13218583]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Автор123
Guest
А ее в DLookUp можно засунуть? И не совсем понятно, сравнивая дату с датой, разве нужно к ней прибегать?
25 сен 12, 13:43    [13218636]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
askerli
Member

Откуда: Баку
Сообщений: 598
alvk.,

в faq-е есть хороший совет. цитирую
Составив такой стринг, содержащий команду SQL, и отправив его на выполнение, 
вы можете получить ошибку. В таком случае распечатайте этот стринг в отладочное окно и посмотрите на
 него глазами. Возможно, ошибка сразу бросится в глаза. Если не бросится, создайте новый запрос в 
конструкторе запросов, переключите в режим SQL, вставьте туда текст запроса и запустите на 
выполнение. Если ошибка есть, то она будет показана более явным образом.

обязательно сделайте и если не разберетесь, то и мне было бы интересно на результат дебага посмотреть
25 сен 12, 13:44    [13218640]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
alvk.
Member [заблокирован]

Откуда: г.Находка
Сообщений: 446
askerli,

вы это зачем написали сейчас?
25 сен 12, 14:03    [13218844]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Автор123
Guest
askerli
alvk.,

в faq-е есть хороший совет. цитирую
Составив такой стринг, содержащий команду SQL, и отправив его на выполнение, 
вы можете получить ошибку. В таком случае распечатайте этот стринг в отладочное окно и посмотрите на
 него глазами. Возможно, ошибка сразу бросится в глаза. Если не бросится, создайте новый запрос в 
конструкторе запросов, переключите в режим SQL, вставьте туда текст запроса и запустите на 
выполнение. Если ошибка есть, то она будет показана более явным образом.

обязательно сделайте и если не разберетесь, то и мне было бы интересно на результат дебага посмотреть

Если это мне (вроде alvk. ничего не писал про ошибки), я не знаю как использовать отладочное окно. Debug - Run to cursor выдает ту же ошибку:
Run-time error '2465'
Приложению Micrisift Access не удается найти поле "1|", указанное в выражении
25 сен 12, 14:05    [13218861]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
askerli
Member

Откуда: Баку
Сообщений: 598
alvk.
askerli,

вы это зачем написали сейчас?

ТС пытается создать скл-строку и есть проблемы. надо дебажить, чтобы увидеть, что именно у него возвращается в коде. а вы о чем подумали? )))
25 сен 12, 14:08    [13218886]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Анатолий ( Киев )
Guest
Автор123
DoCmd.RunSQL "UPDATE бд SET бд.Прим2 = DSum('[Количество]','[бдп]','[бдп]![Внутренний заказДата]=#" & Format([бд]![Внутренний заказДата], "mm\/dd\/yyyy") & "#') WHERE (((бд.Количество)=1));"


Чтоб наглядно увидеть проблему со строкой, вместо DoCmd.RunSQL сделайте Debug.Print, посмотрите как готовая строка выглядит в окне отладки и покажите нам. По меньшей мере апостроф после второй решетки надо убрать, а сразу после 1-й - добавить.
25 сен 12, 14:13    [13218935]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
Все форумы / Microsoft Access Ответить