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

Вниз

Delphi & ADO   Найти похожие ветки 

 
Postalll   (2006-07-10 14:39) [0]

Проблема такая: при открытии БД с помощью ADO мне надо знать тип каждого поля и фактический размер записи в этом поле. Т.е если это поле Double, то мне надо знать, какова длина числа этого поля в файле DBF. Не знаю, какой метод использовать (.DataSiza не подходит - он возвращает размер типа Double - 8b). Заранее благодарен :)


 
Sam Stone ©   (2006-07-10 14:46) [1]

Если поле Double, то под него всегда выделяется 8 байт. Если длины в датасете и базе отличаются то как-то это странно... Единственное глупое решение, пришедшее на ум - прочитать заголовок файла и вытащить длину нужного поля. Формат фокспрошной базы есть в гугле. Хотя решение жутко кривое и не претендует на первое место :)


 
Ega23 ©   (2006-07-10 14:51) [2]

Double всегда 8 байт, хоть убейся.


 
Postalll   (2006-07-10 14:54) [3]

Это то все верно :), но число в DBF можел храниться и в таком виде:
000004.3452, т.е. занимает 11 символов. Вот и вопрос: как эту длину определить?


 
Ega23 ©   (2006-07-10 14:56) [4]


> Вот и вопрос: как эту длину определить?


Никак. Если это строка, то и бери строку.


 
Ega23 ©   (2006-07-10 14:59) [5]

И вообще:

declare @X float
Set @X=1.0000000000000000000000000000000001

Select X=Cast(@X as varchar(1000))

Result:

X                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
------------------
1

(1 row(s) affected)


 
Postalll   (2006-07-10 15:09) [6]

Фишка в том, чтобы определить эту длину не с помощью SQL скрипта, а из Delphi, используя ADO для открытия БД.
Эта длина мне нужна для создания CTL файла, чтобы переместить данные из DBF в таблицу Oracle утилитой SQL Loader.


 
Desdechado ©   (2006-07-10 16:03) [7]

если для закачки, то зачем читать через адо?
заголовок файла доступен [1]


 
Postalll   (2006-07-11 16:37) [8]

Я разобрался - хорошо работает метод:
Query.Recordset.Fields[i].Precision - он определяет истинный размер нужного вам (i) поля.



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

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

Наверх




Память: 0.49 MB
Время: 0.05 c
2-1152693377
hgd
2006-07-12 12:36
2006.07.30
Polygon


15-1151568411
Джо
2006-06-29 12:06
2006.07.30
ROR на MIDletPascal или Java(J2ME)


2-1152259007
1519
2006-07-07 11:56
2006.07.30
Мультимедиа


2-1152528612
Як
2006-07-10 14:50
2006.07.30
Использование "не-com" интерфейсов


2-1152284856
Юсуф
2006-07-07 19:07
2006.07.30
Вопросики вместо текста