Главная страница
    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.47 MB
Время: 0.011 c
4-1144682201
Ромка
2006-04-10 19:16
2006.07.30
Периоды времени мельше 1 милисекунды


3-1148803253
Ivan123
2006-05-28 12:00
2006.07.30
как увидеть messages от SQL-server


1-1150811878
Zilog
2006-06-20 17:57
2006.07.30
использование внешней библиотеки


1-1150884526
eugenemail1970
2006-06-21 14:08
2006.07.30
Нужно модернизировать TBarSeries


2-1152699297
Pavor
2006-07-12 14:14
2006.07.30
Самопроизвольно меняется массив?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский