Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.006 c
3-30237
Timer
2003-03-20 22:04
2003.04.10
Хранение форматированного текста в БД


7-30622
Sergei
2003-02-14 16:03
2003.04.10
Как запретить на машине запуск любых консольных приложений?


14-30536
Ильдар
2003-03-24 11:15
2003.04.10
Пернос приложения на др комп


14-30521
Yuri20031
2003-03-21 19:15
2003.04.10
Как скрыть вкладку


1-30440
XTC
2003-03-27 09:43
2003.04.10
Резидентная программа





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский