![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ADO, строка подключения и диск D [D5, D6, D7, CSV]
ИМХО © (2003-10-14 11:21:00)
Не могу понять одной вещи. Может подскажете? Почему в строке подключения в качестве Data Source нужно указывать диск D:\ ???
ИМХО (2003-10-15 09:11:00) [1]
Сенк ю.
Anatoly Podgoretsky (2003-10-15 00:36:00) [2]
Изменение файла Schema.ini для текстовых данных и данных HTML
Для чтения, импорта или экспорта данных в формате текстовых файлов и HTML необходимо включить в файл .ini разделы текстовых драйверов ISAM и в дополнение к этому создать файл Schema.ini. Файл Schema.ini должен описывать следующие характеристики источника данных: формат текстового файла, способ его чтения при импорте и стандартный формат экспорта файлов. Ниже приводится пример структуры для файла с фиксированной длиной записей, Filename.txt:
[Filename.txt]
ColNameHeader=False
Format=FixedLength
FixedFormat= RaggedEdge
MaxScanRows=25
CharacterSet=OEM
Col1=columnname Char Width 24
Col2=columnname2 Date Width 9
Col3=columnname7 Float Width 10
Col4=columnname8 Integer Width 10
Col5=columnname9 LongChar Width 10
Аналогично, формат текстового файла с разделителями задается следующим образом:
[Delimit.txt]
ColNameHeader=True
Format=Delimited()
MaxScanRows=0
CharacterSet=OEM
Col1=username char width 50
Col2=dateofbirth Date width 9
Для экспорта данных в текстовый файл с разделителями также следует указать формат:
[Export: Специальный экспорт]
ColNameHeader=True
Format=TabDelimited
MaxScanRows=25
CharacterSet=OEM
DateTimeFormat=mm.dd.yy.hh.mm.ss
CurrencySymbol=Dm
CurrencyPosFormat=0
CurrencyDigits=2
CurrencyNegFormat=0
CurrencyThousandSymbol=,
CurrencyDecimalSymbol=.
DecimalSymbol=,
NumberDigits=2
NumberLeadingZeros=0
TxtDelimiter
Пример «Специальный экспорт» представляет конкретную спецификацию экспорта, которая может быть изменена при подключении. Последний пример соответствует передаче имени источника данных (DSN) во время подключения. Все три раздела должны быть включены в один файл .ini.
ИМХО (2003-10-14 23:56:00) [3]
А обязательно имя секции называть по имени текстового файла?
sniknik (2003-10-14 23:23:00) [4]
1: да вроде бы. (можно еще альтернативу работу как с текстовым файлом добавить)
2: это потому как он не знает тип поля и ставится максимум char(255)
задавай типы в том же SCHEMA.INI файле, для примера
[BOX.TXT]
ColNameHeader=False
CharacterSet=1251
Format=Delimited(;)
Col1=ID Integer
Col2=NEXTID Integer
Col3=PREDID Integer
Col4=REMARK Char Width 20
Col5=Fl Float
Col6=Cur Currency
3: ставится с ms office 2000/XP (во всяком случае только в них видел) и только если выбереш установку с хелпами/полную.
JETSQL40.CHM это не все, там еще несколько связаных хелпов все вместе > 5 мег. (попробуй сначала из офиса поставить)
ИМХО (2003-10-14 22:56:00) [5]
Спасибо огромное за помощь, но тем не менее еще 3 вопроса осталось:
1. Таким образом, получается 2 альтернативы: или править реестр (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Text\), или создавать SCHEMA.INI рядом с файлами, которые открываются, так ведь?
2. DBGrid при открытии CSV-файла странно себя ведет. В смысле он растягивает свой столбец до несуразных размеров. Как это лечится?
3. Не нашел на своем диске файла JETSQL40.CHM (он ведь так называется?) :(
Где его можно скачать? Или не могли бы Вы его скинуть мне, sniknik?
ИМХО (2003-10-14 22:36:00) [6]
Боже мой!
sniknik (2003-10-14 21:35:00) [7]
> Мне непонятно, почему по умолчанию он работает с точкой с запятой. Где это проставлено?
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Text\Format=Delimited(;)
поменяеш на запятую будет запятая (на все время коннекта, во время изменения не подействуют)
> З.Ы. А может файл надо создавать в каталоге программы?
а откуда Jet будет знать где каталог твоей программы? нет надо рядом с файлами которые открываеш.
ИМХО (2003-10-14 18:48:00) [8]
Мне непонятно, почему по умолчанию он работает с точкой с запятой. Где это проставлено?
З.Ы. А может файл надо создавать в каталоге программы?
Delirium (2003-10-14 18:11:00) [9]
Так работает Jet, что я могу предложить?
ИМХО (2003-10-14 18:06:00) [10]
Что значит "рядом лежит файл SCHEMA.INI"? Допустим, заранее неизвестно, где лежит искомый CSV-файл, поскольку выбрать его - это прерогатива юзверя. И как в этом случае поступать? Плодить везде файлы SCHEMA.INI?
Delirium (2003-10-14 18:02:00) [11]
Итак есть файл aaa.txt
a,b
1,2
2,3
рядом лежит файл SCHEMA.INI
[aaa.txt]
ColNameHeader=True
Format=Delimited(,)
DecimalSymbol=.
MaxScanRows=0
CharacterSet=ANSI
и все всё понимают
ИМХО (2003-10-14 17:49:00) [12]
> Delirium © (14.10.03 17:13) [30]
Очень интересный постинг, но как настроить ADO на файл SCHEMA.INI (которого я, кстати, не нашел, и который, я полагаю, нужно создавать вручную)?
ИМХО (2003-10-14 17:44:00) [13]
Для примера CSV-файл:
name1,name2
cvgxv,gc
cgx,gc
cgx,gc
,cg
Открывается, но в одном столбце.
Anatoly Podgoretsky (2003-10-14 17:16:00) [14]
ИМХО © (14.10.03 17:02) [29]
Ты до сих пор не умудрился показать нам свои данные. И чего то при этом хочешь, может они у тебя неправильного формата.
Delirium (2003-10-14 17:15:00) [15]
Пример к вышесказанному
[SCHEMA.INI]
ColNameHeader=True
Format=TabDelimited
MaxScanRows=0
CharacterSet=ANSI
Delirium (2003-10-14 17:13:00) [16]
To import or export text data with the Jet engine, you must create and specify settings in SCHEMA.INI in addition to the [Text I-ISAM] section in VB.INI or APP.INI. SCHEMA.INI instructs the Jet engine how the text file is formatted and how it is to be read at import time.
SCHEMA.INI can contain multiple sections. Each section in SCHEMA.INI represents a file name or a saved export format.
Table 8.6 shows the settings that Visual Basic uses in SCHEMA.INI.
Table 8.6 Values in SCHEMA.INI for Text Data
Section Entry
Description
ColNameHeader
Indicates whether the first record (row) in the file contains column names. Set to True or False.
Format
Set to one of the following: TabDelimited, CVSDelimited, Delimited(<singlecharacter>) or Fixed Length. If single-character delimited, any character except for the quotation mark (") can be used.
MaxScanRows
The number of rows to scan when guessing the column type. If 0, the entire file is scanned.
CharacterSet
Set to OEM or ANSI, depending on the code page of the text file.
DateTimeFormat
A format string used for dates and times. This entry should be specified if all date and time fields in the import or export file use the same format. If no format string is specified, the control panel short date and time options are used. Format strings are specified by indicating the number of entries for each date or time entry— for example mm-dd-yy hh:mm:ss .
CurrencySymbol
Indicates the currency symbol to be used for any currency values in the text file. If no value is specified, the control panel setting is used.
CurrencyDigits
Specifies the number of digits used for the fractional (change) part of currency values. If no value is specified, the control panel setting is used.
CurrencyNegativeFormat
Set to one of the following values:
Value
Example
0
($1)
1
-$1
2
$-1
3
$1-
4
(1$)
5
-1$
6
1-$
7
1$-
8
-1 $
9
-$ 1
10
1 $-
11
$ 1-
12
$ -1
13
1- $
14
($ 1)
15
(1 $)
When specifying the entry in SCHEMA.INI, only the numeric number is used. For example: CurrencyNegativeFormat=13.
If this entry is not present, the control panel setting is used.
Note: The dollar sign ($) is used here only as an example. The actual symbol used is specified with CurrencyFormat.
DecimalSymbol
Indicates the single character separating the whole and fractional parts of the currency value. If not specified, the control panel setting is used.
NumberDigits
Indicates the number of decimal digits in the fractional portion of the currency value. If not specified, the control panel setting is used.
NumberLeadingZeros
Specifies whether decimal values less than 1 and greater than -1 should contain leading zeros. Valid values are 0 (no leading zeros) or 1.
ИМХО (2003-10-14 17:02:00) [17]
> Anatoly Podgoretsky © (14.10.03 16:29) [27]
> Потому что у тебя такой системный разделитель списков
Да нет же! Я уже поменял его (теперь стоит запятая), и все равно то же самое.
Delirium (2003-10-14 16:55:00) [18]
"> сортировка, фильтрация
все в памяти (свойство ADODataSet.Sort, Filter), индексов нет использовать нельзя" - ну, давайте не будем так горячиться, в ADO есть механизм индексации независимый от ole db провайдера, правда называется это не индексация, а оптимизация...
ADOQuery1.Open;
ADOQuery1.Recordset.Fields["MyField"].Properties["Optimize"].Value:=True;
Anatoly Podgoretsky (2003-10-14 16:29:00) [19]
Потому что у тебя такой системный разделитель списков
ИМХО (2003-10-14 16:22:00) [20]
И все же: почему он понимает точку с запятой, а просто запятую понимать не желает? Где корень?