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

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

31.05.2011, 16:31. Просмотров 1850. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2011, 16:31
Ответы с готовыми решениями:

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

Связь таблиц через ADOQuery
Ребята помогите связать таблице через ADOQuery через ключевой столбец в С++...

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

Опять про COM порт
Здравствуйте. Наверняка данный вопрос уже неоднократно появлялся, но т.к. я к...

Query связь 2-х таблиц
Уважаемые программисты помогите пожалуйста разобраться!!!. имеются 2-е таблицы...

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

Добавлено через 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
4924 / 2388 / 530
Регистрация: 05.06.2008
Сообщений: 7,482
Записей в блоге: 3
02.06.2011, 10:25 12
Цитата Сообщение от washer Посмотреть сообщение
на форме отобразить эти данные только наоборот
Это тебе надо поменять местами поля в гриде или как?
0
washer
0 / 0 / 1
Регистрация: 26.04.2011
Сообщений: 17
02.06.2011, 10:52  [ТС] 13
нужно в грид засунуть информацию из двух таблиц Line("Name") и Sector("Name")
тоесть если вносили информацию в таблицу Line(Name,Code,Sector(это поле соответствует полю Code из таблицы Sector)). То должно получиться примерно вот так
| Name | Sector |
| 01 |бетонщик |
0
Sasha
4924 / 2388 / 530
Регистрация: 05.06.2008
Сообщений: 7,482
Записей в блоге: 3
02.06.2011, 10:59 14
Составляй запрос на вывод синтаксис таблица точка поле
C++
1
Line.Name
0
washer
0 / 0 / 1
Регистрация: 26.04.2011
Сообщений: 17
02.06.2011, 11:02  [ТС] 15
пробовал
C++
1
ADOQuery1->SQL->Add( " SELECT *FROM Line WHERE Name BEETWEN '" + ADOTable1->FieldByName("Name")+ "') and '"+ ADOTable2->FieldByName("Name") +"'  ;
не работает
0
Sasha
4924 / 2388 / 530
Регистрация: 05.06.2008
Сообщений: 7,482
Записей в блоге: 3
02.06.2011, 11:08 16
C++
1
ADOQuery1->SQL->Add("SELECT Line.Code, Sector.Name *FROM  Sector");
0
washer
0 / 0 / 1
Регистрация: 26.04.2011
Сообщений: 17
02.06.2011, 11:35  [ТС] 17
Цитата Сообщение от Sasha Посмотреть сообщение
1
2
3
ADOQuery1->SQL->Add( "SELECT Line.Name, Sector.Name *FROM *Sector");
ошибка в FROM может использовать ADOQuery2?
0
Sasha
4924 / 2388 / 530
Регистрация: 05.06.2008
Сообщений: 7,482
Записей в блоге: 3
02.06.2011, 11:39 18
Я звёздочку перед Sector не ставил
0
washer
0 / 0 / 1
Регистрация: 26.04.2011
Сообщений: 17
02.06.2011, 11:42  [ТС] 19
Incorrect syntax near the keyword 'FROM' звездочки у меня нет это тут опечатался
0
Sasha
4924 / 2388 / 530
Регистрация: 05.06.2008
Сообщений: 7,482
Записей в блоге: 3
02.06.2011, 12:02 20
А так?
C++
1
ADOQuery1->SQL->Add( "SELECT Line.Name, Sector.Name *FROM Line, Sector");
0
02.06.2011, 12:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2011, 12:02

2 вопроса про цикл и про FileCreate
1.При выполнении прога зависает: int count = 1; AnsiString myF; ...

Про видео и про событие формы)
Народ, у мня тут два вопросика есть. Надеюсь что кто-то знает ответы) Делаю...

И опять регулярки
Приветствую, ребята! Столкнулся с такой проблемой. Есть текст: И правило...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru