On-line: Andrey, гостей 1. Всего: 2 [подробнее..]
АвторСообщение



Пост N: 50
Зарегистрирован: 12.07.06
ссылка на сообщение  Отправлено: 04.07.11 06:59. Заголовок: Проблема с APPEND FROM


Споткнулся на ровном месте, нужно загрузить в DBF-файл данные из текстового файла. Разделителем данных служит символ - ";"
пример записи: bla-bla,28;5157;9.67;3;01/05/2011
использую команду: APPEND FROM (inTxt) DELIMITED WITH ";"
Но указанный мной разделитель игнорируеться, а для разбиения используеться запятая.
Не могу сообразить в чём ошибка, может кто подскажет или может поделитесь работающим примером.
У меня идеи кончились

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 8 [только новые]


Администратор




Пост N: 1977
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 04.07.11 08:02. Заголовок: Прежде всего, надо с..


Прежде всего, надо собрать prg с флагом -p, и в файле *.ppo посмотреть, правильно ли передается 3-й параметр функции __dbDelim

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 51
Зарегистрирован: 12.07.06
ссылка на сообщение  Отправлено: 05.07.11 04:17. Заголовок: Клиент в затылок дыш..


Клиент в затылок дышит, нужно быстро выдать решение.
Буду читать файл на низком уровне и сам разбирать строку по полям

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 129
Зарегистрирован: 05.06.07
ссылка на сообщение  Отправлено: 05.07.11 08:49. Заголовок: если буквально верит..


если буквально верить синтаксису из хелпа
SYNTAX  
APPEND FROM <xcFile>
[ FIELDS <idField list>] [<scope>]
[ WHILE <lCondition>]
[ FOR <lCondition>]
[ SDF | DELIMITED [ WITH BLANK | <xcDelimiter>] | [ VIA <xcDriver>]]

то надо писать
APPEND FROM (inTxt) DELIMITED ";" 

без WITH

P.S. Хотя в std.ch написано так
#command APPEND [FROM <(f)>] [FIELDS <fields,...>] ; 
[FOR <for>] [WHILE <while>] [NEXT <next>] ;
[RECORD <rec>] [<rest:REST>] [ALL] ;
[DELIMITED [WITH <*delim*>]] => ;
__dbDelim( .F., <(f)>, <(delim)>, { <(fields)> }, ;
<{for}>, <{while}>, <next>, <rec>, <.rest.> )

может попробовать вызвать напрямую функцию __dbDelim

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 38
Зарегистрирован: 19.08.10
ссылка на сообщение  Отправлено: 05.07.11 10:03. Заголовок: Из рабочей задачи: ..


Из рабочей задачи:

Mas2:=sInBox+"pmon2.csv"

IF FILE(Mas2)
APPEND FROM ( Mas2 ) ;
FOR Upper( alltrim( InnR ) ) <> "INNR" ;
DELIMITED WITH ( {'"', ';'} )
//// Пересоздадим индексы

Set index to Pmon2, Pmon2c

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 209
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 05.07.11 11:23. Заголовок: alex_II пишет: Спот..


alex_II пишет:

 цитата:
Споткнулся на ровном месте, нужно загрузить в DBF-файл данные из текстового файла.



Ну, как бы к разделу GUI тема не относится, нужно перенести в соответствующий раздел.

Попробывал на harbour действительно не работает с ";".

SADSTAR2 пишет:

 цитата:
то надо писать

APPEND FROM (inTxt) DELIMITED ";"


без WITH

.

Выдает:
a1.prg(6) Error E0030 Syntax error "syntax error at 'FROM'"

SADSTAR2 пишет:

 цитата:
может попробовать вызвать напрямую функцию __dbDelim


Вызывал напрямую, результат тот же - не принимает ";"

Chikanuk пишет:

 цитата:
DELIMITED WITH ( {'"', ';'} )


а так работает.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 52
Зарегистрирован: 12.07.06
ссылка на сообщение  Отправлено: 05.07.11 11:35. Заголовок: APPEND FROM (inTxt) ..


APPEND FROM (inTxt) DELIMITED ";" - вызывает синтаксическую ошибку
Хотя и решил уже проблему через чтение строк функцией FReadStr, не поленился и проверил последний предложенный вариан:
APPEND FROM ( inTxt) DELIMITED WITH ( {';'} )
Получил те же грабли
В моем случае я читаю данные из текстового файла в досовкой кодировке и что проходит для csv-файла, в моём случае не работает.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 210
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 05.07.11 11:42. Заголовок: alex_II пишет: посл..


alex_II пишет:

 цитата:
последний предложенный вариан:
APPEND FROM ( inTxt) DELIMITED WITH ( {';'} )
Получил те же грабли



Нужно именно, как сказал
Chikanuk пишет:

 цитата:
DELIMITED WITH ( {'"', ';'} )



alex_II пишет:

 цитата:
В моем случае я читаю данные из текстового файла в досовкой кодировке и что проходит для csv-файла, в моём случае не работает.


опять же вопрос - на чем пишеш?
Для harbour синтакс такой (из std.ch):
#command APPEND [FROM <(f)>] [FIELDS <fields,...>] ;
[FOR <for>] [WHILE <while>] [NEXT <next>] ;
[RECORD <rec>] [<rest:REST>] [ALL] ;
[DELIMITED [WITH <*delim*>]] [CODEPAGE <cp>] => ;
__dbDelim( .F., <(f)>, <(delim)>, { <(fields)> }, ;
<{for}>, <{while}>, <next>, <rec>, <.rest.>, <cp> )
есть CODEPAGE. А какая разница в какой кодировке ";"?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 39
Зарегистрирован: 19.08.10
ссылка на сообщение  Отправлено: 05.07.11 13:28. Заголовок: DELIMITED WITH ( {&#..


DELIMITED WITH ( {'"', ';'} )

{"", - ограничитель содержимого поля (если значения в файле в кавычках - то {' " ',)
';'} - разделитель полей

csv - comma separated value / значения, разделенные запятыми. То есть текстовый файл. Кодировка роли не играет. Конвертнуть не проблема. К тому же автоматом переводится в указанную для таблиц.

Указанный мной пример грузит данные из такого файла:

Изосорбида мононитрат;Эфокс 20 таблетки № 50 20 мг;Шварц Фарма АГ (Германия);Шварц Фарма АГ (Германия);;204.40;8.00;3066.00;"7019002, 8000101, 8095805, 8062801";54;;0;10 шт., упаковки ячейковые контурные (5) - пачки картонные;П N011548/01;38744;666109;472;0;2;2010;5;0.00;0.00

Выгрузка - аналогично

//---------------------------------------------
Select Zakaz

DirChange(sOutBox)

COPY TO (sZakazFileName) ;
//FIELDS "Artikul", "Name", "Quantity", "Price", "SummaZakaz";
For ( Zakaz->Quantity > 0 );
DELIMITED WITH ( {"", ";"} )

Где нарыл про 2 (!!!) необходимых параметра - уже не вспомню (как бы не в исходниках), но работает именно только так.

Использую Harbour.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 6
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет