Извиняюсь, я весь инет перерыл, только в одном месте нашёл описание проблемы, как у меня и то там абсолютно ничего не посоветовали
Может тут кто-нибудь сталкивался с подобной фигнёй. Мне нужно на C++ Builder (6) или Pascal Delphi (6) добавить несколько полей в файл dbf (через BDE!!!) и проблема в том, что когда я создаю таблицу dbf вещественные поля имеют только 4 знака после запятой, а мне надо больше
Я думал, что можно это решить, задавая значение свойства Precision, но нет, там всегда получается только 4 цифры после запятой, в независимости от этого свойства. А если задать свойство Size, то для ftFloat вообще выдаёт ошибку.
Вобщем создаётся поле размером 20 и 4 цифры после запятой, хоть головой об стену! Что тут делать, как задать точность, может кто знает?
int i;
TTable *Table1=new TTable(this);
TTable *Table2=new TTable(this);
if(Form1->OpenDialog1->Execute())
{
Table1->TableName=OpenDialog1->FileName;
Table1->Active=true;
Table2->TableName="temp.dbf";
Table2->TableType=ttFoxPro;
for(i=0; i
FieldCount; i++)
{
Table2->FieldDefs->Add(Table1->FieldDefs->Items[i]->Name, Table1->FieldDefs->Items[i]->DataType, Table1->FieldDefs->Items[i]->Size, Table1->FieldDefs->Items[i]->Required);
if(Table1->FieldDefs->Items[i]->DataType==6)
{
Table2->FieldDefs->Items[i]->Precision=8; // Как я пытаюсь задавать количество цифр после запятой в поле файла dbf, но не фига не получается
}
}
Table2->CreateTable();
Table2->Active=true;
Table1->First();
Table2->First();
while(!Table1->Eof)
{
Table2->Edit();
Table2->Insert();
for(i=0; iFieldCount; i++)
{
Table2->Fields->FieldByName(Table1->FieldDefs->Items[i]->Name)->AsString=Table1->Fields->FieldByName(Table1->FieldDefs->Items[i]->Name)->AsString;
}
Table2->Post();
Table1->Next();
}
Table1->Active=false;
Table2->Active=false;
}