![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
тип поля DATE [D7, dBase, FoxPro]
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