Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.16;
Скачать: CL | DM;

Вниз

Динамический запрос   Найти похожие ветки 

 
TATIANA   (2003-11-21 18:48) [0]

Здравствуйте , господа мастера . Нужна помощь начинающему .
1 Вопрос.
Таблица KVART , в ней есть 7 кодов , наименования находятся в 7 справочниках . Надо заполнить Grid данными , соеденить 7 таблиц с KVART , сделать динамический запрос , т. к. необходимо сделать просмотр по 7 параметрам (кодам) . Код выбираю из справочника .
Запрос :
Параметр - knas ;
Переменная из справочника (код) - kodnas .
SPRAV := 17; (переменная для вызова нужного справочника)
Form2.Showmodal; ( вызов справочника)

IBQuery1.Close;
IBQuery1.SQL.Clear;
ibquery1.Params.Add;
ibquery1.Params[0].DataType := ftInteger;
ibquery1.Params[0].Name := "knas";
ibquery1.Params[0].AsInteger := kodnas;
IBQuery1.SQL.Add("Select KV.*,N.NAIM, MR.NAIM,UL.NAIM,TK.NAIM,NK.NAIM,TG.NAIM,TP.NAIM");
IBQuery1.SQL.Add("from KVART KV, NASP N, MRAION MR,ULICA UL, TIP_KV TK,NAL_KV NK, TIP_GIL TG, TIP_PROD TP");
IBQuery1.SQL.Add("WHERE (KV.KOD_NAS=:knas) AND (KV.KOD_MR= MR.KOD) AND (KV.KOD_UL= UL.KOD) AND (KV.KV_TIP=TK.KOD) AND (KV.KV_NAL=NK.KOD) AND (KV.GIL_TIP=TG.KOD) AND (KV.PROD_TIP=TP.KOD)");

//
// ibquery1.Params.Add;
// ibquery1.Params[0].DataType := ftInteger;
// ibquery1.Params[0].Name := "knas";
// ibquery1.Params[0].AsInteger := kodnas;
//
IBQuery1.Open ;
Запрос не работает . В чем причина .

2 Вопрос .
Компонент Edit1 . После ввода данных , хочу нажать клавиши <ENTER> или <TAB> , в событии OnKeyDown пишу -
if (key = 13) or (key = 9) then Edit2.SetFocus;
не работает , в чем причина не пойму . В 5-ой версии все работало .
Всем спасибо .


 
Vlad ©   (2003-11-21 19:02) [1]


> Запрос не работает . В чем причина .

Что значит не работает - ошибку выдает или данных не возвращает ?


 
Johnmen ©   (2003-11-21 23:25) [2]

1. Параметры определяются после того, как они прописаны.
А если они прописаны, то зачем же Add ?
2. "Враки-каки" (c) прапорщик Задов


 
TATIANA   (2003-11-25 09:23) [3]

Господа , добрый день . Спасибо , что ответили.
1. Запрос не возвращает данные .
2. Извините , но мне еще не понятен термин "параметры прописаны" . Вы имеете ввиду - IbQuery.Params[0].DataType IbQuery.Params[0].Name
IbQuery.Params[0].AsInteger
3. Прапорщик Задов - это не "Враки-таки" .
Гопода мастера , извините за назойливость , но если бы мне было все понятно , не задавала бы "глупый вопрос" .
Если можно , желательно подробнее указать ошибку . Первая программа .
Спасибо .


 
Johnmen ©   (2003-11-25 09:28) [4]

Сначала текст запроса, потом определение параметров...


 
TATIANA   (2003-11-25 10:09) [5]

Спасибо за ответ , убрала ADD и запрос вернул данные , но теперь другая проблема , записи двойные , добавила в SELECT описатель DISTINC , результат тот же .


 
Johnmen ©   (2003-11-25 10:35) [6]

>записи двойные

Это как ?


 
TATIANA   (2003-11-25 10:41) [7]

Записи дублируются .
МОСКВА
МОСКВА
РЯЗАНЬ
РЯАНЬ
ОМСК
ОМСК


 
Johnmen ©   (2003-11-25 10:44) [8]

Так это дублируются значения полей в получаемом наборе данных, а не записи. Так и должно быть. Ведь у тебя соединение таблиц.
Чем это мешает жить ? :)))


 
DenK_vrtz ©   (2003-11-25 11:13) [9]

