Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поле типа float фикс. размера (12,2). [D6, dBase, FoxPro]


kalishenko ©   (2004-06-17 13:24:00) 

При создании таблицы не получается создать поле типа float фикс. размера. Мне нужно, чтобы размер был 12,2. Пример кода:

procedure TForm1.Button1Click(Sender: TObject);
var Table: TTable;
begin
 Table := TTable.Create(Self);
 with Table do
 begin
   DatabaseName := 'c:\temp';
   TableName := 'pay.DBF';
   TableType := ttFoxPro;
   with FieldDefs do
   begin
     Clear;
     Add('rec_date', ftDate, 0, False);
     Add('post_date', ftDate, 0, False);
     Add('npp', ftString, 7, False);
     Add('proj_type', ftString, 2, False);
     Add('rnproj', ftSmallint, 0, False);
     Add('client', ftString, 6, False);
     Add('f_client', ftString, 6, False);
     Add('cmp_name', ftString, 30, False);
     Add('fname', ftString, 24, False);
     Add('dep_number', ftString, 4, False);
     Add('tab_number', ftString, 5, False);
      Add('amount', ftFloat, 0, False);
     Add('currency', ftString, 3, False);
     Add('reference', ftString, 20, False);
     Add('branch', ftString, 5, False);
     Add('operator', ftString, 10, False);
   end;
   CreateTable;
   Free;
 end;
 ShowMessage('Ok!');
end;

Вопрос стандартный: как быть?


Anatoly Podgoretsky   (2004-06-18 09:37:00) [1]

Твои слова " А мне нужно DBase III для DOS..."вот на него и меняй


Anatoly Podgoretsky   (2004-06-18 09:35:00) [2]

BDE это библиотека доступа, работай напрямую с ней, а не с VCL


HSolo   (2004-06-18 09:34:00) [3]

Попробуйте SQL-запросом:
alter table таблица add поле numeric(12,2)


kalishenko   (2004-06-17 18:32:00) [4]

Неужели никто не знает?


kalishenko   (2004-06-17 17:03:00) [5]

А на какой именно поменять и что значит "переходи на БДЕ
"?


Anatoly Podgoretsky   (2004-06-17 16:59:00) [6]

Смени драйвер по умолчанию или переходи на БДЕ


kalishenko   (2004-06-17 16:56:00) [7]

И еще. Поменял тип таблицы на ttBase - получил поле нужного размера. Но сама таблица вышла типа DBase для Windows. А мне нужно DBase III для DOS...


kalishenko   (2004-06-17 16:22:00) [8]

Главное в Database Desktop-е все нормально создается, только вот типа BCD у Фокспро нет. Делаю тип Numeric и ставлю размер 12 и 2. Но ведь так не интересно (ч/з Database Desktop). Попробовал через SQL-запрос, но не знаю как создать таблицу типа ttFoxPro. Поможите...


kalishenko   (2004-06-17 15:15:00) [9]

Да, читал. Только так и не понял до конца.
For a BCD field, Size is the number of digits following the decimal point.
Т.е. Size - число цифр после запятой.

When defining a BCD field, set Precision to the total number of digits stored for each field value.
Т.е. по-идее, Precision - общее кол-во цифр поля.
Но, когда ставлю
Size := 2;
Precision := 14;
все-равно дает мне 20,4. Может все дело в типе таблицы ttFoxPro?


Reindeer Moss Eater   (2004-06-17 14:19:00) [10]

А ты прочитал что такое Size и что такое Precision?


kalishenko   (2004-06-17 13:45:00) [11]

Что-то не так делаю:

with AddFieldDef do
begin
 Name :='amount';
 DataType := ftBCD;
 Size := 12;
 Precision := 2;
end;

Все равно в итоге получаю поле размером 20,4.


Reindeer Moss Eater   (2004-06-17 13:29:00) [12]

Прочитай пояснение к атрибутам Size и Precision.
Для ftFloat они вообще неактуальны.

Использовать надо ftBCD тип.


Наверх

Титульная страница Поиск, карта сайта Написать письмо