Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/22: Рейтинг темы: голосов - 22, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 37

SQL-запрос к этому полю типа 'SELECT * FROM [файл] WHERE [поле типа дата] > [

26.10.2010, 17:38. Показов 4684. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Суть проблемы:
Есть база, созданная средствами VB (Visual Data Manager) в Access формате. В ней есть поле типа Data/Time. Так вот, SQL-запрос к этому полю типа 'SELECT * FROM [файл] WHERE [поле типа дата] > [переменная с датой]' выдает ошибку несовместимости типов данных. Пробовал строковые переменные, отформатированные под дату, пробовал переменные с типом Date, с кавычками и без них - не помогает. Помогите!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.10.2010, 17:38
Ответы с готовыми решениями:

Фильтрация таблицы по полю типа дата
Всем добрый день. Мне нужно отфильтровать таблицу по полю типа дата. Использую такую конструкцию: ADOQuery1.Filtered := False; ...

Выборка по полю типа дата/время
Доброго времни суток всем. Столкнулся с такой проблемой, в базе данных есть поле типа дата/время, там записана только дата, т.е. например...

Как реализовать на C# запрос типа SELECT ... WHERE col IN (SELECT ...)
Есть две таблицы DataTable t1 и DataTable t2. Как выбрать в таблице t1 все строки, у которых значение столбца 1 есть в значениях столбца 1...

6
0 / 0 / 3
Регистрация: 28.01.2010
Сообщений: 279
26.10.2010, 17:58
Winda то небось Русская?:-) Да и офис тоже небось русский? :-))
Не совпадают форматы дат в запросах и в офисе.
Чтобы сравнить дату в SQL запросе она должна быть американского стандарту 'месяц/число/год'.

Вот держи функцию, которую я лет пять назад написал, перед запросом переделывай дату при помощи этой функции:

'Стандарт получаемой даты в самом верху модуля тип поставь
Public Enum dfDateFormat
dfRU = 0 'Русский вариант
dfEN = 1 'Английский вариант
End Enum

'Конвертирует Даты в Руский или Английский стандарт
'В случае ошибки возвращает пустую строку; при успешном выполнении
дату нужного стандарта как строковую переменную
'dfOutFormat это в каком варианте тебе вернуть дату в строке dfEn английский

Public Function Convert_Date_RU_EN(dtDate As Variant, dfOutFormat As dfDateFormat) As String
Dim strDT As String

On Error GoTo ErrD
strDT = CStr(dtDate)
If InStr(strDT, '.') <> 0 Then
Select Case dfOutFormat
Case 0 'Русский
strDT = Mid(strDT, InStr(strDT, '.') + 1, InStrRev(strDT, '.') - InStr(strDT, '.') - 1) & '.' & Left(strDT, InStr(strDT, '.') - 1) & '.' & Mid(strDT, InStrRev(strDT, '.') + 1)
Case 1 'Английский
strDT = Mid(strDT, InStr(strDT, '.') + 1, InStrRev(strDT, '.') - InStr(strDT, '.') - 1) & '/' & Left(strDT, InStr(strDT, '.') - 1) & '/' & Mid(strDT, InStrRev(strDT, '.') + 1)
End Select
Convert_Date_RU_EN = strDT
ElseIf InStr(strDT, '/') <> 0 Then
Select Case dfOutFormat
Case 0 'Русский
strDT = Mid(strDT, InStr(strDT, '/') + 1, InStrRev(strDT, '/') - InStr(strDT, '/') - 1) & '.' & Left(strDT, InStr(strDT, '/') - 1) & '.' & Mid(strDT, InStrRev(strDT, '/') + 1)
Case 1 'Английский
strDT = Mid(strDT, InStr(strDT, '/') + 1, InStrRev(strDT, '/') - InStr(strDT, '/') - 1) & '/' & Left(strDT, InStr(strDT, '/') - 1) & '/' & Mid(strDT, InStrRev(strDT, '/') + 1)
End Select
Convert_Date_RU_EN = strDT
Else
Convert_Date_RU_EN = ''
End If
Exit Function
ErrD:
Convert_Date_RU_EN = ''
Exit Function
End Function
0
1 / 1 / 0
Регистрация: 25.05.2008
Сообщений: 232
26.10.2010, 17:58
попробуй заключить дату в ##
#21/12/2001#

И может быть надо сделать американский формат mm/dd/yyyy.
А вообще лучше приведи код
0
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 37
26.10.2010, 18:33  [ТС]
Спасибо, но просто американский формат пока не помог.
А код примерно такой:

Data1 - поле базы данных типа Date/Time

Dim Data2 as string (или as Date)
Data1 = DTPicker.Value
....
.Open ('SELECT * FROM File WHERE Data1 >= '' & Дата2 & ''')
или
.Open ('SELECT * FROM File WHERE Data1 >= '' & _
Format(Дата2,'dd.mm.yy') & ''')
или
.Open ('SELECT * FROM File WHERE Data1 >= '' & _
Format(Дата2,'mm.dd.yy') & ''')
0
0 / 0 / 3
Регистрация: 28.01.2010
Сообщений: 279
26.10.2010, 18:47
Опять же те же грабли лабызаешь! Тебе же сказали АМЕРИКАНСКИЙ формат, а ты что делаешь: Format(Дата2,'mm.dd.yy') какие точки в английском формате там слэши '/'.
И на счет Data1=DTPicker.Value это же поле в базе, наверное ты описку допустил?
Запрос выглядит так:

Dim Data2 as Date
Dim Data3 AS String
Data2 = DTPicker.Value
Data3 = Convert_Date_RU_EN(Data2, dfEN)
теперь Data3='8/18/2004' это сегодня
Open ('SELECT * FROM File WHERE Data1>=#' & Data3 & '#')
0
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 37
26.10.2010, 18:52  [ТС]
Да, про Data1 это описка конечно.
Щас попробую со слешами
0
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 37
27.10.2010, 12:33  [ТС]
Парни, спасибо! Заработало!
Работает только если заключить переменную в решетки (##).
Никогда б не догадался )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.10.2010, 12:33
Помогаю со студенческими работами здесь

Фильтр поле типа Дата
Добрый день всем! В таблице есть два поля даты начала и окончания Есть форма c элементами типа дата не могу составить запрос...

Поле типа дата в DBGrid
Добрый вечер,подскажите, пожалуйста,как отловить ошибку в ячейке DBGrid на неправильный ввод даты? Какое событие обрабатывать? Пробовал...

Запрос на обновление посредством SET поле=(select....)
Вечер добрый, граждане, подскажите пожалуйста... можно ли в Access реализовать запрос вида UPDATE таблица SET...

Запрос к полю типа text возвращает Null
Добрый день, коллеги.. у меня вот такая проблемка возникла, делаю запрос к таблице CODE (SQL): скопировать код в буфер обмена ...

Как в поле типа дата время записать пустоту?
на форме едиты и кнопка - вводятся туда данные и записываются в таблицу в акцессе. В таблице поля типа дата-время Подскажите пожалуйста...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru