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

Опять про связь таблиц

31.05.2011, 16:31. Показов 2415. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как бы покороче. Есть две таблицы
1. Sector(Name, Code) сектор
2. Line(Name, Code, Sector) линия

Вторая таблица связана с первой ключем(Sector+Code)

На форме Edit1, DBLookupComboBox1, CxGrid1, Button1

Значения DBLookupComboBox1 равны Sector(Name)

В поле Edit1 вводим название линии в DBLookupComboBox1 выбираем сектор и при нажатии
Button1 в CxGrid1(Name, Sector) тоесть в таблицу Line должна попасть информация о новой линии которая соответствует даному сектору.

C++
1
2
3
4
5
6
7
8
9
10
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
 
ADOQuery1->SQL->Add( "INSERT INTO Line (Name,Sector) VALUES('"+ Edit1->Text + "','"+ DBLookupComboBox1->Text +"')" );
 
ADOQuery1->ExecSQL();
DataSource1->DataSet->Close(); 
ADOTable1->TableDirect=true;
DataSource1->DataSet->Open();
Edit1->Clear();
в третей строке проблема не могу разобраться. Помогите. Заранее спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.05.2011, 16:31
Ответы с готовыми решениями:

Связь нескольких таблиц
Всем привет! Подскажите как лучше реализовать следующую задумку. Есть база с несколькими таблицами. В первой таблице находятся товары...

Связь таблиц через ADOQuery
Ребята помогите связать таблице через ADOQuery через ключевой столбец в С++ Builder! Я хочу научиться создавать БД ! со связью уже мучаюсь...

Связь двух таблиц с помощью query
Доброй ночи, необходимо сделать так что бы в dbgrid2 отображались данные на основании dbgrid1. Есть БД Prisedb в ней две таблици...

26
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
31.05.2011, 16:51
Цитата Сообщение от washer Посмотреть сообщение
в третей строке проблема не могу разобраться. Помогите. Заранее спасибо!
Что за проблема?
0
0 / 0 / 1
Регистрация: 26.04.2011
Сообщений: 17
31.05.2011, 17:21  [ТС]
формат поля int (not null) а значение не добавляется
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
31.05.2011, 17:33
Ну если у тебя тип поля целочисленный ты не пробывал переконвертировать данные из строкового в целочисленный перед добавление в таблицу?
0
0 / 0 / 1
Регистрация: 26.04.2011
Сообщений: 17
01.06.2011, 10:09  [ТС]
а к примеру если в комбобоксе выбрать значение из полей Name а мне нужно чтоб вносилось значение той же строки только с поля Code. Как так сделать? Или нужно в комбобокс грузить данные с обох полей?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
01.06.2011, 10:20
Ну так вноси так
C++
1
Edit1->Text = ADOQuery1->FieldByName("Code")->AsString;
0
0 / 0 / 1
Регистрация: 26.04.2011
Сообщений: 17
01.06.2011, 10:27  [ТС]
ну например у меня в комбобоксе выбран сектор бетонщик (в поле код он обоначен цыфрой 5) и в таблицу нужно чтоб добавился только код а не имя
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
01.06.2011, 10:35
Ты когда в комбобоксе выбираешь название у тебя строка в базе выделяется или нет? я имею ввиду в гриде
0
0 / 0 / 1
Регистрация: 26.04.2011
Сообщений: 17
01.06.2011, 10:44  [ТС]
Нет вот тут как раз я и застрял
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
01.06.2011, 10:57
Ну так, тогда используй функцию Locate() для поиска в базе строки с именем бетонщик, а потом прировняешь значение по полю код к переменнойи внесёшь в базу
0
0 / 0 / 1
Регистрация: 26.04.2011
Сообщений: 17
02.06.2011, 10:05  [ТС]
в какой то из последних тем примеры вроде бы были. Спасибо за помощь!

Добавлено через 23 часа 3 минуты
Разобрался. Вышло такЖ
C++
1
2
3
4
5
6
7
8
9
10
TLocateOptions Options ;
Options.Clear();
 
(ADOTable2->Locate("Name",DBLookupComboBox1->Text,Options)) ;
 
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add( "INSERT INTO Line (Name,Sector) VALUES('"+ Edit1->Text + "','"+ ADOTable2->FieldByName("Code")->AsString +"')" );//команда внесення до скюель таблиці
 
ADOQuery1->ExecSQL();
Теперь возник следующий вопрос. как в cxGrid1 на форме отобразить эти данные только наоборот. Тоесть в таблице два поля ?

1 Line("Name")
2 Sector("Name") не Code!!! Вот тут не пойму как ведь связанные таблицы по другому полю
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
02.06.2011, 10:25
Цитата Сообщение от washer Посмотреть сообщение
на форме отобразить эти данные только наоборот
Это тебе надо поменять местами поля в гриде или как?
0
0 / 0 / 1
Регистрация: 26.04.2011
Сообщений: 17
02.06.2011, 10:52  [ТС]
нужно в грид засунуть информацию из двух таблиц Line("Name") и Sector("Name")
тоесть если вносили информацию в таблицу Line(Name,Code,Sector(это поле соответствует полю Code из таблицы Sector)). То должно получиться примерно вот так
| Name | Sector |
| 01 |бетонщик |
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
02.06.2011, 10:59
Составляй запрос на вывод синтаксис таблица точка поле
C++
1
Line.Name
0
0 / 0 / 1
Регистрация: 26.04.2011
Сообщений: 17
02.06.2011, 11:02  [ТС]
пробовал
C++
1
ADOQuery1->SQL->Add( " SELECT *FROM Line WHERE Name BEETWEN '" + ADOTable1->FieldByName("Name")+ "') and '"+ ADOTable2->FieldByName("Name") +"'  ;
не работает
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
02.06.2011, 11:08
C++
1
ADOQuery1->SQL->Add("SELECT Line.Code, Sector.Name *FROM  Sector");
0
0 / 0 / 1
Регистрация: 26.04.2011
Сообщений: 17
02.06.2011, 11:35  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
1
2
3
ADOQuery1->SQL->Add( "SELECT Line.Name, Sector.Name *FROM *Sector");
ошибка в FROM может использовать ADOQuery2?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
02.06.2011, 11:39
Я звёздочку перед Sector не ставил
0
0 / 0 / 1
Регистрация: 26.04.2011
Сообщений: 17
02.06.2011, 11:42  [ТС]
Incorrect syntax near the keyword 'FROM' звездочки у меня нет это тут опечатался
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
02.06.2011, 12:02
А так?
C++
1
ADOQuery1->SQL->Add( "SELECT Line.Name, Sector.Name *FROM Line, Sector");
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.06.2011, 12:02
Помогаю со студенческими работами здесь

Опять про COM порт
Здравствуйте. Наверняка данный вопрос уже неоднократно появлялся, но т.к. я к сожалению не программист, а скорей "железяньщик",...

Query связь 2-х таблиц
Уважаемые программисты помогите пожалуйста разобраться!!!. имеются 2-е таблицы Tab1 (Imya, Fam, Otch) Tab2(Otdel1,Otdel2,Otdel3) как...

Вопрос про связь двух таблиц
День добрый! Как правильно определить связь между таблицами "Сотрудники" и "Организации"? В каждой организации работает несколько...

Vopros дурацки :) про связь таблиц
итак, дело касаемо расчета себестоимости. есть рег накопления "себестоимость" остатки+ обороты. но у нас себестоимость считается...

Вопрос про обратную связь, и про схемотехнику полумоста
Добрый день) Я сейчас делаю схему от уважаемого rost c форума http://www.psb-kots.ru/forum/ , и мне непонятны некоторые моменты, а тот...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru