Доброго времени суток всем. Нужна помощь такого плана - пишу прогу на С++ Builder 6. При вводе кое-каких данных и нажатии на кнопку должна создаваться таблица(если её ещё нет) и вноситься в неё данные. В суть программы думаю вникать не буду сейчас, так как не в этом суть. Примерный код такой:
Код:

AnsiString b=ComboBox4->Text+".db";//таблица имеет имя, вводимое или выбираемое в списке
if(access(b.c_str(),0)!=0)//проверяем существование таблицы
{
Table1->Active = false; // Компонент TTable должен быть отключен.
// Опишем параметры таблицы.
Table1->DatabaseName = "AceLet";//БД
Table1->TableType = ttParadox; //как обычно, Парадокс.
// Опишем поля и их типы.
Table1->FieldDefs->Clear();
TFieldDef *pNewDef=Table1->FieldDefs->AddFieldDef();
pNewDef->Name="Date";// Дата матча
pNewDef->DataType=ftDate;//тип поля
pNewDef->Required=true;
pNewDef=Table1->FieldDefs->AddFieldDef();
pNewDef->Name="Name";// имя
pNewDef->DataType=ftString;//тип поля
pNewDef->Size=15;
//установим, является ли поле обязательным
pNewDef=Table1->FieldDefs->AddFieldDef();
pNewDef->Name="sex";// пол, принимает значения 1 или 0. Можно было сделать тип boolean, но что-то не могу с ним разобраться
pNewDef->DataType=ftInteger;//тип поля
pNewDef=Table1->FieldDefs->AddFieldDef();
pNewDef->Name="Ageh";// возраст1.
pNewDef->DataType=ftInteger;//тип поля
pNewDef=Table1->FieldDefs->AddFieldDef();
pNewDef->Name="Agea";// возраст3.
pNewDef->DataType=ftInteger;//тип поля
pNewDef=Table1->FieldDefs->AddFieldDef();
pNewDef->Name="Age2h";// возраст4.
pNewDef->DataType=ftInteger;//тип поля
pNewDef=Table1->FieldDefs->AddFieldDef();
pNewDef->Name="Age2a";// возраст5.
pNewDef->DataType=ftInteger;//тип поля
//следующие поля просто создаются, данные в них вносятся с другой формы позже
pNewDef=Table1->FieldDefs->AddFieldDef();
pNewDef->Name="Red";// цвет
pNewDef->DataType=ftInteger;//тип поля
pNewDef=Table1->FieldDefs->AddFieldDef();
pNewDef->Name="Yel";// цвет2.
pNewDef->DataType=ftInteger;//тип поля
pNewDef=Table1->FieldDefs->AddFieldDef();
pNewDef->Name="Place";// место.
pNewDef->DataType=ftInteger;//тип поля
// Теперь взялись за индексы
Table1->IndexDefs->Clear();
TIndexDef *newIndexDef = Table1->IndexDefs->AddIndexDef();
newIndexDef->Name = "T3";
newIndexDef->Fields = "Date";
newIndexDef->Options = TIndexOptions() << ixPrimary << ixUnique;
// Ну и наконец, создаем таблицу.
Table1->CreateTable();
Table1->Active=true;
Table1->Append();
Table1->FieldValues["Date"] = DateTimePicker1->Date;
Table1->FieldValues["Name"] = ComboBox4->Text;
Table1->FieldValues["sex"] = 0;
if(RadioButton1->Checked==false)
{
Table1->FieldValues["Ageh"] = CSpinEdit1->Value;
Table1->FieldValues["Ageа"] = CSpinEdit2->Value;
}
Table1->FieldValues["Age2h"] = CSpinEdit3->Value;
Table1->FieldValues["Age2а"] = CSpinEdit4->Value;
Table1->Post();
Table1->ApplyUpdates();
}
//если таблица существует, то просто вносим данные
else
{
Table1->Active=true;
Table1->Append();
Table1->FieldValues["Date"] = DateTimePicker1->Date;
Table1->FieldValues["Name"] = ComboBox3->Text;
Table1->FieldValues["sex"] = 1;
if(RadioButton1->Checked==false)
{
Table1->FieldValues["Ageh"] = CSpinEdit1->Value;
Table1->FieldValues["Ageа"] = CSpinEdit2->Value;
}
Table1->FieldValues["Age2h"] = CSpinEdit3->Value;
Table1->FieldValues["Age2а"] = CSpinEdit4->Value;
Table1->Post();
Table1->ApplyUpdates();
}
Проблема с описанием индексов. Сокращаю создаваемую таблицу до двух полей - всё ОК. Ставлю, как в данном примере - выползает "Key Violation" и хоть об стену убейся. Пробовал ставить для каждого поля, начиная со второго ещё индексы, типа
Table1->IndexDefs->Add("Fld5Index","Agea", TIndexOptions() << ixCaseInsensitive);
, тоже никакого изменения.
Подскажите, что не так. А то в сети решения на Key Violation больше на отмазки похожи.