Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.21;
Скачать: CL | DM;

Вниз

Несоответствие типов данных в выражении условия отбора   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.027 c
14-68001
MetalFan
2003-07-04 07:36
2003.07.21
DBGrid.SelectedRows


14-68052
voland
2003-07-05 08:28
2003.07.21
Физика


4-68112
ИгорьОк
2003-05-20 04:43
2003.07.21
Доступ к Notepad


3-67680
Александр Ч_
2003-06-26 16:58
2003.07.21
Перебор записей в DataSet


3-67673
AlexA
2003-06-25 15:58
2003.07.21
индикациz выполнения хранимой процедуры в IB