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

Вниз

Работа с ADOQuery   Найти похожие ветки 

 
sergeymukhin   (2003-07-09 17:33) [0]

Есть две связанные таблицы(связь по №_зач_кн), где в главной поле счетчик, в подчиненной числовое. При открытии с главной формы(соединенной с главной таблицей) подчиненную форму, на которой установлены DBGrid, DBText(для отображения № зач кн), через запрос который отбирает записи соответствующие № зач кн(DBText), но почему-то запись в DBText изменяется в зависимости от выбора в главной таблице, а запрос показывает данные соответствующие первой записи таблицы. Подскажите что нужно сделать.
Связь с базой Access в Delphi.


 
bushmen ©   (2003-07-09 17:57) [1]

Полностью задачу покажи


 
ЮЮ ©   (2003-07-10 02:54) [2]

Cвязать подчинённую с главной ч/з DataSource


 
sergeymukhin   (2003-07-10 16:50) [3]

>bushmen
Задача такая надо открыть форму на которой будет отображаться успеваемость студента, выбраного в предыдущей форме.
Отбираю так
select * from Таблицауспев
where №_зач_кн = :zach
Параметр заполняю програмно так
zach:=DBText.Field.AS.....
пробовал все.


 
sergeymukhin   (2003-07-10 16:54) [4]

>ЮЮ
У меня DataSource связан с ДатаСорсом запроса


 
bushmen ©   (2003-07-10 17:05) [5]

Что, так напрямую и пишешь - zach := DBText.Field.AS... ?
Естественно, не получится


 
sergeymukhin   (2003-07-10 17:21) [6]

Ну не совсем так это я погоричился дело обстоит так
DataModule2.ADOQuery1.Parameters.ParamByName("zachkn").Value:= DBText2.Field.AsInteger;


 
bushmen ©   (2003-07-10 17:25) [7]

а при Datamodule2.adoquery1.open что за ошибку выдает?


 
sergeymukhin   (2003-07-10 17:32) [8]

Он при каких-то значениях DataType параметра выдавал ошибки(это когда я пробовал все) но при теперешнем типе не ругается, а выдает ,сейчас, вообще пустое значение


 
bushmen ©   (2003-07-10 17:35) [9]

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


 
sergeymukhin   (2003-07-10 17:45) [10]

Я сам не пойму чё я намудрил в последний раз(где-то позавчера), но до этого все показывало но как я говорил не то. А на экране выводится значение на котором стоит курсор в главной таблице. Я даже для отслеживания установил метку в которую присваиваю значение из таблицы(не из формы), а там курсор на первой записи вот я и вижу эти данные вот смотри
procedure TFUspevamost.FormCreate(Sender: TObject);
begin
Label3.Caption:=DBText2.Field.AsString;
Label2.Caption:= DataModule2.TableFIO.Fields[2].AsString+" "
+DataModule2.TableFIO.Fields[3].AsString+" "
+DataModule2.TableFIO.Fields[4].AsString+" "
+"зачетная книжка №"+" "+DataModule2.TableFIO.Fields[0].AsString;
DataModule2.ADOQuery1.Parameters.ParamByName("zachkn").Value:= DBText2.Field.AsInteger;
DataModule2.ADOQuery1.Active:=True;

end;


 
bushmen ©   (2003-07-10 17:49) [11]

Ты перед Active := true сделай showmessage(DBText2.Field.AsString);


 
sergeymukhin   (2003-07-10 17:58) [12]

Знаешь попробовал, ШоуМесаж показался в самом начале еще даже главная кнопочная форма не открылась, решил Апликайшн.Криейтформ из сорса проекта перекинуть в модуль UFIO из которого открываю успеваемость но месаж кажет первую запись не зависимо от того какая выбрана. Вот самое главное мне получить реальное значение DBText и тогда у меня все получиться.


 
ЮЮ ©   (2003-07-11 03:07) [13]

Во-первых, этот код д.б. не в FormCreate, а в обработчике AfterScroll DataModule2.TableFIO
во-вторых, изменение параметра не приводит к переоткрытию запроса:
DataModule2.ADOQuery1.Close;
DataModule2.ADOQuery1.Parameters.ParamByName("zachkn").Value:= DBText2.Field.AsInteger;
DataModule2.ADOQuery1.Open;


 
sergeymukhin   (2003-07-12 10:45) [14]

поподробнее про ,а в обработчике AfterScroll DataModule2.TableFIO, чёто я его не нашел.


 
ЮЮ ©   (2003-07-12 11:35) [15]

9-й сверху у компонента TTable :-)


 
Theoden   (2003-07-13 05:36) [16]

ЮЮ правильно говорит! При создании формы (FormCreate) на форме нет ни одного компонента. Если те надо открыть какой-либо компонент на ЭТОЙ форме при ее создании используй это в FormActivate. И по второму пункту делай как ЮЮ говорит.


 
Snake ©   (2003-07-13 11:14) [17]

Ну ребята, вы намудрили.
В свое время я долго искал решение...
Во-первых, свойство Prepared ставь в True, иначе не сработает.
Во-вторых, имена связываемых полей ДОЛЖНЫ СОВПАДАТЬ. Может есть еще какая-то лазейка, но пока что я ее не нашел.
В-третьих, у подчиненного запроса (пусть будет ADOQuery2) в свойстве DataSource ставишь DataSource1, завязанный на ADOQuery1.
И наконец запросы:
ADOQuery1:
select * from Студенты
ADOQuery2:
select * from Таблицауспев
where N_Zach = :N_Zach

Все! Никаких дополнительных действий не надо. Работает 100% - сам уже не одну программу на Access налобал.


 
sergeymukhin   (2003-07-14 18:54) [18]

Спасибо всем я попробую а если чё то спрошу :)



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

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

Наверх




Память: 0.51 MB
Время: 0.011 c
14-10427
Knight
2003-07-18 01:37
2003.08.04
Вытаскивание писем из Outlook Express?


1-10226
непомнююююю
2003-07-20 02:40
2003.08.04
Drag n Drop формы


14-10358
shark
2003-07-17 21:01
2003.08.04
online RPG


11-10151
Gandalf
2002-11-05 22:01
2003.08.04
Как вам SyntaxEdit?


3-10096
seregin
2003-07-14 10:48
2003.08.04
ошибка в IB-базе