![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
помогите с sql
viper03 © (2006-11-02 05:05:00)пытаюсь написать запрос:
('Select * ');
('From sc316 T, rg631 R');
('Where (r.sp625>0) and (t.id=r.sp622) and (R.period="01.11.2006")');
^----- вот здесь ругается Operator/operand type mismatch.
поле period имеет тип "Дата".
в чем ошибка?
Anatoly Podgoretsky (2006-11-02 13:28:00) [1]> viper03 (02.11.2006 13:01:10) [10]
Уменьше размеры таблиц до нескольких десятков
viper03 (2006-11-02 13:01:00) [2]может. пробовал. но когда простенький запрос выполняется порядка 15-20 секунд - это уже не смешно.
Percent (2006-11-02 12:58:00) [3]может и второй совет дашь? как с 1с работать?
Если мне не изменяет память, 1С может работать в качестве OLE-сервера.
Desdechado (2006-11-02 12:57:00) [4]> вот в каком формате дата хранится...
> если смотреть ДБВьювером - 01.11.2006
> если просто фарменеджером - 20061101
Дата может храниться в каком угодно виде, хоть в количестве секунд от рождества Билла или Ларри. И смотрелки тебе этого не покажут, ибо они показывают в формате, ими любимом.
Так что используй параметры, их для того и придумали.
> Большинство СУБД используют системные настройки формата даты.
Вот только часто остается за кадром вопрос, какой именно системы - ОС клиента или ОС сервера. Драйвер на клиенте может преобразовать, а может и отдать на откуп СУБД в исходном виде. И если форматы дат на клиенте и сервере разные, то будет бумс (причем либо явная ошибка, либо "тихая" - 01.10.2005 можно яноварем и октябрем датировать). Я уж не говорю, что возможна попытка учета часовых поясов и их разницы между клиентской и серверной машинами.
viper03 (2006-11-02 12:55:00) [5]:-) я начальству еще лучший совет давал - вообще не работать с 1с. не поверили... :-(
может и второй совет дашь? как с 1с работать?
Percent (2006-11-02 12:46:00) [6]база адинэсовская... таблиц таб действительно пара сотен. А имена полям адинэс присваивает.
Мой тебе совет - не работай с БД 1С напрямую.
viper03 (2006-11-02 12:43:00) [7]работаю через АДО.
субд - видимо фокспро. потому как пришлось специально драйвер качать.
вот в каком формате дата хранится...
если смотреть ДБВьювером - 01.11.2006
если просто фарменеджером - 20061101
если честно - я все перепробовал. на все ругается несоответствие типов.
база адинэсовская... таблиц таб действительно пара сотен. А имена полям адинэс присваивает.
Percent (2006-11-02 08:58:00) [8]Не указана СУБД.
сделал через параметр - работает.
Параметры для этого и предназначены. Используй параметры. Использование строчного представления даты - только тогда, когда ты четко понимаешь, зачем это надо.
Потому что ты значение поля с типом Date пытаешься сравнить со строкой
Если дату предоставить во вменяемом строчном формате, СУБД сама преобразует строку в дату. Большинство СУБД используют системные настройки формата даты. В вопросе автора, скорее всего, формат даты не соответствует локальному формату, поэтому СУБД и ругается на "несоответствие типов" - она (СУБД) просто не понимает, что ей передана передана, типа, дата в строчном формате.
А мне вот любопытно, sc316, rg631, sp625, sp622 - это что, такого добра (таблиц и полей в них) в БД - сотни?
pavel_guzhanov (2006-11-02 08:44:00) [9]
> А если явно указать - несоответствие типов. почему?
Потому что ты значение поля с типом Date пытаешься сравнить со строкой
Loginov Dmitry (2006-11-02 07:35:00) [10]А если полностью написать:
R.period="01.11.2006 00:00:00" че будет?
Тоже самое?
:)
viper03 (2006-11-02 06:47:00) [11]сделал через параметр - работает.
А если явно указать - несоответствие типов. почему?