Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Базы данных > Создание таблицы в C++ Builder 6 в самой программе


Автор: lordrus 4.5.2010, 13:08
пробывал использовать код, но выдает ошибку об индексации

Код


TTable* Table2= new TTable(this);
Table2->DatabaseName="";
Table2->TableName="nomer2.db";
Table2->TableType=ttParadox;
Table2->FieldDefs->Clear();
Table2->IndexDefs->Clear();
TFieldDef* NewFieldDef=Table2->FieldDefs->AddFieldDef();
NewFieldDef->Name="ItemNo";
NewFieldDef->DataType=ftAutoInc;
NewFieldDef=Table2->FieldDefs->AddFieldDef();
NewFieldDef->Name="Item";
NewFieldDef->DataType=ftString;
NewFieldDef->Size=50;
NewFieldDef->Required=true;
NewFieldDef=Table2->FieldDefs->AddFieldDef();
NewFieldDef->Name="Category";
NewFieldDef->DataType=ftInteger;
NewFieldDef->Required=true;
NewFieldDef=Table2->FieldDefs->AddFieldDef();
NewFieldDef->Name="Description";
NewFieldDef->DataType=ftString;
NewFieldDef->Size=100;
NewFieldDef=Table2->FieldDefs->AddFieldDef();
NewFieldDef->Name="Index";
NewFieldDef->DataType=ftString;
NewFieldDef->Size=5;
NewFieldDef->Required=true;
NewFieldDef=Table2->FieldDefs->AddFieldDef();
NewFieldDef->Name="Price";
NewFieldDef->DataType=ftCurrency;
NewFieldDef->Required=true;
TIndexDef* NewIndexDef=Table2->IndexDefs->AddIndexDef();
NewIndexDef->Name="<Primary>";
NewIndexDef->Fields="ItemNo";
NewIndexDef->Options=TIndexOptions() << ixUnique;
NewIndexDef=Table2->IndexDefs->AddIndexDef();
NewIndexDef->Name="ItemNDX";
NewIndexDef->Fields="Item";
NewIndexDef->Options=TIndexOptions() << ixUnique;
Table2->CreateTable();
delete(Table2);


Помогите исправить этот код или подскажите другой

Автор: Данкинг 4.5.2010, 14:01
Более конкретно вопрос можно сформулировать? В каком месте и какая ошибка? Сама таблица создаётся? При чём там индексация?

Автор: lordrus 4.5.2010, 14:39
таблица не создается выдает ошибку 

user posted image
Как исправить этот код что бы он создавал таблицу програмно, или подскажите другой

Автор: Данкинг 4.5.2010, 15:59
Попробуй для начала убрать индексы и всё, что с ними связано (все TIndexDef).

Автор: lordrus 4.5.2010, 17:07
Спасибо за советы!!!исправил сам, ошибка была только в одном слове

Код

NewIndexDef->Name="<Primary>";
NewIndexDef->Fields="ItemNo";
NewIndexDef->Options=TIndexOptions() << ixPrimary;


в начальном варианте было   "ixUnique"

Автор: lordrus 13.5.2010, 21:45
создаю таблицу при помощи кода:

Код


 ifstream input_file("название.txt");

   while (! input_file.eof()) 

   { 
      input_file >> word; 
      cout << word << endl; 
   }

AnsiString str1;
str1=word;
TTable* Table2= new TTable(this);
Table2->DatabaseName="C:\Tables";
Table2->TableName=str1;
Table2->TableType=ttParadox;
Table2->FieldDefs->Clear();
Table2->IndexDefs->Clear();
TFieldDef* NewFieldDef=Table2->FieldDefs->AddFieldDef();
NewFieldDef->Name="№ соревнования";
NewFieldDef->DataType=ftAutoInc;
NewFieldDef=Table2->FieldDefs->AddFieldDef();
NewFieldDef->Name="№ дистанции";
NewFieldDef->DataType=ftInteger;
NewFieldDef->Required=true;
NewFieldDef=Table2->FieldDefs->AddFieldDef();
NewFieldDef->Name="Тип дистанции";
NewFieldDef->DataType=ftString;
NewFieldDef->Size=50;
NewFieldDef->Required=true;
TIndexDef* NewIndexDef=Table2->IndexDefs->AddIndexDef();
NewIndexDef->Name="<Primary>";
NewIndexDef->Fields="№ дистанции";
NewIndexDef->Options=TIndexOptions() << ixPrimary;
NewIndexDef=Table2->IndexDefs->AddIndexDef();
NewIndexDef->Name="ItemNDX";
NewIndexDef->Fields="№ соревнования";
NewIndexDef->Options=TIndexOptions() << ixUnique;
Table2->CreateTable();


Как програмно  связать эту таблицу со второй таблицей "glav" с первичным индексом поля "№ соревнования"! Буду очень признателен за подробное описание, а то мне нужно еще несколько различных таблиц создать в програме и подключить их в дальнейшем.

Заранее ОГРОМНОЕ СПАСИБО!!!

Автор: Kasiro 8.11.2010, 00:02
lordrus, что ты имеешь ввиду под "связать"?
сделать связи как в акцессе? если да то тут такого небывают, такие связи будешь делать в запросах с помощью inner join, left, right join и др.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)