Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3 4      [все]
 Проблема с 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

Откуда:
Сообщений: 398
Автор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]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
alvk.
Member [заблокирован]

Откуда: г.Находка
Сообщений: 446
askerli
а вы о чем подумали?


о том, что я не ТС. и решение я уже написал выше.
25 сен 12, 14:14    [13218938]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
askerli
Member

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

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


Чтоб наглядно увидеть проблему со строкой, вместо DoCmd.RunSQL сделайте Debug.Print, посмотрите как готовая строка выглядит в окне отладки и покажите нам. По меньшей мере апостроф после второй решетки надо убрать, а сразу после 1-й - добавить.

Убрал и добавил - эффекта нет.
Вместо DoCmd.RunSQL вставил Debug.Print - выходит та же ошибка. Не подскажите как посмотреть готовую строку в окне отладке (это Immediate как я понял?).
25 сен 12, 14:22    [13219025]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Автор123
Guest
alvk.
askerli
а вы о чем подумали?


решение я уже написал выше.

Т.е. в VBA это может и не работать, и искать ошибку не имеет смысла?
25 сен 12, 14:23    [13219039]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
askerli
Member

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

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

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

да и dsum() нафиг не нужен.
25 сен 12, 14:49    [13219240]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
askerli
Member

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

да и dsum() нафиг не нужен.


откровенно говоря, и сам вба нафиг не нужен, если там нет ни одной формы и только 2 таблицы
25 сен 12, 14:54    [13219270]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Анатолий ( Киев )
Guest
askerli, видимо будет быстрее, если выложите пример БД (в формате MDB) с этими таблицами и модулем.
25 сен 12, 14:58    [13219314]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
askerli
Member

Откуда: Баку
Сообщений: 598
Анатолий ( Киев )
askerli, видимо будет быстрее, если выложите пример БД (в формате MDB) с этими таблицами и модулем.

кажется, на этом топике все ошибаются с адресатами я не ТС
25 сен 12, 15:00    [13219329]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Автор123
Guest
Кому интересно прилагаю аналогичный пример базы данных 2007 - 2 таблицы по 2 строчки и vba не работает. Видимо дело в версиях.
25 сен 12, 15:16    [13219475]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Автор123
Guest
Пример

К сообщению приложен файл (2.zip - 23Kb) cкачать
25 сен 12, 15:17    [13219491]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
askerli
Member

Откуда: Баку
Сообщений: 598
DoCmd.RunSQL "UPDATE [Т2] SET [Т2].[Текст] = DLookUp('[Число]','[Т1]','[Т1]![Дата1]=#' & Format([Т2]![Дата2], 'mm\/dd\/yyyy') & '#');"

вроде так работает
25 сен 12, 15:38    [13219646]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Автор123
Guest
askerli
DoCmd.RunSQL "UPDATE [Т2] SET [Т2].[Текст] = DLookUp('[Число]','[Т1]','[Т1]![Дата1]=#' & Format([Т2]![Дата2], 'mm\/dd\/yyyy') & '#');"

вроде так работает

Огромное спасибо! Действительно замена ' на " решает проблему, непонятно только почему не сработало раньше, то ли очепятался где-то, то ли сжатие помогло. Как всегда ларчик открывался просто.
25 сен 12, 15:54    [13219744]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
askerli
Member

Откуда: Баку
Сообщений: 598
Автор123
Действительно замена ' на " решает проблему

об этом я писал еще в самом первом своем посте. верно говорят: лучше 1 раз пощупать, чем 100 раз услышать
25 сен 12, 16:01    [13219795]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Леонид Г
Member

Откуда:
Сообщений: 2
Подскажите, может кто знает в чем проблема.
Есть запрос с параметрами в Access , значение параметра формируется
из элемента DTPicker:
Dim cmd As ADODB.Command, cmd1 As ADODB.Command
Dim par As ADODB.Parameter, par1 As ADODB.Parameter
Set cmd = CreateObject("ADODB.Command")
Set par = cmd.CreateParameter("@date_n", adDBDate, adParamInput, , DTPicker9.Value)
Set par1 = cmd.CreateParameter("@date_k", adDBDate, adParamInput, , DTPicker0.Value)
cmd.Parameters.Append par
cmd.Parameters.Append par1

Однако в результате выполнения запроса путем экспериментов получается, что правильно он выполняется , только если в DTPicker9 поменять местами в дате день и месяц.
Запрос примерно такой strQry = "SELECT DISTINCTROW Sum(osn.Prop_gr).....
& "Where osn.Punkt_p=1 and osn.Data_zm>=@date_n and osn.Data_zm_k<=@date_k"

