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

Список, связанные таблицы

03.04.2014, 12:31. Показов 4696. Ответов 43
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! У меня проблема, никак не могу ее решить.
Есть программа которую я пишу и она цепляется к базе Аксцесс в этой базе есть несколько таблиц которые связаны связями. (Рис.1). В программе нужно установить выпадающий список для выбора данных (Рис.2). Т.к. таблицы связаны у меня получается, то что он выводит цифры вместо связанных данных.(Рис.3). Более менее вроде объяснил проблему, если что пишите подробнее распишу.
Скрины:
Рис.1 (Так выглядят таблицы)
Кликните здесь для просмотра всего текста

Рис.2 (Так должно быть)
Кликните здесь для просмотра всего текста

Рис.3 (Так у меня)
Кликните здесь для просмотра всего текста
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.04.2014, 12:31
Ответы с готовыми решениями:

Добавление данных в связанные таблицы
Подскажите у меня есть 2 таблицы связанные с собой , 2adotable ,2dbgrida , 2datasourse . получается добавлять данные пока таблицы не...

Как редактировать таблицы БД связанные по ID?
Вчера задал вопрос не получил ответа. Постараюсь сейчас описать в кратце. Есть две таблицы. Первая таблица создаётся пользователем, а...

Добавление данных в 2 связанные таблицы
Подскажите пожалуйста, как с помощью TDBEdit заполнить 2 таблицы. Сотрудник( КодСотрудника, Ф, И, О, должность) Регистрация(Логин,...

43
27 / 27 / 10
Регистрация: 10.04.2013
Сообщений: 91
03.04.2014, 20:06
Студворк — интернет-сервис помощи студентам
Поле ТипКонтрагентаID из таблицы Контрагент предназначено для связи с таблицей ТипКонтрагента, поэтому DBGrid выводит числа, так как ТипКонтрагентаID хранит числовые значения.
Вот посмотрите этот запрос. Думаю сообразите, как остальные поля дописать. ТипКонтрагента выводится текстом.
C++
1
ADOQuery1->SQL->Add( "SELECT к.ID, к.ФИО_Наименование, тп.Тип FROM Контрагент к, ТипКонтрагента тп where к.ТипКонтрагентаID=тп.ID");
Если что-то не так, пишите, посмотрю.
0
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 43
04.04.2014, 10:58  [ТС]
Хорошо сегодня попробую, вечером отпишусь. Помогло или нет.
0
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 43
04.04.2014, 11:15  [ТС]
Попробовал, но что то опять не то. Приложил программу. Может я не правильно делаю вообще?
Все расположено на форме 4

Программа.rar
0
27 / 27 / 10
Регистрация: 10.04.2013
Сообщений: 91
04.04.2014, 12:25
AlexSoRK, а DBComboBox должно выводиться значение из таблицы Контрагент?
0
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 43
04.04.2014, 12:28  [ТС]
Цитата Сообщение от gelior Посмотреть сообщение
AlexSoRK, а DBComboBox должно выводиться значение из таблицы Контрагент?
Должны выводится три слова Агентство, Риэлтер, клиент. Например наводишь на определенную строку в таблице вся инфа о человеке отображается справа и ее можно редактировать.
0
27 / 27 / 10
Регистрация: 10.04.2013
Сообщений: 91
04.04.2014, 12:44
AlexSoRK, вроде разобрался. Начнем с ADOQuery1: у него стоит Connection = ADOConnection1, DataSource пусто. DataSource1: DataSet = ADOQuery1. DBGrid1: DataSource = DataSource1.
У каждого DBEdit1 выставить DataSource = DataSource1 (если не стоит) DataField и так вроде выставлено, а в DBComBox1 DataSource тоже DataSource1 и DataField = Тип
и запрос
C++
1
2
3
4
5
6
7
8
void __fastcall TForm4::FormCreate(TObject *Sender)
{
DBComboBox1->Clear();
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("SELECT к.ID, к.ФИО_Наименование, тп.Тип, к.Информация, к.Паспорт, к.Адрес, к.Телефоны, к.Реквизиты, к.ИНН, к.КПП FROM Контрагент к, ТипКонтрагента тп where к.ТипКонтрагентаID=тп.ID");
ADOQuery1->Open();
}
И ADOTable можно не использовать. Достаточно ADOQuery
0
27 / 27 / 10
Регистрация: 10.04.2013
Сообщений: 91
04.04.2014, 12:57
upd
добавьте ADOQuery2, свяжите с ADOConnection1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void __fastcall TForm4::FormCreate(TObject *Sender)
{
    DBComboBox1->Clear();
    ADOQuery1->Close();
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add("SELECT к.ID, к.ФИО_Наименование, тп.Тип, к.Информация, к.Паспорт, к.Адрес, к.Телефоны, к.Реквизиты, к.ИНН, к.КПП FROM Контрагент к, ТипКонтрагента тп where к.ТипКонтрагентаID=тп.ID");
    ADOQuery1->Open();
 
    ADOQuery2->Close();
    ADOQuery2->SQL->Clear();
    ADOQuery2->SQL->Add("select Тип from ТипКонтрагента");
    ADOQuery2->Open();
    while (!ADOQuery2->Eof) {
        DBComboBox1->Items->Add(ADOQuery2->FieldByName("Тип")->AsString );
        ADOQuery2->Next();
    }
}
Миниатюры
Список, связанные таблицы  
0
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 43
04.04.2014, 13:05  [ТС]
Вроде все верно выставляю. Но когда нажимаю active: true вылазит ошибка которую я выше писал
0
27 / 27 / 10
Регистрация: 10.04.2013
Сообщений: 91
04.04.2014, 13:08
AlexSoRK, а где нажимаете active? У ADOQuery? Не надо.
0
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 43
04.04.2014, 13:13  [ТС]
Цитата Сообщение от gelior Посмотреть сообщение
AlexSoRK, а где нажимаете active? У ADOQuery? Не надо.
Тогда я не могу даже выбрать в DBComBox1 data field
0
27 / 27 / 10
Регистрация: 10.04.2013
Сообщений: 91
04.04.2014, 13:14
Цитата Сообщение от AlexSoRK Посмотреть сообщение
Тогда я не могу даже выбрать в DBComBox1 data field
Просто впишите. после каждой буквы будет выскакивать, но это нормально.
0
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 43
04.04.2014, 13:16  [ТС]
Цитата Сообщение от gelior Посмотреть сообщение
Просто впишите. после каждой буквы будет выскакивать, но это нормально.
Не могу выбрать и написать вылазить все так же ошибка
0
27 / 27 / 10
Регистрация: 10.04.2013
Сообщений: 91
04.04.2014, 13:18
Цитата Сообщение от AlexSoRK Посмотреть сообщение
Не могу выбрать
выбрать вы и не сможете, потому что такого поля нет в таблице Контрагент, а вписать еще раз пробуйте. Набрали Т -> ошибка -> нажали ОК и дальше
0
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 43
04.04.2014, 13:20  [ТС]
Вписал. Но получил при редактировании. Вот это:
0
27 / 27 / 10
Регистрация: 10.04.2013
Сообщений: 91
04.04.2014, 14:02
AlexSoRK, в общем, могу предложить одно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    DBComboBox1->Clear();
    ADOQuery1->Close();
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add("SELECT к.ID, к.ФИО_Наименование, к.ТипКонтрагента, к.Информация, к.Паспорт, к.Адрес, к.Телефоны, к.Реквизиты, к.ИНН, к.КПП FROM Контрагент к");
    ADOQuery1->Open();
 
    ADOQuery2->Close();
    ADOQuery2->SQL->Clear();
    ADOQuery2->SQL->Add("SELECT Тип FROM ТипКонтрагента");
    ADOQuery2->Open();
    while (!ADOQuery2->Eof) {
        DBComboBox1->Items->Add(ADOQuery2->FieldByName("Тип")->AsString );
        ADOQuery2->Next();
    }
в DBComboBox1 DataField поставить ТипКонтрагента
и вот эту базу возьмите. Поле ТипКонтрагентаID теперь текстовое и связь таблиц ТипКонтрагента и Контрагент убрана. Ошибок не должно быть.
Иначе не знаю уж, что можно придумать
Вложения
Тип файла: rar Realty.rar (1.66 Мб, 4 просмотров)
0
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 43
04.04.2014, 14:06  [ТС]
Хм. Но там таких комбоксов много. Вряд ли это лучше решение удалять связь. Кстати если создать новую запись все нормально работает. А если редактировать ошибка
0
27 / 27 / 10
Регистрация: 10.04.2013
Сообщений: 91
04.04.2014, 14:12
Цитата Сообщение от AlexSoRK Посмотреть сообщение
Но там таких комбоксов много
Эта связь не повлияет на другие.
Цитата Сообщение от AlexSoRK Посмотреть сообщение
если создать новую запись все нормально работает
Тогда еще подумаю. А вы другими формами займитесь, чтобы время не терять
0
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 43
04.04.2014, 14:20  [ТС]
gelior, Еще кстати заметил добавляешь новую запись. потом выключаешь прогу и снова запускаешь этой записи нет, но появляется запись в комбоксе
0
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 43
04.04.2014, 16:33  [ТС]
Чет жуть такая, я видимо не осилю эту прогу написать. Вот пример по которому я делаю. Очень сложен для реализации ?
Пример программы.rar
0
27 / 27 / 10
Регистрация: 10.04.2013
Сообщений: 91
04.04.2014, 23:53
Цитата Сообщение от AlexSoRK Посмотреть сообщение
Очень сложен для реализации
программа, собственно, довольно простая
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.04.2014, 23:53

Добавление записи в связанные таблицы
Всем привет. Проблема следующая есть 3 таблицы (Темы, вопросы, ответы). Список тем реализован в ComboBox. Нужно чтобы при нажатии кнопки...

Вставка записи в связанные таблицы
БД Access доступ ADO есть 2 таблицы Gorod(Id, NameGor) и Tovar(id,NazvTov, Nalichie, Cena). Связаны между собой связью один-ко многим...

Будут ли изменяться связанные таблицы MySQL?
Всем доброго времени суток. Пишу приложение для удалённой работы с БД MySQL на C++ Builder XE. В БД есть 2 таблицы, "клиенты" и...

Заполнение таблицы. Как использовать список ComboBox многократно?
По нажатии кнопки нужно, чтобы добавлялся элемент в свою ячейку таблицы Stringgrid. Элемент добавляется ровно один раз. Если еще раз...

Как из таблицы составить список фамилий, отсортировать его и вывести в ComboBox?
Добрый день! Не могу реализовать программный код, есть компонент ComboBox1 в него из БД Access определенной таблицы считываются в...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru