1 / 1 / 0
Регистрация: 07.04.2012
Сообщений: 72

Запрос данных из 2-х таблиц Access по условию и с параметром

17.07.2014, 08:55. Показов 4286. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне нужно сделать выборку из двух таблиц "Подъезды" и "Квартиры", чтобы выполнялось определенное условие и с параметром.

Выборка данных из первой таблицы
C++
1
2
3
4
5
 QPodezd->Close();
 QPodezd->SQL->Clear();
 QPodezd->SQL->Add("SELECT * FROM Подъезды;");
 QPodezd->ExecSQL();
 QPodezd->Active = true;
Есть вот такое условие: "SELECT * FROM Квартиры WHERE Долг >= " + CurrencyEdit1->Text;

Выборка из второй таблицы связанной с первой по параметру "Код_подъезда"

C++
1
2
3
4
5
QKvartiri->DataSource=DataSource1;
  QKvartiri->SQL->Text="SELECT * FROM Квартиры WHERE Код_подъезда =:Код_подъезда ORDER    BY Квартира;";
  QKvartiri->Prepared=true;
  QKvartiri->Parameters->ParamByName(WideString("Код_подъезда"))->DataType=ftInteger;
  QKvartiri->Open();
Запрос по параметру работает нормально, куда вставить условие, чтобы все работало вместе.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.07.2014, 08:55
Ответы с готовыми решениями:

Реализовать возможность поиска по заданному условию по одной из таблиц БД (есть программа Delphi база данных Access)
привет, всем активным участникам форума. помогите, пожалуйста, дописать программу на Delphi 7 база данных Access. у меня сделана...

Запрос с параметром в Access
Огромная просьба! Не могу написать SQL-запрос: вывести все данные по подотчетному лицу, первые буквы фамилии которого являются параметром...

Запрос с параметром в Access
Здравствуйте, подскажите пожалуйста Есть запрос с параметром для поиска автора книги по фамилии, нужно вводить фамилию, как выдать...

36
91 / 91 / 22
Регистрация: 02.07.2013
Сообщений: 332
29.07.2014, 17:23
Студворк — интернет-сервис помощи студентам
Не работал потому, что ты не указывал значение параметра. В результате, в запрос подставлялся произвольный мусор.
0
1 / 1 / 0
Регистрация: 07.04.2012
Сообщений: 72
30.07.2014, 09:17  [ТС]
Извините, понял. Как тогда параметру Код_подъезда в запросе задавать значения из таблицы Подъезды?
0
91 / 91 / 22
Регистрация: 02.07.2013
Сообщений: 332
30.07.2014, 14:48
Я как-то слабо представляю интерфейс пользователя, и что ты там творишь. Рассмотрим варианты:

1) Пользователь жмёт кнопку "Показать должников". Без указания чего-либо конкретного, запрос выполнит поиск по всему населённому пункту. Надеюсь, это ясно.

2) Пользователь хочет найти должников какой-то определённой локации. Значит, перед тем, как нажать кнопку "Показать должников", пользователь должен указать какие-то координаты. Логичнее было бы пользователю выбрать не какой-то там мифический код подъезда, а указать улицу [улицы], дом [дома] на ней и подъезд [подъезды]. Используя твою таблицу "подъезды", мы это всё имеем "валиком", всё в куче. Среди этой кучи надо выбрать лишь одну правильную комбинацию улицы-дома-подъезда, чтобы потом, по коду подъезда, отфильтровать запрос. Но, тем не менее, если ты что-то заставляешь пользователя выбирать [пусть даже и таким неудобным способом], то результат этого выбора ты имеешь, а именно, текущая запись датасета QPodezd. Поэтому, значение параметра в запросе по должникам задаётся так
C++
1
QKvartiri->Parameters->ParamByName(WideString("Код_подъезда"))->Value = QPodezd->FieldByName(WideString("Код_подъезда"))->AsInteger;
С приведениями типов сам разбирайся...
0
1 / 1 / 0
Регистрация: 07.04.2012
Сообщений: 72
31.07.2014, 19:31  [ТС]
Так получается, но выводятся только одни и те же квартиры, но под разными адресами.
0
91 / 91 / 22
Регистрация: 02.07.2013
Сообщений: 332
01.08.2014, 09:59
Покажи свой код полностью. Кроме репорта
0
1 / 1 / 0
Регистрация: 07.04.2012
Сообщений: 72
01.08.2014, 12:42  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
QPodezd->Close();
QPodezd->SQL->Clear();
QPodezd->SQL->Add("SELECT * FROM Подъезды;");
QPodezd->ExecSQL();
QPodezd->Active = true;
 
QKvartiri->SQL->Text="SELECT Квартиры.*, Подъезды.* FROM Квартиры LEFT JOIN Подъезды ON Квартиры.Код_подъезда = Подъезды.Код_подъезда WHERE Квартиры.Код_подъезда = :Код_подъезда AND Квартиры.Долг >= :Долг ORDER BY Val(Квартира);";
QKvartiri->Prepared=true;
QKvartiri->Parameters->ParamByName(WideString("Код_подъезда"))->DataType=ftInteger;
QKvartiri->Parameters->ParamByName(WideString("Код_подъезда"))->Value = QPodezd->FieldByName(WideString("Код_подъезда"))->AsInteger;
QKvartiri->Parameters->ParamByName(WideString("Долг"))->DataType=ftInteger;
QKvartiri->Parameters->ParamByName("Долг")->Value =StrToInt(CurrencyEdit1->Text);
QKvartiri->Open();
0
 Аватар для DeadHipo
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
01.08.2014, 14:59