Заранее благодарю всех, кто откликнется.
15 янв 13, 17:34    [13773847]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
ILL HEAD
Member [заблокирован]

Откуда:
Сообщений: 8498
формат американской даты - месяц день год
15 янв 13, 18:16    [13774183]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
qwerty112
Guest
Леонид Г
Dim cmd As ADODB.Command, cmd1 As ADODB.Command
Dim par As ADODB.Parameter, par1 As ADODB.Parameter
Set cmd = CreateObject("ADODB.Command")
Set par = cmd.CreateParameter("@date_n", adDBDate, adParamInput, , DTPicker9.Value)
Set par1 = cmd.CreateParameter("@date_k", adDBDate, adParamInput, , DTPicker0.Value)
cmd.Parameters.Append par
cmd.Parameters.Append par1


а почему вы выбрали такой тип ?
вот с этим - adDate - как будет ?
15 янв 13, 18:22    [13774217]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Леонид Г
Member

Откуда:
Сообщений: 2
qwerty112,
с adDate-отлично! Спасибо огромное!
15 янв 13, 19:09    [13774445]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
?????
Guest
А вот интересно
Sub test_ADOdate_param()
    Dim p As New ADODB.Parameter
    Dim con As New ADODB.Connection
    Dim c As New ADODB.Command
    Dim s$
    
    s = "select datediff(dd,cast(0 as datetime),getdate())"
    con.Open "Строка подключения к МС СКЛ"
    Debug.Print con.Execute(s)(0)
    
    p.Type = adDate
    p.Value = 0
    s = "select datediff(dd,cast(? as datetime),getdate())"
    c.CommandType = adCmdText
    c.CommandText = s
    c.ActiveConnection = con
    c.Parameters.Append p
    Debug.Print c.Execute()(0)
    
    Set c = Nothing
    Set p = Nothing
    con.Close: Set con = Nothing
End Sub

 41287 
 41289 
15 янв 13, 19:13    [13774456]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Проблема с date в VBA  [new]
Rikozenit
Member

Откуда:
Сообщений: 119
А как быть, если поле с датой может оказаться незаполненным?
При выполнении команды sql на копирование строки с такими полями (Финиш_компл_пл is null) - возникают ошибки, так как в поле с форматом данных ДАТА невозможно вставить значение NULL:
CurrentProject.Connection.Execute "INSERT INTO Онлайн (Финиш_компл_пл)" _
& "VALUES (#' & Format(Финиш_компл_пл, 'mm\/dd\/yyyy') & '#);"
29 дек 18, 00:12    [21776125]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Tarasios
Member

Откуда: Украина
Сообщений: 432
Rikozenit
А как быть, если поле с датой может оказаться незаполненным?
При выполнении команды sql на копирование строки с такими полями (Финиш_компл_пл is null) - возникают ошибки, так как в поле с форматом данных ДАТА невозможно вставить значение NULL:
CurrentProject.Connection.Execute "INSERT INTO Онлайн (Финиш_компл_пл)" _
& "VALUES (#' & Format(Финиш_компл_пл, 'mm\/dd\/yyyy') & '#);"

Возможно, я не совсем понял вашу задачу - но в таких случаях я бы сделал предварительную проверку на заполненность поля. И далее - уже по желанию, например - либо просто тормознуть операцию, либо вставить в пустые поля некие значения по умолчанию.
29 дек 18, 04:36    [21776161]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Swa111
Member

Откуда:
Сообщений: 104
Rikozenit,

Null вставлять можно, у Вас в случае Null в строке получается не корректный запрос

И вообще запрос у Вас какой то странный....

