Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2013, 12:34   #1
Pushkin1983
 
Регистрация: 19.09.2011
Сообщений: 6
По умолчанию несоответствие типов данных

Хочу проверить существует ли дата, которую я ввожу на форме в таблице или нет:

Private Sub DateUved_AfterUpdate()
Dim s
s = "select count(*) from osnova where date_uved = 'DateUved'"
If CurrentProject.Connection.Execute(s ).Fields(0) = 0 Then MsgBox "Даты в базе нет"
Пишет:несоответствие типов данных в выражении условия отбора

Последний раз редактировалось Pushkin1983; 21.12.2013 в 13:35.
Pushkin1983 вне форума Ответить с цитированием
Старый 23.12.2013, 02:09   #2
Myhaylo
Форумчанин
 
Регистрация: 19.07.2012
Сообщений: 520
По умолчанию

Правильно пишет. Зачем Вы задаёте условие для поля с датой в виде текстовой константы "DateUved"? Правильно будет так:

s = "select count(*) from osnova where date_uved = " & DateUved

s = "select count(*) from osnova where date_uved = #12.31.2013#"
s = "select count(*) from osnova where date_uved = " & DateSerial(2013, 12, 31)
Окупант, руки прочь от Украины!!! Слава Героям!
Myhaylo вне форума Ответить с цитированием
Старый 27.12.2013, 06:08   #3
Pushkin1983
 
Регистрация: 19.09.2011
Сообщений: 6
По умолчанию

Воспользовался первым выражением, теперь выдает
"Число содержит синтаксическую ошибку в выражении запроса 'date_uved = 01.01.2013'
Pushkin1983 вне форума Ответить с цитированием
Старый 27.12.2013, 14:51   #4
Myhaylo
Форумчанин
 
Регистрация: 19.07.2012
Сообщений: 520
По умолчанию

s = "select count(*) from osnova where date_uved = #" & DateUved & "#"
Окупант, руки прочь от Украины!!! Слава Героям!
Myhaylo вне форума Ответить с цитированием
Старый 28.12.2013, 02:59   #5
AndVGri
Форумчанин
 
Регистрация: 10.02.2012
Сообщений: 109
По умолчанию

Дата в запросе в Access должна быть в формате #mm/dd/yyyy#. В вашем случае, для примера
Код:
s = "select count(*) from osnova where date_uved = #12/28/2013#"
Или, если DateUved у вас переменная с датой, то
Код:
s = "select count(*) from osnova where date_uved = #" & Format$(DateUved, "mm\/dd\/yyyy") & "#"
AndVGri вне форума Ответить с цитированием
Старый 08.01.2014, 09:17   #6
Pushkin1983
 
Регистрация: 19.09.2011
Сообщений: 6
По умолчанию

Всем спасибо!
Получилось как-то так
s = "select count(*) from osnova where date_uved = #" & Replace(CStr(Format([Forms]![Form2]![DateUved], "mm.dd.yyyy")), ".", "/") & "#"
Pushkin1983 вне форума Ответить с цитированием
Старый 08.01.2014, 12:49   #7
Myhaylo
Форумчанин
 
Регистрация: 19.07.2012
Сообщений: 520
По умолчанию

В конструкторе формы задайте для поля DateUved формат даты и никаких Replace-CStr-Format не нужно.
Окупант, руки прочь от Украины!!! Слава Героям!
Myhaylo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формат даты. vlkr Microsoft Office Access 1 04.08.2012 23:43
Формат Даты katerinkaj Microsoft Office Excel 83 29.08.2011 14:05
Формат даты SergiOD Общие вопросы Delphi 5 09.03.2011 02:11
Формат даты Iskin Microsoft Office Excel 5 16.04.2009 14:49
Формат даты. IVANSour Общие вопросы Delphi 1 18.01.2009 15:36