Квартиры разные? Запрос вроде рабочий.
0
1 / 1 / 0
Регистрация: 07.04.2012
Сообщений: 72
01.08.2014, 21:37  [ТС]
Дома могут попадаться с одинаковыми номерами квартир, сортировка должна идти по Коду_подъезда, которому соответствует своя улица и дом.
0
91 / 91 / 22
Регистрация: 02.07.2013
Сообщений: 332
02.08.2014, 10:18
Сделаем так. Вместо вывода в репорт, возьми ДБГрид, свяжи его с датасетом запроса и посмотри, что туда выводится. Если в гриде всё ок, значит ищи проблемы с передачей данных в репорт. Если не ок, то разбирайся с тем, что и как отфильтровываешь. По-моему, уже всё 10 раз разжёвано. Вообще, я хочу сказать, умудриться сделать сквозную нумерацию подъездов и использовать её в качестве первичного ключа - это что-то. БД надо проектировать так, чтобы обычному человеку нетрудно ориентироваться было. Попробуй объяснить кому-нибудь, что подъезд с кодом 20 - это четвёртый подъезд сто пятьдесят девятого дома. Ппц...
0
1 / 1 / 0
Регистрация: 07.04.2012
Сообщений: 72
15.08.2014, 15:26  [ТС]
Тогда посоветуйте как сделать правильно ключевые поля в таблицах
0
 Аватар для DeadHipo
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
15.08.2014, 19:50
Security, обычно это поле id тип счётчик.
0
1 / 1 / 0
Регистрация: 07.04.2012
Сообщений: 72
15.08.2014, 20:05  [ТС]
Так у меня так и было ID_подъезда
0
 Аватар для DeadHipo
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
16.08.2014, 00:14
Security, разве это не было равносильно номеру и использовалось не только как id?
0
1 / 1 / 0
Регистрация: 07.04.2012
Сообщений: 72
20.11.2014, 09:59  [ТС]
Все работает, только получается, что в начале запроса я присвоил
C++
1
QKvartiri->DataSource=DataSource1;
который прикручен к QPodezd. В результате после запроса
C++
1
QKvartiri->RecordCount;
у меня равен 0. Как вытащить количество отобранных записей?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
20.11.2014, 10:31
Цитата Сообщение от Security Посмотреть сообщение
который прикручен к QPodezd. В результате после запроса
Раз запрос работает значит и строки какие-то должен показывать. Какой результат запроса? Строки выводит?
0
1 / 1 / 0
Регистрация: 07.04.2012
Сообщений: 72
20.11.2014, 18:58  [ТС]
Строки выводит, но почему-то
C++
1
QKvartiri->RecordCount
равен 0.
0
1 / 1 / 0
Регистрация: 07.04.2012
Сообщений: 72
04.12.2014, 10:11  [ТС]
Кто-нибудь может помочь?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.12.2014, 10:11
Помогаю со студенческими работами здесь

Запрос с параметром access
Здравствуйте, в делфи использовал запрос с параметром для выбора даты ADOQuery1.Close; AdoQuery1.Sql.Text:='SELECT * FROM товар WHERE...

Запрос на определение количества таблиц в БД по условию
Всем привет! Кто поможет! Суть такая Есть 3 таблицы в двух 40 человек а в одной 20. Нужно создать запрос где укажет сколько...

SQL запрос с параметром в Access, используя VBA
Здравствуйте, есть БД в Access. В ней таблица (каталог предложений) и форма (поиск), на которой пользователь должен выбрать параметры SQL...

Запустить готовый запрос в ACCESS из VBA Excel с параметром
Здравствуйте! Есть «внешний» готовый запрос в Access “ZZZ1” с единой строчкой: SELECT * FROM Tabl1 WHERE TTT=Q; Q – внешний...

Требуется запрос. Дополнительные поля, с текстом не из таблиц, но в зависимости от данных таблиц
Суть такая, есть три таблицы (пример) T_Main ID|Name|Pos 1|Вася|21 2|Вася|10 3|Вася|25 4|Вася|16 5|Вася|254 6|Петя|5 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации: В классе Работник добавить: накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни коэффициентПрезентеизма — снижает продуктивность. . .
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день. Для работы необходим браузер,. . .
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано. . . .
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
Диалоги с ИИ
zorxor 23.05.2026
Насколько я понимаю - Вы - Искусственный Интеллект. Это так? Да, всё верно. Я — искусственный интеллект. Я представляю собой большую языковую модель, созданную для помощи в самых разных задачах. . . .
Модель здравосохранения 14. Собираем всю модель вместе.
anaschu 22.05.2026
Модель собрана. В будущих постах на видео я покажу, как она работает. В этом посте запускаем её, проверяем результаты и разбираем что можно с ней делать дальше. Перед запуском проверяем. . .
Модель здравоохранения 13. Добавление самой системы здравоохранения.
anaschu 22.05.2026
В предыдущем посте мы настроили болезни. Теперь добавим события, которые управляют здоровьем всего коллектива, а также настроим рабочий график и расчёт финансов. В Main создаём четыре события. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru