Форум: "Начинающим";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
Внизпомогите с sql Найти похожие ветки
← →
viper03 © (2006-11-02 05:05) [0]пытаюсь написать запрос:
("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 имеет тип "Дата".
в чем ошибка?
← →
viper03 © (2006-11-02 06:47) [1]сделал через параметр - работает.
А если явно указать - несоответствие типов. почему?
← →
Loginov Dmitry © (2006-11-02 07:35) [2]А если полностью написать:
R.period="01.11.2006 00:00:00" че будет?
Тоже самое?
:)
← →
pavel_guzhanov © (2006-11-02 08:44) [3]
> А если явно указать - несоответствие типов. почему?
Потому что ты значение поля с типом Date пытаешься сравнить со строкой
← →
Percent (2006-11-02 08:58) [4]Не указана СУБД.
сделал через параметр - работает.
Параметры для этого и предназначены. Используй параметры. Использование строчного представления даты - только тогда, когда ты четко понимаешь, зачем это надо.
Потому что ты значение поля с типом Date пытаешься сравнить со строкой
Если дату предоставить во вменяемом строчном формате, СУБД сама преобразует строку в дату. Большинство СУБД используют системные настройки формата даты. В вопросе автора, скорее всего, формат даты не соответствует локальному формату, поэтому СУБД и ругается на "несоответствие типов" - она (СУБД) просто не понимает, что ей передана передана, типа, дата в строчном формате.
А мне вот любопытно, sc316, rg631, sp625, sp622 - это что, такого добра (таблиц и полей в них) в БД - сотни?
← →
viper03 © (2006-11-02 12:43) [5]работаю через АДО.
субд - видимо фокспро. потому как пришлось специально драйвер качать.
вот в каком формате дата хранится...
если смотреть ДБВьювером - 01.11.2006
если просто фарменеджером - 20061101
если честно - я все перепробовал. на все ругается несоответствие типов.
база адинэсовская... таблиц таб действительно пара сотен. А имена полям адинэс присваивает.
← →
Percent (2006-11-02 12:46) [6]база адинэсовская... таблиц таб действительно пара сотен. А имена полям адинэс присваивает.
Мой тебе совет - не работай с БД 1С напрямую.
← →
viper03 © (2006-11-02 12:55) [7]:-) я начальству еще лучший совет давал - вообще не работать с 1с. не поверили... :-(
может и второй совет дашь? как с 1с работать?
← →
Desdechado © (2006-11-02 12:57) [8]> вот в каком формате дата хранится...
> если смотреть ДБВьювером - 01.11.2006
> если просто фарменеджером - 20061101
Дата может храниться в каком угодно виде, хоть в количестве секунд от рождества Билла или Ларри. И смотрелки тебе этого не покажут, ибо они показывают в формате, ими любимом.
Так что используй параметры, их для того и придумали.
> Большинство СУБД используют системные настройки формата даты.
Вот только часто остается за кадром вопрос, какой именно системы - ОС клиента или ОС сервера. Драйвер на клиенте может преобразовать, а может и отдать на откуп СУБД в исходном виде. И если форматы дат на клиенте и сервере разные, то будет бумс (причем либо явная ошибка, либо "тихая" - 01.10.2005 можно яноварем и октябрем датировать). Я уж не говорю, что возможна попытка учета часовых поясов и их разницы между клиентской и серверной машинами.
← →
Percent (2006-11-02 12:58) [9]может и второй совет дашь? как с 1с работать?
Если мне не изменяет память, 1С может работать в качестве OLE-сервера.
← →
viper03 © (2006-11-02 13:01) [10]может. пробовал. но когда простенький запрос выполняется порядка 15-20 секунд - это уже не смешно.
← →
Anatoly Podgoretsky © (2006-11-02 13:28) [11]> viper03 (02.11.2006 13:01:10) [10]
Уменьше размеры таблиц до нескольких десятков
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.043 c