Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: СУБД и Delphi/Lazarus

  Все выпуски  

RusFAQ.ru: СУБД и Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / СУБД и Delphi

Выпуск № 397
от 12.09.2007, 02:35

Администратор:Gh0stik
В рассылке:Подписчиков: 314, Экспертов: 45
В номере:Вопросов: 1, Ответов: 2


Вопрос № 101137: Всем привет! Пишу БД. Firebird. На форме следующие компоненты: IBDatabase: TIBDatabase; IBTransaction : TIBTransaction; IBDataSet: TIBDataSet; DataSource: TDataSource; И еще два TDBGrid: DBGrid1: TDBGrid; DBGrid2: TD...

Вопрос № 101.137
Всем привет!
Пишу БД. Firebird. На форме следующие компоненты:
IBDatabase: TIBDatabase;
IBTransaction : TIBTransaction;
IBDataSet: TIBDataSet;
DataSource: TDataSource;
И еще два TDBGrid:
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
В сетке DBGrid1 должны отображаться все данные БД, а в DBGrid2 результат некого запроса, который прописывается в IBDataSet.SelectSQL. Проблема заключается в том, при выполнении указанного выше запроса его результат виден в двух сетках. У меня есть вариант добавить второй комплект компонентов TIBTransaction, TIBDataSet, TDataSource и через них связать БД со второй сеткой. Но может есть более привлекательный вариант? Например, у IBDataSet есть свойства DisableControls и EnableControls. Думаю, объяснять его предназначение здесь не имеет смысла, все и так все понимают. Вопрос: есть ли что-то подобное у DBGrid'a? Или придется применять для решения моей задачи описанный мной выше способ?
Отправлен: 07.09.2007, 02:21
Вопрос задал: Бурда Александр Михайлович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Delph
Здравствуйте, Бурда Александр Михайлович!

Вам нужно добавить ещё IBDataSet и DataSource, как и сказал уже sir henry. В рамках одной базы данных часто приходится работать одновременно с несколькими наборами данных (выборки из разных таблиц, представлений, общение с функциями/процедурами...) На каждый отображаемый набор данных делается связка IBDataSet ==> DataSource == > DBGrid, но все IBDataSet'ы ссылаются на один (как правило) IBDatabase. Два набора IBDatabase и IBTransaction нужны в том случае, если Вам нужно одновременно работать с ДВУМЯ РАЗНЫМИ базами данных, например при перекачке данных из одной базы в другую.
---------
Сомневайся во всём! Реальность часто бывает не такой, как мы о ней думаем.
Ответ отправил: Delph (статус: 8-ой класс)
Ответ отправлен: 07.09.2007, 08:19
Оценка за ответ: 5
Комментарий оценки:
Спасибо!

Отвечает: Виктор Пырлик
Здравствуйте, Бурда Александр Михайлович!

Если запрос статический (не требует редактирования – только просмотр), то проще и лучще использовать компонент IBQuery. Если требуется редактировать, можно, и как правило используют компонент IBTable.
В вашем случае, можно организовать так:

Одни на всю базу.
--------------------------------------
IBDatabase: TIBDatabase;
IBTransaction : TIBTransaction;

Компоненты доступа и отображения данных
1. вариант ---------------------------------
IBTable + DataSource1 -> DBGrid1
IBQuery + DataSource2 -> DBGrid2

2. вариант ---------------------------------
IBQuery1 + DataSource1 -> DBGrid1
IBQuery2 + DataSource2 -> DBGrid2
Disable/Enable Controls в данном контексте совершено не применим – это не управление набором данных а их прорисовки.

Можно всё построить на SQL запросах (и редактирование тоже), но схема от этого не изменится – это классический (и практический) способ организации работы с данными в Delphi/Builder да и других продуктах. Для всех датасетов (IBTable, IBQuery) указываем одну и ту же транзакцию – IBTransaction и базу данных – IBDatabase.

---------
Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Студент)
Ответ отправлен: 07.09.2007, 09:04
Оценка за ответ: 5
Комментарий оценки:
Благодарю за консультацию.


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.58 от 10.09.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное