Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
1 / 1 / 0
Регистрация: 07.04.2012
Сообщений: 72

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

17.07.2014, 08:55. Показов 4219. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru