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

Добавление поля в таблицу БД

01.06.2011, 21:46. Показов 2618. Ответов 12
Метки нет (Все метки)

Доброго времени суток. Прошу прощения, если вопрос окажется глупым. Я долгое время провел в поисках решения данного вопроса, но в результате я нашел для себя то, что просто добавить поле в готовую БД программным путем нет, а можно только заново создать всю таблицу. Надеюсь я ошибаюсь.
И все-таки подскажите, если можно. БД Access, подключена через BDE.
В БД содержится информация о регионах, странах и городах. К примеру есть таблица "Европа", в ней поле "Страны", где список европейских стран. Есть так же таблица "Европа города", где поля с названием страны. Мне нужно программным путем добавить в таблицу "Европа" еще одну страну, что не проблема... Но при добавлении страны, в таблице "Европа города" должно появиться поле с соответствующей страной, куда будут заноситься города.
Вся логика не интересует, это я напишу.
Единственное, прошу подсказать, как все-таки добавить это поле?!
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.06.2011, 21:46
Ответы с готовыми решениями:

Добавление нового поля в таблицу
В таблицу Access мне нужно добавлять поле при нажатии на кнопку. ADOQuery1->Active=false;...

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

Добавление поля в таблицу через запрос на добавление
Здравствуйте, подскажите как создать запрос, чтобы к таблице добавить еще одно поле. Поля, не...

Добавление из формы поля в таблицу
Данные такие есть на форме поле в котором вычисляются значения скажем с 1 - 3 ,1-4, 1-5, 2-10...

12
78 / 78 / 6
Регистрация: 18.06.2009
Сообщений: 533
01.06.2011, 23:00 2
Тебе нужно добавить новое поле? или запись?
1
1 / 1 / 0
Регистрация: 19.02.2010
Сообщений: 26
02.06.2011, 00:11  [ТС] 3
Цитата Сообщение от Oxotnuk Посмотреть сообщение
Тебе нужно добавить новое поле? или запись?
Добавляя запись в одну таблицу, в другой нужно добавить такое же поле. Как запись добавить это конечно я знаю, но поле не получается.

По скринам думаю станет ясно:

0
78 / 78 / 6
Регистрация: 18.06.2009
Сообщений: 533
02.06.2011, 00:29 4
А поле статическое ты врядли добавишь,в существующую таблицу, можно создавать динамические поля,всякую ерунду,но это врядли....
хм,судя по всему,тебе нужно добавить запись,в существующее поле....(как я понял по скринам)
то сделай какой то радио батон,на него повесь switch,выбирай какую то страну,и запросами добавляй в них записи,если я так понял,то это 20 минутное дело...
1
1 / 1 / 0
Регистрация: 19.02.2010
Сообщений: 26
02.06.2011, 00:49  [ТС] 5
Да нет же. Добавляя Новую запись в поле "страна" в таблице "Европа", нужно и добавить поле с названием страны в таблицу "Европа города", в которое будут добавляться уже города этой страны.
0
78 / 78 / 6
Регистрация: 18.06.2009
Сообщений: 533
02.06.2011, 00:53 6
Ну значит,просто сделать перекрестным запросом(они хитро вые****) почитай про них...
1
1388 / 1156 / 218
Регистрация: 04.04.2011
Сообщений: 4,033
02.06.2011, 09:58 7
Никаких добавлений полей ни в какие таблицы не требуется. У Вас классический случай "один-ко-многим", где главной таблицей служит "справлчник" стран, а подчиненной - города с странах:

Countries:

CoID - UID страны (счетчик)
CoName - наименование страны (текст)

Cities:

CiID - UID города (счетчик)
CoID - ссылк на UID страны (длинное целое)
CiName - Наименование города (текст)

Как правильно программировать работу в режиме "один ко многим" см. в папке DEMOS Вашего ПК
1
4951 / 2415 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
02.06.2011, 10:00 8
Цитата Сообщение от sergei_exe Посмотреть сообщение
долгое время провел в поисках решения данного вопроса, но в результате я нашел для себя то, что просто добавить поле в готовую БД программным путем нет, а можно только заново создать всю таблицу.
Враньё, всё можно сделать
https://www.cyberforum.ru/cpp-... 66829.html
1
1 / 1 / 0
Регистрация: 19.02.2010
Сообщений: 26
05.06.2011, 13:50  [ТС] 9
Цитата Сообщение от MsGuns Посмотреть сообщение
Никаких добавлений полей ни в какие таблицы не требуется. У Вас классический случай "один-ко-многим", где главной таблицей служит "справлчник" стран, а подчиненной - города с странах:

Countries:

CoID - UID страны (счетчик)
CoName - наименование страны (текст)

Cities:

CiID - UID города (счетчик)
CoID - ссылк на UID страны (длинное целое)
CiName - Наименование города (текст)

Как правильно программировать работу в режиме "один ко многим" см. в папке DEMOS Вашего ПК
Подобное я встречал, но не хотел применять, из-за того, что придется все время фильтровать таблицу.
Теперь все-таки решился, но в качестве ID решил написать не номер, а полностью слово (к примеру германия).
Раньше сталкивался с проблемой фильтрации на кириллице, но так и не решил.
Подскажите, как ее решить?! Т.е. при фильтрации к примеру по Германии выдает ошибку, мол не найдено "Г". Оно берет только лишь первую букву.

Если реализовать id цифрами, то и в таблице "Европа" придется добавлять счетчик, а потом, что бы номера стран совпадали в разных таблицах... Уж очень не хочется усложнять себе жизнь(
0
1388 / 1156 / 218
Регистрация: 04.04.2011
Сообщений: 4,033
06.06.2011, 10:43 10
Delphi
1
Подобное я встречал, но не хотел применять, из-за того, что придется все время фильтровать таблицу.
Это кто-то Вам подсказал эту дикую глупость, я надеюсь ?

Delphi
1
Теперь все-таки решился, но в качестве ID решил написать не номер, а полностью слово (к примеру германия).
"В качестве" ID может быть только ID, т.е. идентификатор. Вообще-то правильно будет UID - уникальный идентификатор записи (в акцесе - счетчик). Сущность, на которой строится как на фундаменте вся бинес-логика "грамотных" БД. Подробно про UId читайте в инете - океаны информации.
Другое дело, что Вы не хотите использовать ID вообще, в качестве первичного ключа выбрав название страны. Так можно, конечно, хотя и противоречит доминанте 3n-нормализации (тоже в гугл !)

Delphi
1
Раньше сталкивался с проблемой фильтрации на кириллице, но так и не решил.
Нет никаких проблем с "фильтрацией на кириллице", есть проблемы глюкавости BDE, без танцев с бубном (а в случае с DB Desktop и это часто не помогает) не понимающем кориллицы (знаменитые "кракозябрики" вместо букав) и настройки некоторых серверов (кляуза COLLATE например)

Delphi
1
Подскажите, как ее решить?! Т.е. при фильтрации к примеру по Германии выдает ошибку, мол не найдено "Г". Оно берет только лишь первую букву.
Как реализована фильтрация - код сюда !

Delphi
1
Если реализовать id цифрами, то и в таблице "Европа" придется добавлять счетчик, а потом, что бы номера стран совпадали в разных таблицах... Уж очень не хочется усложнять себе жизнь(
Счетчик придется добавялть во ВСЕ таблицы БД, от чего, уверяю, она только выиграет ! Все межтабличные ссылки только по ID !, Что значит "номера стран", UID - это не номер !!! Это вообще не сущность (кстати, на клиенте нечего его показывать в сетках, он все ранвно ничего юзеру не скажет)

Жизнь усложнится (гарантированно) если Вы возьмете за правило строить базу на объектах, имеющих обязательную сущность - UID
1
1 / 1 / 0
Регистрация: 19.02.2010
Сообщений: 26
06.06.2011, 17:25  [ТС] 11
MsGuns, я уже все сделал, хоть и не хотел так.

Но вот с фильтрацией хотелось бы разобраться.

Сейчас к примеру у меня выходит так:

C++
1
Table2->Filter="ID = "+DBEdit1->Text;
Где в DBEdit1->Text идет ID выделенной страны из первой таблицы.

Тогда же я хотел использовать текст вместо чисел:
C++
1
Table2->Filter="Страна = "+DBLookupListBox1->SelectedItem;
Где в DBLookupListBox1->SelectedItem содержалось к примеру "Германия", но тогда выскакивает ошибка, мол Г не найдено.
0
1388 / 1156 / 218
Регистрация: 04.04.2011
Сообщений: 4,033
06.06.2011, 21:33 12
Table2->Filter="Страна = "+QuotedStr(DBLookupListBox1->SelectedItem);
1
1 / 1 / 0
Регистрация: 19.02.2010
Сообщений: 26
07.06.2011, 21:35  [ТС] 13
Цитата Сообщение от MsGuns Посмотреть сообщение
Table2->Filter="Страна = "+QuotedStr(DBLookupListBox1->SelectedItem);
Спасибо большое, буду знать.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.06.2011, 21:35

Добавление нового поля в таблицу
Здравствуйте. Access2003. При закрытии формы пытаюсь добавить поле в имеющуюся таблицу (форма с...

Добавление данных из поля ввода в таблицу
Всем доброго времени суток. Есть задание: создать базу спорткомплекса, запарился на форме с...

Добавление поля в таблицу со значением по умолчанию
Добавление поля в таблицу со значением по умолчанию создал запрос ALTER TABLE ADD ...

Добавление и удаление данных в таблицу через поля едит
я написал код но не могу понять почему все время выходит ошибка параметр va не имеет значения по...


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

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

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