Форум: "Базы";
Текущий архив: 2003.07.21;
Скачать: [xml.tar.bz2];
ВнизНесоответствие типов данных в выражении условия отбора Найти похожие ветки
← →
Deedlit (2003-06-29 11:29) [0]Запрос базе данных MS Access возвращает сообщение "Несоответствие типов данных в выражении условия отбора". SQL запрос:
SELECT * FROM MainBook WHERE (Birthday BETWEEN "01.01.2000" AND "01.01.2000")
Связь с базой организована через ADO, драйвер - Microsoft Jet 4.0 OLE DB Provider.
Т.е. я пытаюсь получить поля по диапазону дат рождения людей. :( Именно что пытаюсь. :( Может, для ADO другой синтаксис нужен? В BDE все работало...
← →
Anatoly Podgoretsky (2003-06-29 11:31) [1]Оно не считает, что это даты, а как указывать литералы типа дат описано в справке по движку, у каждого свой формат. Справка есть в составе Офиса и на сайте Микрософт.
← →
Deedlit (2003-06-29 11:52) [2]
> Anatoly Podgoretsky
Можно, если нетрудно, конкретнее - где это там искать? Я в этой области совсем начинающая... :( И как вообще еще можно указать дату? Разделители другие?
← →
Anatoly Podgoretsky (2003-06-29 15:23) [3]А начать с того, что определить какой движок используется и искать в документации на него. Если это АДО и JET то в документации на Акцесс, справка в папке МС ОФИС, но это я уже ранее указал, там искать соответствуюзую тему.
Ты сам поищешь или как?
← →
Deedlit (2003-06-29 16:09) [4]
> А начать с того, что определить какой движок используется
> и искать в документации на него.
> ...
> Ты сам поищешь или как?
Не сердись, говорю же - не работала я с БД раньше. :( Движок в данном случае - это Microsoft Jet 4.0 OLE DB Provider? В хелпе к офису про него ни слова. Есть раздел касательно типов ADO, там про DateTime написано "Date and time values for the years 100 through 9999." Длина 8 байт. Чего ему нехватает?
← →
sniknik (2003-06-29 17:23) [5]для "Microsoft Jet 4.0 OLE DB Provider" есть файл справки JETSQL40.CHM поставляется с офисом, и в нем гораздо больше чем "ни слова", просто его надо было поставить (при установке офиса не убирать галочку устанавливать на хелпах).
← →
Deedlit (2003-06-29 17:44) [6]
> sniknik ©
Я и не убирала. Ставила Word, Excel и Access, полным комплектом, MSOffice 2000. Файла НЕТ. Рискую нарваться на щелчок по носу :), но вы мне не кинете его на мыло? Очень уж хочется разобраться, что этой заразе от меня нужно. :(
← →
Deedlit (2003-06-29 17:45) [7]Уй! deedlit@land.ru Прошу прощения.
← →
Anatoly Podgoretsky (2003-06-29 18:04) [8]C:\Program Files\Microsoft Office\Office\1049
У меня он в этой папке
← →
Deedlit (2003-06-29 18:38) [9]Только что со злости поставила вообще все комплекты справки, что с Офисом шли. Те же яйца, только в профиль. :( В смысле, нет файла... В общем, либо лыжи не смазаны, либо я... гм...
← →
app (2003-06-29 19:52) [10]Попробуй сделать поиск JETSQL40.CHM по всему диску. Может не там ищешь.
← →
sniknik (2003-06-29 19:53) [11]у меня в этих
D:\Program Files\Common Files\Microsoft Shared\Office10\1033
D:\Program Files\Common Files\Microsoft Shared\Office10\1049
от разных установок
в старом может немного иначе называтся, вроде этого JETSQL35.CHM (возможно неточно). и потом какой офис ставиш? точно есть в 2000м/XP и главное нерезанном пиратами. (насчет 97/95 ??? хз)
в общем полный архив справки 3.1мб, только файл 262кб его и высылаю. (гарантий что чегото нехватает само по себе дать не могу, найди полную установку офиса)
← →
Anatoly Podgoretsky (2003-06-29 20:02) [12]Краткая выписка по датам
При указании аргумента условиеОтбора литералы даты (символы дат) должны вводиться в американском формате, даже если используется неамериканская версия ядра базы данных Jet. Например, дата 10 мая 1996 года записывается в России как 10.05.96, а в США как 5/10/96. Обязательно заключите даты в символы «решетки» (#), как показано в следующих примерах.
Для отбора записей с этой датой в российской базе данных необходимо использовать следующую инструкцию SQL:
SELECT *
FROM Заказы
WHERE ДатаИсполнения = #5/10/96#;
Кроме того, можно применять функцию DateValue, которая поддерживает международные стандарты, заданные в Microsoft Windows®. Например, для отбора записей в американской базе данных создайте текст программы:
SELECT *
FROM Заказы
WHERE ДатаИсполнения = DateValue("5/10/96");
Для российской базы данных текст программы будет выглядеть так:
SELECT *
FROM Заказы
WHERE ДатаИсполнения = DateValue("10.5.96");
← →
Deedlit (2003-06-29 20:58) [13]Угу, уже все нашла в JETSQL40, огромное спасибо за него sniknik"у. Правда, в качестве инструкции обнаружилось лишь упоминание, что длина поля даты составляет 8 байт и может быть от 100 до 9999 лет. В общем, успела натереть веревку мылом :) , пока не наткнулась на пример программы в том же разделе.
Исходный запрос в итоге стал выглядеть вот так:(Birthday BETWEEN #01/01/00# AND #01/01/00#)"
.
Еще раз спасибо уважаемым Анатолию и sniknik"у за потраченное на мою скромную персону время. (делает почтительный книксен)
:)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.07.21;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c