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

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

02.01.2012, 23:49. Показов 2629. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется c++ builder 6 и таблица paradox 7. Нужно удалять и добавлять столбцы у таблицы. В таблице изначально 5 столбиков "F.I.O." "1" "2" "3" "4"
Добавляю:
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm3::Button1Click(TObject *Sender)
{
Form1->Table1->Active = false;
Table1->Close();
Form1->Table1->DatabaseName = "C:\\Users\\flashart\\Desktop\\Курсач Новосёлов";
Form1->Table1->TableType = ttDBase;
Form1->Table1->TableName = "Р-100101";
Form1->Table1->FieldDefs->Add(Edit1->Text, ftString, 4, True);
Form1->Table1->CreateTable();
Form1->Table1->Close();
Form1->Table1->Active = true;
}
Столбец добавляет, но при добавлении записи в таблицу пишет ошибку "Project Project1.exe raised exception class EDatabaseError with message 'Field 'Edit1' must have a value'. Process stoped. Use step or run to continue." Помогите. В чём дело?
И ещё помогите удалять столбцы.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.01.2012, 23:49
Ответы с готовыми решениями:

Добавление колонок
У меня есть таблица с 3 полями(колонками). Мне надо динамически,т.е. кодом, добавить колонку в базу данных, но при добавлении записи в...

Добавление записи в таблицу
ВСем привет! Ребят, помогите плиз. Я уже не знаю как быть. Пытаюсь создать на кнопочку обычное добавление записи в таблицу, но нифига не...

Добавление строки в таблицу
Доброго времени суток! Никак не могу разобраться с добавлением строки в таблицу, имеется база MSSQL , в таблице всего 2 поля ID и NAME ,...

18
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
03.01.2012, 00:47
http://www.firststeps.ru/cbuilder/bde/r.php?11

Добавлено через 1 минуту
По экспериментируй с кавычками в Edi1->Text
0
0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 13
03.01.2012, 11:05  [ТС]
что-то экспериментирую, пишет или "Table is busy" или "must have a value". Можете подкинуть пример кода на добавление столбика? и как его потом удалить например?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
03.01.2012, 11:36
А вот так вот добавляет
C++
1
Form1->Table1->FieldDefs->Add("5", ftString, 4, True);
0
0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 13
03.01.2012, 11:43  [ТС]
Добавляет.Начинаю добавлять в новую таблицу данные и он выдаёт ошибку: 'Field '5' must have a value'. Вылетает и таблица не сохраняется
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
03.01.2012, 11:47
А какие значения ты туда вводишь в это поле?

Я имею ввиду цифры или буквы?
0
0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 13
03.01.2012, 11:49  [ТС]
всё пробовал, и цифры и буквы. Он даже пустые записи не хочет записывать.
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
03.01.2012, 11:56
А как ты заносишь данные в это созданное поле?

Выложи код
0
0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 13
03.01.2012, 12:04  [ТС]
C++
1
2
3
4
5
6
7
Table1->Insert();
Table1->Fields->Fields[0]->AsString=Edit1->Text;
for(int i=1; i<Table1->Fields->Count; i++)
{
Table1->Fields->Fields[i]->AsString=Edit2->Text[i];
}
Table1->Post();
Да я даже пробую с DBNavigator вносить данные, нажимаю добавить и он ошибку выдаёт: 'Field '5' must have a value' И таблица не сохраняется при выходе
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
03.01.2012, 12:14
Есть вариант добавить столбец запросом
0
0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 13
03.01.2012, 12:26  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TForm1::Button8Click(TObject *Sender)
{
Table1->Active = false;
Table1->DatabaseName = "F:\\Курсач";
Table1->TableType = ttDBase;
Table1->TableName = "Р-100101";
Table1->FieldDefs->Add(Edit1->Text, ftString, 4, True);
Table1->CreateTable();
Table1->Active = true;
Table1->Insert();
Table1->FieldByName(Edit1->Text)->Value=NULL;
Table1->Post();
}
Добавляет столбец, вносит данные, но не сохраняет при выходе.
Покажи пример запроса, я SQL не изучал, не знаком. Это с помощью Query?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
03.01.2012, 12:29
Давай попробуем сделать такую вставку

