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

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

тип поля DATE [D7, dBase, FoxPro]


Страницы:   1 2

Peter_cc ©   (2005-05-20 09:04:00) 

Здравствуйте мастера

Использую таблицу dbf(dBASE Files). Есть поле MDATE соответственно я ставлю тип поля DATE.
Пишу запросик простенький select * from tabl1 where MDATE=’21.01.2005’ во время выполнения запроса вылетает ошибка «несоответствия типов данных в выражениях  условиях отбора»

Если сделать полю другой тип ну допустим CHARACTER то ошибка не возникает…
Подскажите почему так происходит
Заранее благодарен.


msguns   (2005-05-20 14:49:00) [1]

Я там вместо "Е" ляпнул точку ;))


Anatoly Podgoretsky   (2005-05-20 14:46:00) [2]

msguns ©   (20.05.05 14:39) [33]
Это справка не по БД, а по БДЕ, отдельный продукт не являющий часть Дельфи, включен в поставку наряду с другими посторонними вещами.


msguns   (2005-05-20 14:39:00) [3]

>Anatoly Podgoretsky ©   (20.05.05 14:37) [32]

В дельфях очень много справок такого качества. Не обязательно по БД..


Anatoly Podgoretsky   (2005-05-20 14:37:00) [4]

msguns ©   (20.05.05 10:51) [19]
Это рай относится к справке по БДЕ, которая резко выделяется качеством по сравнению с другими справками того же Борланд. Эти ребята которые создавали БДЕ и справку для него уже явно в Борланд не работают.


Peter_cc   (2005-05-20 11:59:00) [5]


> msguns ©   (20.05.05 11:47) [29]
все большое спасибо разобрался!!!!
ВСЕМ СПАСИБО ЗА УЧАСТИЕ.....


Max Zyuzin   (2005-05-20 11:49:00) [6]

>yk ©   (20.05.05 11:37) [27]
то будет 'select * from tabl1 where MDATE= :param1'
ParamByName('param1').AsDateTame := dpDate.Date;
Вопросы лучше в своей ветке создавай, а то модераторы ща порежут все.

>evvcom ©   (20.05.05 11:32) [25]
Не уверен что чдесь нужно это делать (Prepare) было бы чего оптимизировать.
потом еще определить типы параметровне нужно.


msguns   (2005-05-20 11:47:00) [7]

>yk ©   (20.05.05 11:37) [27]

Для фокса сойдет. А для IB (к примеру) - нет.


yk   (2005-05-20 11:39:00) [8]

dpDate.Date -дата из DateTimePicker


yk   (2005-05-20 11:37:00) [9]

А если будет:
'select * from tabl1 where MDATE='+''''+DateToStr(dpDate.Date)+''''

??


msguns   (2005-05-20 11:33:00) [10]

>evvcom ©   (20.05.05 11:32) [25]
>Здесь надо выполнить еще Prepare

Для локалок особого смысла не имеет. Разве что синтаксис проверить..


evvcom   (2005-05-20 11:32:00) [11]


> сделал по твоему примеру теперь пишет другую ошибку parameter
> not found что это???

Здесь надо выполнить еще Prepare (или PrepareSQL - точно не помню), потом еще определить типы параметров, а уж только потом можно к параметрам обращаться. Проще все это сделать в DesignTime


msguns   (2005-05-20 11:29:00) [12]

Имена параметров в ParamByName д.б. в кавычках :
ParamByName( 'ds ').As...

А почитать хэлп ?


msguns   (2005-05-20 11:27:00) [13]

>evvcom ©   (20.05.05 11:19) [21]
Спасибо за пояснения. Тексейра написал так, видимо потому, что не для всех НД Close срабатывает на закрытом НД.
В данном же случае (TQuery используется универсально для одноразовых быборок-сканирований) практически на 100% Close не сработает, т.к. Active := false;

Но в общем случае согласен с Женей и тобой. Эта строчка явно не является обязательной


Peter_cc   (2005-05-20 11:26:00) [14]


> msguns ©   (20.05.05 10:40) [13]
> Пример параметрического запроса
>
> with Query1 do
>  try
>   if Active then Close;
>   SQL.Clear;
>   SQL.Add('SELECT * FROM TABLE ');
>   SQL.Add('  WHERE (STOCKDATA BETWEEN :ds AND :de) AND ');
>   SQL.Add('        (CLIENTNAME=:cname )';
>   SQL.Add(' ORDER BY STOCKDATE, STOCKNUM');
>   ParamByName(ds).AsDateTame := dtPicker1.Date;
>   ParamByName(de).AsDateTame := dtPicker2.Date;
>   ParamByName(cname).AsString := 'Тексейра и Пачеко';
>   Open;  
>  except
>   ShowMessage('Негаразды, емть !');
>  end;

сделал по твоему примеру теперь пишет другую ошибку parameter not found что это???


evvcom   (2005-05-20 11:19:00) [15]


> msguns ©

В Close делается проверка if Active, поэтому лишний if здесь не требуется, если ты не оптимизируешь свой код по супер скорости, предполагая тем не менее, что чаще здесь Active=False, поэтому выгодно сэкономить на лишнем CALL/RET


msguns   (2005-05-20 10:55:00) [16]

>Johnmen ©   (20.05.05 10:51) [18]
>А зачем этот иф ?

Подсмотрено у Тексейры. Один и тот же экземрляр TXXXQuery может быть использован для разных запросов (например, для загрузки в списки малых вспомогательных справочников в начале однопользов.проги). После сканирования очередного НД квери можно просто забыть закрыть.
Хотя, конечно, после изменения текста запроса, он закроется автоматически.
Но это больше как стиль. Ясный и читабельный. Является лишь элементом дизайна, стиля и дисциплины

Во всяком случае я так понял :)


Johnmen   (2005-05-20 10:51:00) [17]

>msguns ©   (20.05.05 10:40) [13]
>if Active then Close;

А зачем этот иф ?
:)


msguns   (2005-05-20 10:51:00) [18]

Вдогонку.
Не могу не спеть очередную осанну ребятам из Борланда. Сделать такой хэлп - это подвиг ! Особенно ощущаешь грандиозность и качество их труда после того, как приходится сталкиваться с хелпами мелкософта. Это не небо и земля - это рай и ад, ей-богу !


msguns   (2005-05-20 10:48:00) [19]

А вообще советую кинуть на пару-тройку дней кодинг, взять тетрадочку, ручечку. Открыть закладочку BDE и на каждой иконочке (кроме двух последних), нажав сначала мышку, а потом F1, читать все внимательно и вдумчиво, записывая наиболее важное.
Начиная от Hierarchy до See also, на каждом пункте перебирая все св-ва, методы и события с тщательным анализом.
1. Получишь отает на свой вопрос
2. Получишь ответы на все вопросы в будущем
3. Поймешь "сучность" BDE, как она работает и для чего нужна
4. Просекешь принцип работы с базами данных не только BDE, но и всех DB-ориентированных технологий дельфей.


Max Zyuzin   (2005-05-20 10:46:00) [20]

>lexer ©   (20.05.05 10:42) [15]
Есть поле MDATE соответственно я ставлю тип поля DATE


Страницы:   1 2

Наверх

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