Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2016, 20:29   #1
Armageddets
Форумчанин
 
Регистрация: 30.06.2012
Сообщений: 145
По умолчанию Как отобразить данные Access из связанной таблицы по запросу или работа с вложенными таблицами.

Всем доброго времени суток, уважаемые эксперты. Есть куча таблиц в Access. Подключать и выводить их данные я умею. Есть такая вот схема данных:


Есть вот такая таблица:


Необходимо вывести данные таким вот образом. Чтобы кликая по левой таблице выбирались данные из вложенной таблицы в правую таблицу, причем только те, которые относятся к выбранной марке. Я пробовал через запросы делать, но у меня не получилось.

Результат должен быть такой:


Я пробовал такой вариант:
Код:
Form5.ADOQuery1.Close;
  Form5.ADOQuery1.Connection:=Form1.adoconnection1;
  Form5.ADOQuery1.SQL.Add('SELECT * from Модель,Марка WHERE Модель.МаркаID=Марка.Марка');
  Form5.ADOQuery1.Open;
  Form5.DataSource2.DataSet:=Form5.ADOQuery1;
В таком случае пишет что поле Модель.МаркаID не имеет значения по умолчанию. Пробовал и другие варианты, которые работали, но работали неправильно.

Саму БД тоже прилагаю:
http://rghost.ru/7M4PNqfJH

Заранее спасибо всем, кто откликнется.
Изображения
Тип файла: jpg q.jpg (75.1 Кб, 202 просмотров)
Тип файла: jpg ww.JPG (32.2 Кб, 124 просмотров)
Тип файла: jpg Безымянный.JPG (84.6 Кб, 123 просмотров)
Armageddets вне форума Ответить с цитированием
Старый 26.03.2016, 21:59   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

http://www.programmersforum.ru/showp...1&postcount=14
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 27.03.2016, 00:11   #3
Armageddets
Форумчанин
 
Регистрация: 30.06.2012
Сообщений: 145
По умолчанию

Спасибо большое. Программа стала выводить хотя бы необходимые поля с этой вложенной таблицы, но сама таблица пустая почему-то. Я пробовал двумя способами так:
Код:
Form5.ADOQuery1.Close;
  Form5.ADOQuery1.Connection:=Form1.adoconnection1;
  Form5.ADOQuery1.SQL.Add('SELECT * from Модель Where (Модель.МаркаId=:Марка.Id)');
  Form5.ADOQuery1.Open;
  Form5.DataSource2.DataSet:=Form5.ADOQuery1;
И вот так:
Код:
Form5.ADOQuery1.Close;
  Form5.ADOQuery1.Connection:=Form1.adoconnection1;
  Form5.ADOQuery1.SQL.Add('SELECT * from Модель Where (Модель.Id=:Марка.Id)');
  Form5.ADOQuery1.Open;
  Form5.DataSource2.DataSet:=Form5.ADOQuery1;
Что я делаю не так?
Armageddets вне форума Ответить с цитированием
Старый 27.03.2016, 00:41   #4
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,774
По умолчанию

Цитата:
Сообщение от Armageddets Посмотреть сообщение
Что я делаю не так?
Имя параметра не может быть с точкой.
Vapaamies вне форума Ответить с цитированием
Старый 27.03.2016, 01:11   #5
Armageddets
Форумчанин
 
Регистрация: 30.06.2012
Сообщений: 145
По умолчанию

Пробовал и без нее вот так, но все так же:
Код:
Form5.ADOQuery1.SQL.Add('SELECT * from Модель Where Id=:Id');
Вот сам проект. Если в его запустить в меню выбрать: справочники -> марки и модели, то видно что вторая таблица пустая...
Проект
Armageddets вне форума Ответить с цитированием
Старый 27.03.2016, 08:59   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Модель.маркаID =:id
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 27.03.2016, 10:39   #7
Armageddets
Форумчанин
 
Регистрация: 30.06.2012
Сообщений: 145
По умолчанию

Нет, такой вариант:
Код:
Form5.ADOQuery1.SQL.Add('SELECT * from Модель Where Модель.маркаID =:id');
Работает точно так же. То есть таблица справа остается пустой к сожалению.
Armageddets вне форума Ответить с цитированием
Старый 27.03.2016, 13:36   #8
Armageddets
Форумчанин
 
Регистрация: 30.06.2012
Сообщений: 145
По умолчанию

Ладно разобраться с этим не удалось, но я обошел данную проблему обычной фильтрацией. В любом случае спасибо всем, ознакомили меня с интересным методом.
Armageddets вне форума Ответить с цитированием
Старый 28.03.2016, 09:22   #9
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Ладно разобраться с этим не удалось,
1.
Цитата:
Если используется не Table с указанием имени таблицы, а Query с необходимостью написания SQL-запроса, то там в свойство DataSource выставляем dsMaster,
например так
Код:
form5.ADOQuery1.DataSource:=form5.DBGrid...<справочника марок>.DataSource;
2.
Цитата:
а в запросе используем параметры с именами полей главной таблицы:
в запросе для справочников должно быть поле ID и ...
Код:
Form5.ADOQuery1.SQL.Add('SELECT * from Модель Where Модель.маркаID =:id');
П.2. у тебя был(есть), а п.1 ???
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 28.03.2016, 13:01   #10
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

так можно
Код:
  with ADOQuery1  do
BEGIN
Close;
SQL.Clear;
SQL.Add('select * From Модель where маркаID ='+ intToStr(ADOTable1.FieldByName('ID').AsInteger));
ExecSQL;
Open;
end;
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
отобразить данные из запроса access в datagridview? iskilz C# (си шарп) 3 20.06.2015 20:52
как вставить данные из таблицы access в форму? ola_ya_22 Microsoft Office Access 13 04.09.2012 22:40
Отобразить поля связанной таблицы C# Arkuz Общие вопросы .NET 8 08.11.2010 19:26
Как скопировать данные таблицы из одной базы access в другую? AK BULLETS БД в Delphi 2 31.03.2010 13:09
как связать таблицы в access, чтобы данные автоматически копировались? rudess Microsoft Office Access 1 15.08.2009 16:22