Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

помогите с 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]

сделал через параметр - работает.
А если явно указать - несоответствие типов. почему?


Наверх

Титульная страница Поиск, карта сайта Написать письмо