![]() |
|
|
![]()
|
|
| SuperLamer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 23.1.2006 Репутация: нет Всего: нет |
Ребята, подскажите, пожалуйста:
Конечная цель: В строку запроса (Edit) вводится ФИО студента и в окне DBGrid выводится список предметов с оценками, при этом на одну ФИО все предметы и соответствующие оценки. Общие данные: У меня есть три таблицы в Access 2003: Students, содержит данные о студентах (ID[ключ], GroupNo, name,); Subjects, содержит данные о предметах (ID [ключ], name, Hours); StudentToSubject, содержит ID тех двух+TestResult(оценки). Все таблицы объединяет схема данных, где ключи первых таблиц соединяются с соответствующими строками общей таблицы. Клиентская часть на Delphi 7. Подключаю БД к Delphi 7 через TADOConnection. Кладу на форму компоненты ADOTable, ADOQuery, DataSource и ADOConnection. Проблема: 1) Не знаю на какую таблицу мне нужно ссылаться в выше перечисленных компонентах, чтобы запрос работал согласно цели. Мой выриант: кладу на форму три ADOTable и подключаю их соответственно к каждой таблице, 1 DataSource, и в свойстве SQL, компонента ADOQuery прописываю три запроса к каждой - таблице. Спасибо! |
|||
|
||||
| Vas |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 23 Всего: 28 |
Имхо самй простой вариант:
Два DataSource, один Table и один Query. А также DBGrid и DBLookupComboBox. В Query пишем такой запрос:
Связываем DBLooupComboBox с DataSource привязанной к таблице студентов (Table). DBGrid с Query его тоже связываем с Table через MasterSource. И получаем при выборе в DBLookupComboBox фамилии студента в таблице видим данные с результатами по предметам. Можно по другому например Edit + Button и Query в нем написать запрос следующего содержания:
и на нажатие кнопки следующий код:
В этом случае будут выводиться студенты с фамилиями начинающимися на строку приведенную в Edit ну и так далее, но это уже SQL. -------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
||||||
|
|||||||
| sexton |
|
|||
![]() sexton=Пономарь (eng) ![]() ![]() Профиль Группа: Участник Сообщений: 503 Регистрация: 5.5.2004 Где: Ульяновск Репутация: нет Всего: 9 |
Для Edit'а реализуй простой select по условию с текстом этого Edit'a из таблицы Students.
Сделай JOIN таблиц StudentToSubject и Subjects. Свяжи их соотношением master-detail (master ессно первый запрос, detail - второй). Единственно что хотелось бы посоветовать сделать ОБЯЗАТЕЛЬНО - изучить хелп в Access - там очень хорошее описание его SQL и куча примеров на нужные тебе темы. Не ленись, прояви настойчивость Да, и запросы лучше (и удобней) перед вставкой в Delphi предварительно проверять в самом Access, через вкладку дизайнера БД "Запросы". Да и составлять их там удобнее. |
|||
|
||||
| eXcoder |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 26.2.2006 Репутация: нет Всего: нет |
SuperLamer,
не мог бы ты показать свою схему данных. Я выполняю подобный проект. Хотел бы посмотреть какая у тебя логика в БД. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |