Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.11.03;
Скачать: [xml.tar.bz2];

Вниз

ADO, строка подключения и диск D   Найти похожие ветки 

 
ИМХО   (2003-10-14 11:21) [0]

Не могу понять одной вещи. Может подскажете? Почему в строке подключения в качестве Data Source нужно указывать диск D:\ ???


 
Vlad   (2003-10-14 11:29) [1]

В качестве Data Source (а вернее Data Source Name) не нужно указывать диск D:\


 
ИМХО   (2003-10-14 11:40) [2]

Нужно, мне один здешний мастер так сказал.


 
Vlad   (2003-10-14 11:43) [3]

Ну раз он мастер, тогда пусть объяснит зачем :)


 
sniknik   (2003-10-14 11:49) [4]

не может быть (видимо это я имеюсь ввиду), но ничего подобного не говорил.
было чтото вроде "путь задавать как "d:\" а не "...", как было в присланом вопросе"
D:\ это пример, я с ним всегда работаю (у меня d: это рейд массив), у тебя это может быть любой реально существующий путь.


 
sniknik   (2003-10-14 12:04) [5]

точная фраза
"строка "..." пути совсем не содержит, должно быть "D:\" и т.д."

(как это было сказано)

насчет доп. вопросав
> Какой компонент с вкладки ADO лучше использовать?"
я пользуюсь
ADOConnection (обязательно!, хотя можно задавать строку коннекта непосредственно в датасете но это чревато проблемами)
ADOCommand и ADODataSet

спец примера под CVS нет, работай как с обычной таблицей, но не забывай что это простой текстовый файл с присущими ему ограничениями.

> сортировка, фильтрация
все в памяти (свойство ADODataSet.Sort, Filter), индексов нет использовать нельзя.


 
ИМХО   (2003-10-14 13:00) [6]

Когда я указывал реально существующий путь до своего CSV-файла, выскакивало сообщение об ошибке:

"Ошибка Microsoft Data Link
Сбой проверки подключения из-за ошибки при инициализации поставщика.
Строка "..." задает ошибочный путь.
Проверьте, что путь задан правильно и имеется подключение к серверу, на котором находятся файлы"


 
sniknik   (2003-10-14 13:13) [7]

> Когда я указывал реально существующий ...
а счас?

не знаю что ты указывал, но путь тремя точками не задается (могут быть одна и две точки в некоторый случаях).

я конечно теперь догадываюсь что под точками ты имел ввиду свой путь в символах но я то его не вижу, вижу то что ни в одной строке не пройдет а декларируется как путь. вот и дал тебе рабочий пример со своим.


 
ИМХО   (2003-10-14 13:16) [8]

Ну да, под треми точками подразумевается путь C:\Projects\TestADO\test.csv


 
Anatoly Podgoretsky   (2003-10-14 13:17) [9]

sniknik © (14.10.03 13:13) [7]
Ааааа, ты думаешь он его указал :-(


 
sniknik   (2003-10-14 13:22) [10]

ИМХО © (14.10.03 13:16) [8]
тогда поставь C:\Projects\TestADO\ без указания файла

Anatoly Podgoretsky © (14.10.03 13:17) [9]
а чего еще думать?
".\" нормальный путь. (когда обязательно нужен текущий корень)
с двумя тоже (от текущей директории)
а тут три, ну думаю ошибся парень.


 
Anatoly Podgoretsky   (2003-10-14 13:25) [11]

Я вообще то про рабочий пример со своим


 
sniknik   (2003-10-14 13:33) [12]

аааа, тонкий английский юмор!? :о) (ну и так же понятно что это про путь, или нет?)


 
ИМХО   (2003-10-14 13:44) [13]

Вроде открывает, но не так, как надо:

const
ConnStr =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Extended Properties=Text;Persist Security Info=False";
begin
if not OpenDialog1.Execute then
Exit;

if not ADOConnection1.Connected then
ADOConnection1.ConnectionString := Format(ConnStr,
[ExtractFilePath(OpenDialog1.FileName)]);

CSVDataSet.CommandText := "SELECT * FROM " + ExtractFileName(OpenDialog1.FileName);

CSVDataSet.Open;
end;


 
ИМХО   (2003-10-14 13:46) [14]

Есть подозрение, что я неверно пишу в CommandText. Но что туда писать?


 
sniknik   (2003-10-14 13:51) [15]

> Вроде открывает, но не так, как надо:
а как надо? в чем проявляется "не так"?

(но вобще до вечера, у меня выезд, может кто еще поможет)

Anatoly Podgoretsky © (14.10.03 13:25) [11]
кстати прикольно, как дошло... да как представил... изрядно повеселился. :о)))


 
sniknik   (2003-10-14 13:54) [16]

> Есть подозрение, что я неверно пишу в CommandText. Но что туда писать?
все правильно,
может только еще можно (но не обязательно раз открывает), в кавычки омя иоставить и точку на решотку заменить чтобы запрос получился таким
"SELECT * FROM [test.#Txt]"


 
ИМХО   (2003-10-14 13:55) [17]

Открывает в один столбец. То есть не видит, что полей гораздо больше, чем одно.


 
ИМХО   (2003-10-14 14:10) [18]

Открывает ошибочно - в одну колонку :(((

И еще вопрос. Где можно указать, что выступает в качестве разделителя полей (запятая, точка с запятой, табулятор и проч.)?


 
ИМХО   (2003-10-14 15:03) [19]

Вот этот код тож не помогает:

const
ConnStr =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Extended Properties=Text;Persist Security Info=False";
var
ODName: string;
begin
if not OpenDialog1.Execute then
Exit;

ODName := OpenDialog1.FileName;
CSVDataSet.Close;

if not ADOConnection1.Connected then
ADOConnection1.ConnectionString := Format(ConnStr,
[ExtractFilePath(ODName)]);

CSVDataSet.CommandText := "SELECT * FROM [" +
ChangeFileExt(ExtractFileName(ODName), "") + "#csv]";

CSVDataSet.Open;
end;

Данные читаются в один столбец, в CSV-файле разделителем служит запятая.


 
ИМХО   (2003-10-14 15:06) [20]

Блин, я РАЗОЧАРОВАЛСЯ в возможностях ADO по обработке CSV-файлов :(((


 
Anatoly Podgoretsky   (2003-10-14 15:10) [21]

Ну это ты считаешь, что у тебя csv файл, а АДО видимо так не считает, попробуй во первых заменить запятую на системный разделитель списков


 
ИМХО   (2003-10-14 15:16) [22]

Это в "Язык и стандарты" - Числа - Разделитель элементов списка?

Не помогает :(


 
Anatoly Podgoretsky   (2003-10-14 15:20) [23]

Ну так может у тебя и другие данные неправильные?


 
ИМХО   (2003-10-14 15:57) [24]

Мой пример нормально работает, если разделителем служит точка с запятой. Но на практике чаще встречается вариант с запятой. В конце концов, это ведь COMMA SEPARATED!


 
Anatoly Podgoretsky   (2003-10-14 16:00) [25]

Это название файла, а не соответствие формату.
Сходи в Королевство Дельфи там в лицее есть статья про файлы. Думаю написаное там распространяется и на АДО


 
ИМХО   (2003-10-14 16:22) [26]

И все же: почему он понимает точку с запятой, а просто запятую понимать не желает? Где корень?


 
Anatoly Podgoretsky   (2003-10-14 16:29) [27]

Потому что у тебя такой системный разделитель списков


 
Delirium   (2003-10-14 16:55) [28]

"> сортировка, фильтрация
все в памяти (свойство ADODataSet.Sort, Filter), индексов нет использовать нельзя" - ну, давайте не будем так горячиться, в ADO есть механизм индексации независимый от ole db провайдера, правда называется это не индексация, а оптимизация...
ADOQuery1.Open;
ADOQuery1.Recordset.Fields["MyField"].Properties["Optimize"].Value:=True;


 
ИМХО   (2003-10-14 17:02) [29]


> Anatoly Podgoretsky © (14.10.03 16:29) [27]
> Потому что у тебя такой системный разделитель списков


Да нет же! Я уже поменял его (теперь стоит запятая), и все равно то же самое.


 
Delirium   (2003-10-14 17:13) [30]

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.


 
Delirium   (2003-10-14 17:15) [31]

Пример к вышесказанному
[SCHEMA.INI]
ColNameHeader=True
Format=TabDelimited
MaxScanRows=0
CharacterSet=ANSI


 
Anatoly Podgoretsky   (2003-10-14 17:16) [32]

ИМХО © (14.10.03 17:02) [29]
Ты до сих пор не умудрился показать нам свои данные. И чего то при этом хочешь, может они у тебя неправильного формата.


 
ИМХО   (2003-10-14 17:44) [33]

Для примера CSV-файл:

name1,name2
cvgxv,gc
cgx,gc
cgx,gc
,cg

Открывается, но в одном столбце.


 
ИМХО   (2003-10-14 17:49) [34]


> Delirium © (14.10.03 17:13) [30]


Очень интересный постинг, но как настроить ADO на файл SCHEMA.INI (которого я, кстати, не нашел, и который, я полагаю, нужно создавать вручную)?


 
Delirium   (2003-10-14 18:02) [35]

Итак есть файл aaa.txt
a,b
1,2
2,3

рядом лежит файл SCHEMA.INI
[aaa.txt]
ColNameHeader=True
Format=Delimited(,)
DecimalSymbol=.
MaxScanRows=0
CharacterSet=ANSI

и все всё понимают


 
ИМХО   (2003-10-14 18:06) [36]

Что значит "рядом лежит файл SCHEMA.INI"? Допустим, заранее неизвестно, где лежит искомый CSV-файл, поскольку выбрать его - это прерогатива юзверя. И как в этом случае поступать? Плодить везде файлы SCHEMA.INI?


 
Delirium   (2003-10-14 18:11) [37]

Так работает Jet, что я могу предложить?


 
ИМХО   (2003-10-14 18:48) [38]

Мне непонятно, почему по умолчанию он работает с точкой с запятой. Где это проставлено?

З.Ы. А может файл надо создавать в каталоге программы?


 
sniknik   (2003-10-14 21:35) [39]

> Мне непонятно, почему по умолчанию он работает с точкой с запятой. Где это проставлено?
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Text\Format=Delimited(;)
поменяеш на запятую будет запятая (на все время коннекта, во время изменения не подействуют)

> З.Ы. А может файл надо создавать в каталоге программы?
а откуда Jet будет знать где каталог твоей программы? нет надо рядом с файлами которые открываеш.


 
ИМХО   (2003-10-14 22:36) [40]

Боже мой!



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

Форум: "Базы";
Текущий архив: 2003.11.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.01 c
3-8262
IBNovice
2003-10-14 15:57
2003.11.03
LookUp in DBGrid


1-8472
Mishenka
2003-10-23 18:39
2003.11.03
Как распечатать на принтере содержимое Memo?


4-8730
Сергей Резников
2003-08-28 14:08
2003.11.03
как получить hIcon иконки файла, используя SHGetFileInfo ?


3-8335
Geugenk
2003-10-11 16:19
2003.11.03
Table.eof


1-8400
ChayNik
2003-10-22 15:52
2003.11.03
Оформление





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