![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Unknown type параметра. [D7, Paradox]
ViktorZ © (2006-02-23 10:19:00)Главное когда запрос был проще все работало.
var vsego,ost : integer;
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:='SELECT SUM(M.Price),SUM(AR.qnt*AR.RealPrice) FROM Menu M '+
' LEFT OUTER JOIN ARCheck AR on AR.Sifr=M.Sifr'+
' LEFT OUTER JOIN ADCheck AD on AD.Sys_Num=AR.Sys_Num'+
' LEFT OUTER JOIN acheck A on A.Sys_Num=AD.Sys_Num WHERE'+
' M.Categ = 15 AND A.LogicDate BETWEEN :D1 AND :D2 AND A.Sys_Num=AD.Sys_Num AND AD.Sifr =15 ';
Query1.open;
Query1.Params[0].AsDate:= strtodate(Edit1.text);
Query1.Params[1] .AsDAte :=strtodate(Edit2.text);
//Query1.Params[2].AsInteger := strtoint( Edit3.text);
ost:=Query1.Fields[0].AsInteger;
vsego:=Query1.Fields[1].AsInteger;
Form1.Caption :=inttostr(vsego-ost);
with message 'Query1: Field 'Date1' is of an unknown type'.
Вроде и параметры использую и даже указал их тип. Как решить. В инете полно таких тем, но делая то что там написано не помогает. Когда запрос был просще работало, а щас нет.
ViktorZ (2006-02-23 18:13:00) [1]Ok. Спасиюо. Даже не думал, что начиная с простых запросов узнаю столько нового. Особенно спасибо спасибо сайту и модераторам. за помощь. Обязательно размещу вас у ся на сайте.
msguns (2006-02-23 17:19:00) [2]try..except+F1
try..finally+F1
Инсталляция БДЕ с сайта Борланда на каждую РС
ViktorZ (2006-02-23 16:48:00) [3]
> При работу с БД старайтесь все обращения вовне (а Ваша программа
> обращается к услугам "сторонней" "фирмы" - BDE) писать в
> защищенные блоки
Можно по пожробнее об этом. А то я хочу чтоб моя прога меньше всего зависела от машины. Чот нужно чтоб она на всех пахала так как у меня.
msguns (2006-02-23 10:58:00) [4]И последнее :
При работу с БД старайтесь все обращения вовне (а Ваша программа обращается к услугам "сторонней" "фирмы" - BDE) писать в защищенные блоки.
В противном случае установленная на комп с криво поставленным или вовсе без BDE, Ваша программа будет "ругаться" на клиента "по-иностранному". Да еще и покажет пустые гриды или что-там у Вас служит для отображения. И будет работать как ни в чем ни бывало.
Это - тоже признак профессионализма
;))
msguns (2006-02-23 10:51:00) [5]Еще рекомендация:
Перед Open в подобных случаях (динамически изменяемый/создаваемый запрос) рекомендуется ставить Prepare.
В случае парадокса вещь в общем-то "лишняя", но тем не менее приучает к профессиональной манере программирования интерфейса с СУБД.
Если придется когда-нибудь работать с клиент-серверными делами подобная "предосторожность" сослужит добрую службу, упростив и ускорив поиски багов при отладке клиентских запросов.
ViktorZ (2006-02-23 10:48:00) [6]ОО. то то я думаю не канает.
msguns (2006-02-23 10:46:00) [7]Да, совсем забыл..
Open должен быть после всех Params[..].AsXXX := ...
ViktorZ (2006-02-23 10:45:00) [8]Ок. Спасибо
msguns (2006-02-23 10:44:00) [9]Query1.SQL.Clear; - лишнее
Синтаксис Джоинов: .. JOIN <TableName> ON (<Условия> )
Если в конструкции WHERE более одного условия, то каждое заключается в скобки:
WHERE (M.Categ = 15) AND (A.LogicDate BETWEEN :D1 AND :D2) AND ..
Справка Delphi->Help->Local SQL->DML