CurrentProject.Connection.Execute "INSERT INTO Онлайн (Финиш_компл_пл)" _
& "VALUES (" & iif(isNull(Финиш_компл_пл, " Null ", "#" & Format(Финиш_компл_пл, "mm\/dd\/yyyy") & "#") & ");"
29 дек 18, 09:56    [21776225]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
Rikozenit,
А так:
Dim a
a = "#" & Format(Me.ctl, "mm\/dd\/yyyy") & "#"
CurrentDb.Execute "insert into tbl1(ctl1) values (" & a & ")"
29 дек 18, 12:52    [21776330]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Swa111
Member

Откуда:
Сообщений: 104
sdku,

Format(Me.ctl, "mm\/dd\/yyyy") от null вернут пустую строку в итоге в переменной "a" будет "##". результирующий запрос = "insert into tbl1(ctl1) values (##)", а это уже синтаксическая ошибка
29 дек 18, 13:01    [21776344]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
Вам предложен работоспособный вариант и сделать так,как показано ниже, Вам не позволяет религия,да?
А какое значение Вы хотите записать при пустом поле в поле дата? если таблица-приемник содержит одно единственное поле-дата (что оченьоченьочень маловероятно),то добавить запись с пустым полем даты Вам удастся только рекордсетом-может я ошибаюсь-форумчане поправят
If IsNull(Me.ctl) Then
Exit Sub  ' или,например, дата #1/1/1# 
Else
a = "#" & Format(Me.ctl, "mm\/dd\/yyyy") & "#"
End If
29 дек 18, 14:07    [21776413]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Кривцов Анатолий
Member

Откуда:
Сообщений: 264
Вместо запроса INSERT INTO ... VALUES ... открывайте Recordset и добавьте запись. И не понадобится ни форматирование даты, ни борьба с NULL.
3 янв 19, 17:54    [21777966]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Rikozenit
Member

Откуда:
Сообщений: 119
Swa111,
CurrentProject.Connection.Execute "INSERT INTO Онлайн (Финиш_компл_пл)" _
& "VALUES (" & iif(isNull(Финиш_компл_пл, " Null ", "#" & Format(Финиш_компл_пл, "mm\/dd\/yyyy") & "#") & ");"

Спасибо большое! Отлично работает!

Кривцов Анатолий
Вместо запроса INSERT INTO ... VALUES ... открывайте Recordset и добавьте запись. И не понадобится ни форматирование даты, ни борьба с NULL.

Если бы я ещё знал, как это делается... Как-то так?..
Dim Онлайн As DAO.Recordset 
Set Онлайн = CurrentDb.OpenRecordset("SELECT * FROM [Онлайн]") 
Онлайн.AddNew 
Онлайн![Финиш_компл_пл] = Me.Финиш_компл_пл.Value 
Онлайн.Update 
Онлайн.Close 
Set Онлайн = Nothing 
DoCmd.Close 
End Sub 
9 янв 19, 16:06    [21780732]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
Rikozenit,
Private Sub cmb_Click() 'или другое событие
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("tbl") 'таблица назначения
rs.AddNew
rs!дата = Me.полеСдатой 'форматировать не надо 
'аналогично для других полей
rs.Update
End Sub
9 янв 19, 17:56    [21780924]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Rikozenit
Member

Откуда:
Сообщений: 119
sdku, благодарю!! Ваш вариант для меня намного удобнее, ибо задача была скопировать 27 разноформатных полей и sql строка уже смотрелась дико)
10 янв 19, 10:03    [21781291]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Кривцов Анатолий
Member

Откуда:
Сообщений: 264
Rikozenit, я добавлю, что Recordset лучше открывать пустым (так быстрее):
Set rs = CurrentDb.OpenRecordset("tbl", dbOpenDynaset, dbAppendOnly)
или
Set rs = CurrentDb.OpenRecordset("SELECT * FROM tbl WHERE False")
10 янв 19, 16:08    [21781825]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
Кривцов Анатолий
Rikozenit, я добавлю, что Recordset лучше открывать пустым (так быстрее):
Set rs = CurrentDb.OpenRecordset("tbl", dbOpenDynaset, dbAppendOnly)
или
Set rs = CurrentDb.OpenRecordset("SELECT * FROM tbl WHERE False")
для одой записи из 27 полей это крайне необходимо
10 янв 19, 18:18    [21782047]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Rikozenit
Member

Откуда:
Сообщений: 119
Кривцов Анатолий, спасибо!
sdku, это я копирую 27 полей, а всего у меня в этой таблице 196 полей, в этом случае пустой рекордсет более оправдан?
11 янв 19, 08:36    [21782406]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Кривцов Анатолий
Member

Откуда:
Сообщений: 264
sdku
Кривцов Анатолий
Rikozenit, я добавлю, что Recordset лучше открывать пустым (так быстрее):
Set rs = CurrentDb.OpenRecordset("tbl", dbOpenDynaset, dbAppendOnly)
или
Set rs = CurrentDb.OpenRecordset("SELECT * FROM tbl WHERE False")
для одой записи из 27 полей это крайне необходимо
Вопрос не в том, сколько полей, а в том, что Recordset открывается для добавления записи. Зачем тащить в него миллион существующих?
11 янв 19, 10:46    [21782520]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
Кривцов Анатолий,
обычно добавляю в справочники, которые не большие,а если мильон записей-тогда конечно...
11 янв 19, 12:43    [21782686]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Дар1
Member

Откуда:
Сообщений: 20
Аксесс 2007 возникла проблема с прописанием типа данных в Модуле. Может кто сталкивался

К сообщению приложен файл. Размер - 48Kb
23 янв 19, 11:46    [21791948]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
RS открывается так:
Dim dbMy as Database, rst as Recordset
Set dbMy=CurrentDB
Set rst=dbMy.OpenRecordset("SELECT....")
23 янв 19, 12:14    [21791964]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
Хотелось бы узнать: а что такое
NodeNM=Node.text
NodeNM1=Node.text
23 янв 19, 12:22    [21791969]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Дар1
Member

Откуда:
Сообщений: 20
NodeNM это переменные
23 янв 19, 13:06    [21792023]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
__Michelle
Member

Откуда:
Сообщений: 3050
Дар1,

Библиотеку подключить надо.
23 янв 19, 13:22    [21792041]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Дар1
Member

Откуда:
Сообщений: 20
В чем проблема
Хочу в форме Вставить Тривиью АктивХ
Все возможные библиотеки подключил
Если что подскажете буду благодарен
23 янв 19, 13:30    [21792052]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
Дар1,
Не все так просто как кажется:

К сообщению приложен файл (treeviewP1.rar - 48Kb) cкачать
23 янв 19, 15:40    [21792333]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Дар1
Member

Откуда:
Сообщений: 20
Согласен с в 64 разрадных системах эти надстройки работают по непонятному алгоритму.
В одних приложениях функционируют нормально из под офиса 2007, в других нет Притом что однин и тот же проект работает и на Висте и под Вин 10 64. Хочу понять причину
24 янв 19, 10:37    [21793000]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Дар1
Member

Откуда:
Сообщений: 20
sdku,
База открылась, но при открытии формы Дерево, прекращается работа Акссесс
24 янв 19, 10:41    [21793012]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
Дар1,
ну,не знаю, под win7(86),А-2007 работает нормально-а у Вас что?
24 янв 19, 11:02    [21793042]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Дар1
Member

Откуда:
Сообщений: 20
sdku,
У меня Вин 10 64 и Офис 2007
24 янв 19, 11:12    [21793055]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
Дар1,
а это

К сообщению приложен файл (Treeview.zip - 85Kb) cкачать
24 янв 19, 11:15    [21793064]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
Может коллеги посоветуют что-нибудь, более серьезное, кроме как проверить ссылки
24 янв 19, 11:35    [21793087]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Дар1
Member

Откуда:
Сообщений: 20
sdku,
Спасибо большое, но и это не работает
24 янв 19, 12:42    [21793210]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
Дар1
Согласен с в 64 разрадных системах эти надстройки работают по непонятному алгоритму.
В одних приложениях функционируют нормально из под офиса 2007, в других нет Притом что однин и тот же проект работает и на Висте и под Вин 10 64. Хочу понять причину
А вот что написано на сайте Microsoft:"Элементы управления ActiveX и надстройки COM, написанные для 32-разрядного Office, не будут работать в 64-разрядной версии" (Treeview-элемент ActiveX. Подчеркиваю-речь об Office а не о Windows. Хотя некоторые "спецы"(повбывал бы гадов) говорят что "если система 64 то и Office надо ставить 64")
В установке 64-разрядного Office не вижу никакой необходимости (разве что работать с гигантскими файлами свыше 2гб)
27 янв 19, 00:57    [21795046]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
Дар1
Member

Откуда:
Сообщений: 20
sdku,

Интересная мысль, как то не придавал этому значения.
Считал что раз система 64 то и приложения надо ставить 64 битное.
Спасибо за подсказку!!!
29 янв 19, 12:31    [21796702]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с date в VBA  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
Дар1,
Для того чтоб рассуждать на эту тему поинтересуйтесь что такое разрядность системы(приложения),почему вообще появились 64 битные системы(приложения), какие имеют преимущества и нужны ли они Вам (кроме преимуществ бывают и недостатки-с одним из них Вы уже столкнулись)
29 янв 19, 17:00    [21797107]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3 4      [все]
Все форумы / Microsoft Access Ответить