Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.18;
Скачать: CL | DM;

Вниз

Поле типа float фикс. размера (12,2).   Найти похожие ветки 

 
kalishenko   (2004-06-17 13:24) [0]

При создании таблицы не получается создать поле типа 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;

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


 
Reindeer Moss Eater ©   (2004-06-17 13:29) [1]

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

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


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

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

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

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


 
Reindeer Moss Eater ©   (2004-06-17 14:19) [3]

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


 
kalishenko   (2004-06-17 15:15) [4]

Да, читал. Только так и не понял до конца.
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?


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

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


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

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


 
Anatoly Podgoretsky ©   (2004-06-17 16:59) [7]

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


 
kalishenko   (2004-06-17 17:03) [8]

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


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

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


 
HSolo ©   (2004-06-18 09:34) [10]

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


 
Anatoly Podgoretsky ©   (2004-06-18 09:35) [11]

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


 
Anatoly Podgoretsky ©   (2004-06-18 09:37) [12]

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



Страницы: 1 вся ветка

Текущий архив: 2004.07.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.045 c
3-1087411300
Timur
2004-06-16 22:41
2004.07.18
Проблема с insert


3-1087809705
denis24
2004-06-21 13:21
2004.07.18
Как закрыть сразу все открытые датасеты?


14-1088351549
Knight
2004-06-27 19:52
2004.07.18
У кого есть плугин для миранды, отображающий...


8-1083186234
Zeon
2004-04-29 01:03
2004.07.18
Запись звука


14-1088229142
Sanek_metaller
2004-06-26 09:52
2004.07.18
Как поиграть в WarCraft3 FT по модему?