Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.08.04;
Скачать: [xml.tar.bz2];

Вниз

Работа с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.009 c
1-10295
Edvard
2003-07-22 12:13
2003.08.04
Помогите с RichEdit !


7-10486
Disa
2003-05-22 07:50
2003.08.04
Изменение раскладки


3-10083
AkaSaint
2003-07-11 01:09
2003.08.04
Глюк в методе ADOTable.Requery или у меня?


4-10526
Leon
2003-06-03 14:33
2003.08.04
Сохранение через реестр


1-10219
abc
2003-07-20 20:23
2003.08.04
как под переменную типа Variant выделить 100kb?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский