Форум: "Базы";
Текущий архив: 2003.04.10;
Скачать: [xml.tar.bz2];
ВнизТипы полей в Dbase Найти похожие ветки
← →
Vovik (2003-03-19 09:51) [0]Помогите узнать тип и размерность numeric поля DBF.
// Имя поля
DataSource1.DataSet.FieldDefs[i].Name
// Тип
DataSource1.DataSet.FieldDefs[i].FieldClass.ClassName
//А вот с размерностью поля проблемы
DataSource1.DataSet.FieldDefs[i].Size // Работает только для String полей, а для numeric всегда показывает 0
DataSource1.DataSet.FieldDefs[i].Precision // Всегда показывает 0. Не понятно для чего вообще это свойство.
← →
Vovik (2003-03-19 14:36) [1]Может хоть кто-нибудь подскажет?
← →
Соловьев (2003-03-19 14:52) [2]DataType тебе поможет.
← →
Vovik (2003-03-19 15:05) [3]Пока получается только узнавать тип поля через DataType :
ftUnknown, ftString, ftSmallint и т.д.
Можешь поточнее написать, как определить размер поля через DataType.
← →
Соловьев (2003-03-19 15:18) [4]SQL Syntax BDE Logical Paradox dBASE
SMALLINT fldINT16 Short Numeric(6,0)
INTEGER fldINT32 Long Long
DECIMAL fldBCD BCD(32,0) Numeric(20,0)
DECIMAL(7) fldBCD BCD(32,0) Numeric(7,0)
DECIMAL(7,2) fldBCD BCD(32,2) Numeric(7,2)
NUMERIC fldFLOAT Number Double
NUMERIC(7) fldFLOAT Number Double
NUMERIC(7,2) fldFLOAT Number Double
FLOAT fldFLOAT Number Double
FLOAT(7) fldFLOAT Number Double
FLOAT(7,2) fldFLOAT Number Double
CHARACTER(10) fldZSTRING Alpha(10) Character(10)
VARCHAR(10) fldZSTRING Alpha(10) Character(10)
DATE fldDATE Date Date
BOOLEAN fldBOOL Logical Logical
BLOB(1,1) fldstMEMO Memo Memo
BLOB(1,2) fldstBINARY Binary Binary
BLOB(1,3) fldstFMTMEMO Formatted memo Memo
BLOB(1,4) fldstOLEOBJ OLE OLE
BLOB(1,5) fldstGRAPHIC Graphic Binary
TIME fldTIME Time Character(11)
TIMESTAMP fldTIMESTAMP Timestamp Datetime
MONEY fldFLOAT, fldstMONEY Money Double
AUTOINC fldINT32, fldstAUTOINC Autoincrement Autoinc
BYTES fldBYTES Bytes(1) N/A
BYTES(10) fldBYTES Bytes(10) N/A
← →
Vovik (2003-03-19 15:42) [5]Мне нужно узнать размеры поля для конкретной (открытой) таблицы.
Почему DataSource1.DataSet.FieldDefs[i].Size показывает размер поля только для текстовых полей, а для numeriс показывает 0 ?
Можно ли вообще узнать размер numeric поля пользуясь стандартными компонентами Delphi или необходимо применять нестандартные методы, такие как чтение заголовка DBF (побайтно) или другие компоненты? Может есть у кого свои наработки?
← →
Vovik (2003-03-20 10:32) [6]Значит никто больше не может помочь мне?
Ведь как то DBF редакторы узнают структуру таблиц, неужели нельзя делать это средствами Delphi ?
← →
Vovik (2003-03-20 17:42) [7]Я не понимаю, если можно создать DBF-таблицу с заданной структурой, то неужели нельзя потом узнать эту самую структуру методами Дельфи?
← →
Mike Kouzmine (2003-03-20 17:54) [8]Тебе все объяснили, что не понятно?
← →
Vovik (2003-03-21 10:28) [9]Например я создаю таблицу:
COLUMN1 string 10
COLUMN2 string 5
COLUMN3 numeric 15,7
COLUMN4 numeric 14,0
Создается отлично, это мы все умеем.
Как мне после этого узнать структуру этой (или другой) таблицы.
Командами FieldDefs[i].FieldClass.ClassName я узнаю типы полей.
Команды FieldDefs[i].Size выдают правильные значения (10 и 5) для пезвых двух полей, а для 3-го и 4-го поля выдается значение 0.
Вопрос: как мне получить значения размера numeruc поля, в конкретном случае для 3 и 4 поля нужно получить значения (15,7 и 14,0)
← →
Reindeer Moss Eater (2003-03-21 11:05) [10]Команды FieldDefs[i].Size выдают правильные значения (10 и 5) для пезвых двух полей, а для 3-го и 4-го поля выдается значение 0.
Потому что TFieldDefs.Size и TFieldDefs.Precision актуальны для строковых полей и полей BCD.
Поля 3 и 4 у тебя - не ftBCD.
← →
Anatoly Podgoretsky (2003-03-21 11:14) [11]TFieldDefs.Precision не актуальна для строковых полей
Vovik © (21.03.03 10:28)
Тебе для чего таблицу типов привел Соловьев, ты же видишь, что там указано для numeric - fldFLOAT Number Double, этим ты как минимум создаешь поле типа Float для dBase
← →
Vovik (2003-03-21 12:08) [12]Может вопрос не совсем понятен или я что то недопонимаю.
Ведь любая Dbase (dbf) таблица уникальна по структуре.
И почти любые маломощные редакторы, вьюверы DBF показывают эту структуру. Например мой любимый CDBF for Win, может не только просматривать структуру, но и изменять ее.
Вчера целый день разбирал модули DB и Halcn6db (Мой любимый Halcyon :-)), но ничего кроме TFieldDefs.Size и TFieldDefs.Precision не нашел.
Если не трудно приведите пример кода (или пару команд), с которыми я смогу получить эту самую структуру методами Дельфи.
← →
HSolo (2003-03-24 11:24) [13]Попробуйте через BDE API
(DbiGetFieldDescs и иже с нею)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.04.10;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.05 c