Форум: "Начинающим";
Текущий архив: 2018.02.11;
Скачать: [xml.tar.bz2];
ВнизПрограммное создание dbf Найти похожие ветки
← →
Дмитрий (2016-02-16 19:59) [0]Всем привет!
Помогите. Создаю программно dbf.with Table1 do begin
Active:=false;
DatabaseName :="C:\_Work\Delphi\Create dbf\1";
TableName :="try.dbf";
TableType:=ttFoxPro;
TableLevel:=4;
FieldDefs.Clear;
end;
with Table1.FieldDefs.AddFieldDef do begin
Name:="CText1";
DataType:=ftString;
Size:=15;
end;
with Table1.FieldDefs.AddFieldDef do begin
Name:="CInt1";
DataType:=ftFloat;
end;
Table1.CreateTable;
Нужно создать поле CInt1 с типом Float, размером 5 и 2 точки после запятой.
Программно же создается поле с типом Number размером 20 и 4 знака после запятой.
Пробовал тип ftCurrency , тоже самое c ftBCD + Precision - не работает.
Так как же все таки программно создать поле в таблице, например с двумя знаками после запятой?
← →
KilkennyCat © (2016-02-16 21:43) [1]
> поле с типом Number размером 20 и 4 знака после запятой.
лекго вмещает в себя
> размером 5 и 2 точки после запятой.
Float = Numeric
и вообще FoxPro не устарело ли?
да и есть же справка: https://www.google.ru/search?q=foxpro+%D1%82%D0%B8%D0%BF%D1%8B+%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85&oq=foxpro+%D1%82%D0%B8%D0%BF%D1%8B+%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85&aqs=chrome..69i57j0l3.1290j0j7&sourceid=chrome&es_sm=93&ie=UTF-8
← →
Дмитрий (2016-02-16 22:06) [2]
> > поле с типом Number размером 20 и 4 знака после запятой.
>
>
> лекго вмещает в себя
> > размером 5 и 2 точки после запятой.
>
Вмещает, согласен, но нужно, чтобы отображалось 2 цифры после запятой.
Абсолютно согласен, что устарел. Но это не предмет вопроса.
Есть, что по вопросу?
← →
KilkennyCat © (2016-02-16 22:40) [3]
> Есть, что по вопросу?
есть. например, предложение: отделить мух от котлет, т.е. осознать разницу, что отвечает за хранение данных, а что - за отображение, и использовать Format.
Есть, конечно, вариант еще один (уж простите, не удержусь :) :
написать разработчикам бд, чтоб они ввели поля для 5.2 в частном случае, и для N.n в общем, и еще где все буквы "ы" будут автоматически подсчитаны.
← →
KilkennyCat © (2016-02-16 22:42) [4]http://delphibasics.ru/Format.php - смотреть Fixed, а также внизу слева похожие команды
← →
Дмитрий (2016-02-17 08:09) [5]Нужно, чтобы в не в delphi отображалось два знака, а в любом просмотрщике DBF.
> написать разработчикам бд, чтоб они ввели поля для 5.2 в
Я могу завести данный формат поля (5.2) если буду создавать базу через какой-нибудь DBView, ведь разработчики БД уже предусмотрели такую возможность!!! Вопрос заключается в том как это сделать программно?
← →
sniknik © (2016-02-17 12:38) [6]> Я могу завести данный формат поля (5.2) если буду создавать базу через какой-нибудь DBView ...
> Вопрос заключается в том как это сделать программно?
Database Desktop в поставке D7 использует DbiCreateTable, там можно делать такие поля, и функция программная... без обертки оперирующей "усредненными" типами. хочется помучится, вперед. :)
← →
KilkennyCat © (2016-02-17 12:45) [7]bd.fieldDefs.Add(fname, ftFloat, 5);
bd.fieldDefs[index_last_field].Precision := 2;
← →
Дмитрий (2016-02-17 21:35) [8]
> KilkennyCat © (17.02.16 12:45) [7]
> bd.fieldDefs.Add(fname, ftFloat, 5);
> bd.fieldDefs[index_last_field].Precision := 2;
Я прошу прощения, но у меня очень большие сомнения в компетентности этого мастера!
Вы хоть сами то пробуете, что советуете. Или от балды пишете
Во-первыхbd.fieldDefs.Add(fname, ftFloat, 5);
просто не проходит и выдает ошибку в RunTime
Во-вторыхbd.fieldDefs[index_last_field].Precision := 2;
не работает, как выдавал 4 знака после запятой, так и выдает
← →
KilkennyCat © (2016-02-17 21:49) [9]Во-первых, я не мастер.
Во-вторых, чтобы иметь сомнения в чей-то компетентности, надо свою нехилую иметь.
В-третьих, делфи у мня нет, попробовать не могу. Ради Вас покупать ее не буду.
В-четвертых,я не готовый код выдал, а направление, которое говорит, что Precision можно установить уже у существующего поля, а не при создании.
Ну уж и как оно на самом деле работает, и как там выдает - тут моей вины ваще ни грамма. Данное решение из справки.
← →
sniknik © (2016-02-18 01:12) [10]> просто не проходит и выдает ошибку в RunTime
тип флоат имеет "жесткую" размерность, и наверняка проверяется. хотя там не совсем флоат конечно, в dbase такого нет, и поэтому "усреднение" конвертируется... 19.4 или 20.9 что-то типа, и скорее всего зависит от версии dbase, типа в 3-4й 1 вариант в 5й 2-ой.
попробуй ftBcd. хотя не уверен (тоже не охота проверять). ну а вариант с bde функциями без оберток, что выше, точно сработает.
← →
Германн © (2016-02-18 01:41) [11]Удалено модератором
← →
Inovet © (2016-02-18 09:49) [12]> [5] Дмитрий (17.02.16 08:09)
> Нужно, чтобы в не в delphi отображалось два знака, а в любом
> просмотрщике DBF
Тогда причём тут Float? И не Float а Double и есть он не в люмом FoxPro а только в Visual FoxPro с какой-то там версии. А для хранения 5,2 нужен Numeric
И вообще надо так делать
create table try (
CText1 c(15),
CInt1 n(5, 2)
);
← →
Inovet © (2016-02-18 13:37) [13]> [12] Inovet © (18.02.16 09:49)
> try
Не надо так называть таблицу, может оказаться ключевым словом, да и глаз режет.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2018.02.11;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.001 c