Johnmen © (25.11.03 10:44) [8] + и DISTINCT, в таком запросе, не поможет!


 
TATIANA   (2003-11-25 11:22) [10]

Господа . Чем мешает жить ? Эта информация отображается в DBGrid . Хорош вид :
МОСКВА З-Д АВТОАГРЕГАТ
МОСКВА З-Д АВТОАГРЕГАТ
МОСКВА З-Д АВТОАГРЕГАТ
РЯЗАНЬ З-Д ЖБИ
РЯЗАНЬ З-Д ЖБИ
ОМСК ДСК
ОМСК ДСК
Выдаю инф-ию на экран и печать по определенному признаку .
Как правильно сделать не знаю.


 
DenK_vrtz ©   (2003-11-25 11:28) [11]

TATIANA (25.11.03 11:22) [10], а кто знает?
Адреса? Явки? Пароли?


 
Danilka ©   (2003-11-25 11:33) [12]

[10] TATIANA (25.11.03 11:22)
смысл запроса какой? как я понял - вываливает все квартиры так? а почему тогда ты хочешь, чтобы он тебе написал "МОСКВА" только один раз, вообще-то там больше квартир..

если тебе надо только населенные пункты, для этого нужен другой запрос.


 
Sandman25 ©   (2003-11-25 11:36) [13]

Если Distinct не помогает, значит там намешаны русские и латинские буквы.
MОСКВА<>МОСКВА, если в одном слове буква M русская, а в другом - латинская.
Или буква О, или С, или К, или В, или А... В-общем, в данном случае (МОСКВА) есть 2^6=64 варианта написания, и Вы можете получить 64 записи вместо одной.


 
Danilka ©   (2003-11-25 11:38) [14]

[13] Sandman25 © (25.11.03 11:36)
ты посмотри что выводит запрос. там не одно и не два поля.
вываливает, например, все поля таблицы KVART


 
Sandman25 ©   (2003-11-25 11:44) [15]

[14] Danilka © (25.11.03 11:38)

Согласен.

TATIANA

Если Вы отображаете только одно поле в DBGrid , то зачем извлекаете остальные поля? Чтобы записи изменять? Так ведь пользователь разницу между записями не видит и нужную ему все равно не найдет, ему придется угадывать :)


 
TATIANA   (2003-11-25 12:07) [16]

Господа ! Конечно же поле не одно , их много .Не могу же я вам дать конкретные данные . "Москва" - пример .
У меня в таблице код "Москвы" (KOD_NAS), а наименование города выбираю из справочника (NASP) , данные для "Москвы" выбираются по коду (KOD_NAS). И вот такая картина - что-то делаю в запросе неправильно , данные для "Москвы" (KOD_NAS = :knas) выводятся 6 раз , а записи в примере всего 2 .


 
Sandman25 ©   (2003-11-25 12:47) [17]

[16] TATIANA (25.11.03 12:07)

Таблица NASP не связывается ни с чем. Если в ней 3 записи, то вместо 2 записей получаем 6.


 
TATIANA   (2003-11-25 13:09) [18]

Господа ! Благодарю всех за внимание . И потому показываю как надо было написать запрос ( может быть кому-нибудь пригодится) :
IBQuery1.SQL.Add("Select KV.*,N.NAIM, MR.NAIM,UL.NAIM,TK.NAIM,NK.NAIM,TG.NAIM,TP.NAIM");
IBQuery1.SQL.Add("from KVART KV, NASP N, MRAION MR,ULICA UL, TIP_KV TK,NAL_KV NK, TIP_GIL TG, TIP_PROD TP");
IBQuery1.SQL.Add("WHERE ((KV.KOD_NAS=N.KOD) AND(N.KOD=:knas)) AND (KV.KOD_MR= MR.KOD) AND (KV.KOD_UL= UL.KOD) ...... ;
Параметр :knas переставить в AND(N.KOD=:knas) .



Страницы: 1 вся ветка

Текущий архив: 2003.12.16;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.014 c
8-52293
shurik
2003-08-21 01:05
2003.12.16
butmap


4-52448
MaXie
2003-10-23 11:13
2003.12.16
Как дождаться завершения приложения?


1-52168
Diesel_x34
2003-12-05 06:38
2003.12.16
Мне нужно в TWebBrowser открывать странички через прокси


1-52230
_none_
2003-12-04 20:39
2003.12.16
Проблемы с освобождением ресурсов


1-52154
Aster-X
2003-12-03 17:47
2003.12.16
TMemo и перенос строки