C++
1
2
3
4
5
6
7
Table1->Insert();
Table1->Fields->Fields[0]->AsString=Edit1->Text;
Table1->Fields->Fields[1]->AsString=Edit2->Text;
Table1->Fields->Fields[2]->AsString=Edit2->Text;
Table1->Fields->Fields[3]->AsString=Edit2->Text;
Table1->Fields->Fields[4]->AsString=Edit2->Text;
Table1->Post();
0
0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 13
03.01.2012, 12:30  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TForm1::Button8Click(TObject *Sender)
{
Table4->Active = false;
Table4->DatabaseName = "F:\\Курсач Новосёлов(рабочий)";
Table4->TableType = ttDBase;
Table4->TableName = "Р-200101";
Table4->FieldDefs->Add(Edit1->Text, ftString, 4, True);
Table4->CreateTable();
Table4->Active = true;
Table4->Insert();
Table4->FieldByName(Edit1->Text)->Value=NULL;
Table4->Post();
}
Добавляет столбцы, вносятся данные. Но при выходе не сохраняет таблицу.
Покажи пример с запросом. Я с SQL не знаком просто, это элемент Query?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
03.01.2012, 12:37
Цитата Сообщение от flashart Посмотреть сообщение
Table1->Insert();
Table1->FieldByName(Edit1->Text)->Value=NULL;
Table1->Post();
Так это ты пустоту и вносишь

Добавлено через 5 минут
Смотри 12 пост
0
0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 13
03.01.2012, 12:54  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
Давай попробуем сделать такую вставку

C++
1
2
3
4
5
6
7
Table1->Insert();
Table1->Fields->Fields[0]->AsString=Edit1->Text;
Table1->Fields->Fields[1]->AsString=Edit2->Text;
Table1->Fields->Fields[2]->AsString=Edit2->Text;
Table1->Fields->Fields[3]->AsString=Edit2->Text;
Table1->Fields->Fields[4]->AsString=Edit2->Text;
Table1->Post();
Всё хорошо вносит. Выхожу из программы. Снова захожу: таблица пустая, при попытке открыть пишет "Тable is not indexed"

Добавлено через 16 минут
C++
1
DataSource1->DataSet=Table1;
Хочу отобразить новую таблицу на DBGrid. Пишет: "Тable is not indexed"
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
03.01.2012, 13:35
Он говорит, что таблица не индексирована
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
03.01.2012, 13:52
Путаница с добавлением колонок в отображаемый датасет (в данном случае посредством TTable) на клиенте с физической реструктуризацией таблицы в базе данных.
Но если уж приспичило и гарантированно база более никем не используется, то используйте DDL-SQL (через TQuery) либо прямые вызова библиотеки BDE dbo.../dbi...)
В целом у автора проблемы "в консерватории", - потребность изменения кол-ва колонок в физической таблице в "рабочем" порядке однозначно говорит об очень начальном, "чайниковском" уровне разработчика программы (и базы тоже)
0
0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 13
03.01.2012, 19:22  [ТС]
А как индексировать таблицу?

Добавлено через 51 минуту
C++
1
2
3
4
5
6
7
8
9
10
void __fastcall TForm1::Button8Click(TObject *Sender)
{
Table1->Active = false;
Table1->DatabaseName = "F:\\Курсач Новосёлов(рабочий)";
Table1->TableType = ttDBase;
Table1->TableName = "Р-100101";
Table1->FieldDefs->Add(Edit1->Text, ftString, 10, True);
Table1->CreateTable();
Table1->Active=true;
}
Всё хорошо добавляет. Только таблица не сохраняется. А если вывожу в DBGrid пишет "Тable is not indexed" Помогите пожалуйста

Добавлено через 23 минуты
http://www.fayloobmennik.net/1363115 это вся моя программа, если интересно
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
04.01.2012, 11:36
Delphi
1
Всё хорошо добавляет. Только таблица не сохраняется
Вы ничего не поняли из [17]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.01.2012, 11:36
Помогаю со студенческими работами здесь

Добавление записей в таблицу
Как при помощи компонента Table добавлять записи в Табличку, если все значения полей для добавления вводятся в компонент Edit? ...

Добавление записи в 2 таблицу
Всем привет. Ребят помогите пожалуйста в c++ Builder не давно начал работать да и в c++ не особо шарю. Вообщем есть 2 таблички Темы (Код...

Добавление поля в таблицу БД
Доброго времени суток. Прошу прощения, если вопрос окажется глупым. Я долгое время провел в поисках решения данного вопроса, но в...

Добавление данных в таблицу
как зделать так чтоби можна било добавлять дание в таблицю access??????

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


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru