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

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

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

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

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

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

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

Добавление записи в 2 таблицу
Всем привет. Ребят помогите пожалуйста в c++ Builder не давно начал работать да и в c++ не особо...

18
Sasha
4926 / 2390 / 530
Регистрация: 05.06.2008
Сообщений: 7,483
Записей в блоге: 3
03.01.2012, 00:47 2
http://www.firststeps.ru/cbuilder/bde/r.php?11

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

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

Выложи код
0
flashart
0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 13
03.01.2012, 12:04  [ТС] 9
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
4926 / 2390 / 530
Регистрация: 05.06.2008
Сообщений: 7,483
Записей в блоге: 3
03.01.2012, 12:14 10
Есть вариант добавить столбец запросом
0
flashart
0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 13
03.01.2012, 12:26  [ТС] 11
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
4926 / 2390 / 530
Регистрация: 05.06.2008
Сообщений: 7,483
Записей в блоге: 3
03.01.2012, 12:29 12
Давай попробуем сделать такую вставку

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
flashart
0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 13
03.01.2012, 12:30  [ТС] 13
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
4926 / 2390 / 530
Регистрация: 05.06.2008
Сообщений: 7,483
Записей в блоге: 3
03.01.2012, 12:37 14
Цитата Сообщение от flashart Посмотреть сообщение
Table1->Insert();
Table1->FieldByName(Edit1->Text)->Value=NULL;
Table1->Post();
Так это ты пустоту и вносишь

Добавлено через 5 минут
Смотри 12 пост
0
flashart
0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 13
03.01.2012, 12:54  [ТС] 15
Цитата Сообщение от 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
4926 / 2390 / 530
Регистрация: 05.06.2008
Сообщений: 7,483
Записей в блоге: 3
03.01.2012, 13:35 16
Он говорит, что таблица не индексирована
0
MsGuns
537 / 537 / 57
Регистрация: 04.04.2011
Сообщений: 2,003
03.01.2012, 13:52 17
Путаница с добавлением колонок в отображаемый датасет (в данном случае посредством TTable) на клиенте с физической реструктуризацией таблицы в базе данных.
Но если уж приспичило и гарантированно база более никем не используется, то используйте DDL-SQL (через TQuery) либо прямые вызова библиотеки BDE dbo.../dbi...)
В целом у автора проблемы "в консерватории", - потребность изменения кол-ва колонок в физической таблице в "рабочем" порядке однозначно говорит об очень начальном, "чайниковском" уровне разработчика программы (и базы тоже)
0
flashart
0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 13
03.01.2012, 19:22  [ТС] 18
А как индексировать таблицу?

Добавлено через 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
MsGuns
537 / 537 / 57
Регистрация: 04.04.2011
Сообщений: 2,003
04.01.2012, 11:36 19
Delphi
1
Всё хорошо добавляет. Только таблица не сохраняется
Вы ничего не поняли из [17]
0
04.01.2012, 11:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2012, 11:36

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

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

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


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

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

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