powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Прочитать dbf файлы
25 сообщений из 51, страница 1 из 3
Прочитать dbf файлы
    #35184327
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ранее все читали своей программкой... Но захотелось т.с. разнообразия. Просветите пожалуйста как еще можно это делать?
----------
Cache for Windows (Intel) 2007.1 (Build 369) Fri Jun 15 2007 15:25:42 EDT
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Прочитать dbf файлы
    #35184459
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Форматов dbf-файлов много, даже odbc-драйверы через раз криво работают, я когда-то намучался с этим.
Вряд ли имеет смысл делать свою "читалку" dbf.
Более того, мы столкнулись с тем, что Microsoft прекратил поддержку dbf форматов в драйверах в поздних версиях ОС, например Windows 2003 Server x64, поэтому работаем только с текстовыми форматами.

Все наши dbf файлы конвертнули в текст.
...
Рейтинг: 0 / 0
Прочитать dbf файлы
    #35184468
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Вряд ли имеет смысл делать свою "читалку" dbf.
Она у нас уже есть. Т.е. была и используется уже более 5-ти лет...
Блок А.Н.Форматов dbf-файлов много, даже odbc-драйверы через раз криво работают, я когда-то намучался с этим.
А вот это расстроило
Дело в том, что постоянно приходится получать данные из других контор (не наши клиенты) в dbf формате... Причем изменить/повлиять на формат невозможно.

Можно инструкцию какую-нибудь про odbc-способ почитать?
...
Рейтинг: 0 / 0
Прочитать dbf файлы
    #35184626
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока наименее глючным драйвером для dbf считаю "Microsoft dbase driver"
Только уберите галку "показ удаленных строк"
Желательно, если и файл тоже будет тоже формата dbase.
(Я не сильно большой спец в этом, но сюдя по обработке например у фокса формат по умолчанию не dbase. Кто знает - пусть пояснит, в чем различия).

Вообще из глюков драйверов для dbf - пропуск строк, смена формата числа, добавление пробелов и т.д.

Вот так работаем:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 s con=##class(%Library.SQLGatewayConnection).%New()
 s st=con.Connect("odbf","","") g:'+st OnErr
 s st=con.AllocateStatement(.hstmt) g:'+st OnErr
 s sql="SELECT number,date_meas,meas_1 FROM """_file_""" " 
 s st=con.Prepare(hstmt,sql) g:'+st OnErr
 s st=con.Execute(hstmt) g:'+st OnErr
 for{s st=con.Fetch(hstmt) 
     q:con.sqlcode'= 0 
     s st=con.GetOneRow(hstmt,.row) 
     s number=+$lg(row, 1 )	 	 
     s date=$lg(row, 2 )
     s meas=+$lg(row, 3 )
     //...
    }
 d con.DropStatement(hstmt)
 d con.Disconnect()
...
Рейтинг: 0 / 0
Прочитать dbf файлы
    #35184739
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Вот так работаем
Что это знакомое, так, так... (с) В. Высоцкий

А как сам коннект-то создать? Это же в Windows чего-то делать нужно (я просто никогда не сталкивался с этим )?
...
Рейтинг: 0 / 0
Прочитать dbf файлы
    #35184810
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А че там делать - наливай да пей.
Пуск - Настройка - панель управления - администрирование - источники данных odbc - системный dns - добавить.

В разных версиях виндов возможны варианты.
...
Рейтинг: 0 / 0
Прочитать dbf файлы
    #35184848
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стандартный ответ - через ODBC - пример уже привели ... это если нужно постоянно и часто лазить, да еще с SQL ....

Если нужно например загружать реестр с какой то переодичностью... то для извращений нет пределов. Мы как то делали предварительную обработку Excel - в скрипте открыть dbf файл - сохранить csv файл - csv файл загрузить :-)

Можно ли в скрипте цеплять OO Calc не знаю
...
Рейтинг: 0 / 0
Прочитать dbf файлы
    #35184870
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Пуск - Настройка - панель управления - администрирование - источники данных odbc - системный dns - добавить.
Ща спробану!
...
Рейтинг: 0 / 0
Прочитать dbf файлы
    #35184880
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ptnдля извращений нет пределов
Вот и хочется пройти т.с. некий экскурс. До садомазо опускаться конечно не хочется... Но интерес к разным подходам устойчивый
...
Рейтинг: 0 / 0
Прочитать dbf файлы
    #35184907
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbf2xml - там же dbf2csv например
...
Рейтинг: 0 / 0
Прочитать dbf файлы
    #35184969
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создал подключение с именем dbf...
Потом программку
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
 n
 s file="c:\box\dbf\kladr.dbf"
 s odbc="dbf"
 s con=##class(%Library.SQLGatewayConnection).%New()
 s st=con.Connect(odbc,"","") 
 g:'+st OnErr
 s st=con.AllocateStatement(.hstmt) 
 g:'+st OnErr
 s sql="SELECT * FROM """_file_""" " 
 s st=con.Prepare(hstmt,sql) 
 g:'+st OnErr
 s st=con.Execute(hstmt) 
 g:'+st OnErr
 for  {
    s st=con.Fetch(hstmt) 
     q:con.sqlcode'= 0 
     s st=con.GetOneRow(hstmt,.row) 
     s ^tmp($i(^tmp))=row
    }
 d con.DropStatement(hstmt)
 d con.Disconnect()
 q
OnErr
 w !!,st
 q
Но после запуска выдает ошибку
Код: plaintext
 0  F+ Execute0zExecute+ 1 ^%Library.SQLGatewayConnection. 1 :REG
Это куда мне смотреть? Чего искать?
----------
Cache for Windows (Intel) 2007.1 (Build 369) Fri Jun 15 2007 15:25:42 EDT
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Прочитать dbf файлы
    #35184977
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ptn dbf2xml - там же dbf2csv например
Нам бы сразу в Каше... :)
...
Рейтинг: 0 / 0
Прочитать dbf файлы
    #35185068
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте выполнить этот запрос через одбс сторонним приложением, например программой winsql.

Также я не уверен в корректности имени "dbf" для dsn
Уберите путь из имени файла и положите файлик в определенную вами директорию.
...
Рейтинг: 0 / 0
Прочитать dbf файлы
    #35185148
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Попробуйте выполнить этот запрос через одбс сторонним приложением, например программой winsql.
Она есть в WinXP?
Блок А.Н.Также я не уверен в корректности имени "dbf" для dsn
Заменю...
Блок А.Н.Уберите путь из имени файла и положите файлик в определенную вами директорию.
Путь уберу...
А вот директорию я никак еще не определил Это-то меня и удивило в настройке odbc (это же там указывать нужно?)... Кнопки там "серые" (не активные)...
...
Рейтинг: 0 / 0
Прочитать dbf файлы
    #35185196
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока что-то никак...
Вот программка
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
 n
 s file="kladr.dbf"
 s odbc="adres"
 s con=##class(%Library.SQLGatewayConnection).%New()
 s st=con.Connect(odbc,"","") 
 g:'+st OnErr
 s st=con.AllocateStatement(.hstmt) 
 g:'+st OnErr
 s sql="SELECT * FROM """_file_""" " 
 s st=con.Prepare(hstmt,sql) 
 g:'+st OnErr
 s st=con.Execute(hstmt) 
 g:'+st OnErr
 for  {
    s st=con.Fetch(hstmt) 
     q:con.sqlcode'= 0 
     s st=con.GetOneRow(hstmt,.row) 
     s ^tmp($i(^tmp))=row
    }
 d con.DropStatement(hstmt)
 d con.Disconnect()
 q
OnErr
 w !!,st
 q
Картинку с настройкой odbc прилагаю...
Вот ошибка...
Код: plaintext
 0  F+ Execute0zExecute+ 1 ^%Library.SQLGatewayConnection. 1 :REG
----------
Cache for Windows (Intel) 2007.1 (Build 369) Fri Jun 15 2007 15:25:42 EDT
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Прочитать dbf файлы
    #35185245
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как это путь не определили ?

Кнопка [Выбор Каталога] для MS dbf драйвер ... либо галка "текущий каталог" - тогда нужно перед обращением переключать текущий каталог

Его нужно в ODBC указать - файл поместить в этот путь.
...
Рейтинг: 0 / 0
Прочитать dbf файлы
    #35185252
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
расширение у файла не нужно указывать ... имя таблицы соотвествует имени файла, а не имени с расширением.
...
Рейтинг: 0 / 0
Прочитать dbf файлы
    #35185278
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa Блок А.Н.Попробуйте выполнить этот запрос через одбс сторонним приложением, например программой winsql.
Она есть в WinXP?

нет, но она есть в интернете :-)
...
Рейтинг: 0 / 0
Прочитать dbf файлы
    #35185322
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ковычки тоже не нужны
...
Рейтинг: 0 / 0
Прочитать dbf файлы
    #35185565
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PtnКнопка [Выбор Каталога] для MS dbf драйвер ... либо галка "текущий каталог" - тогда нужно перед обращением переключать текущий каталог
Вот тут я не совсем понял...
Каталог к драйверу указывать нужно? Я-то указал к файлам...
...
Рейтинг: 0 / 0
Прочитать dbf файлы
    #35185587
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ptnковычки тоже не нужны
Убрал... Теперь программка выглядит так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
 n
 s file="kladr"
 s odbc="adres"
 s con=##class(%Library.SQLGatewayConnection).%New()
 s st=con.Connect(odbc,"","") 
 g:'+st OnErr
 s st=con.AllocateStatement(.hstmt) 
 g:'+st OnErr
 s sql="SELECT * FROM "_file
 s st=con.Prepare(hstmt,sql) 
 g:'+st OnErr
 s st=con.Execute(hstmt) 
 g:'+st OnErr
 for  {
     s st=con.Fetch(hstmt) 
     q:con.sqlcode'= 0 
     s st=con.GetOneRow(hstmt,.row) 
     s ^tmp($i(^tmp))=row
    }
 d con.DropStatement(hstmt)
 d con.Disconnect()
 q
OnErr
 w !!,st
 q
Но от ошибки не избавился...
...
Рейтинг: 0 / 0
Прочитать dbf файлы
    #35185629
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Пока наименее глючным драйвером для dbf считаю "Microsoft dbase driver"
Его и выбираю...
...
Рейтинг: 0 / 0
Прочитать dbf файлы
    #35185674
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потестил еще раз программку...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
 n
 s file="kladr"
 s odbc="adres"
 s con=##class(%Library.SQLGatewayConnection).%New()
 s st=con.Connect(odbc,"","") 
 s err= 1 
 g:'+st OnErr
 s st=con.AllocateStatement(.hstmt) 
 s err=2
 g:'+st OnErr
 s sql="SELECT NAME FROM "_file
 s st=con.Prepare(hstmt,sql) 
 s err= 3 
 g:'+st OnErr
 s st=con.Execute(hstmt) 
 s err=4
 g:'+st OnErr
 for  {
    s st=con.Fetch(hstmt) 
     q:con.sqlcode'= 0 
     s st=con.GetOneRow(hstmt,.row) 
     s ^tmp($i(^tmp))=row
    }
 d con.DropStatement(hstmt)
 d con.Disconnect()
 q
OnErr
 w !
 zw err,st
 q
Ругается на 4... Может там SQL какой-то особенный?
----------
Cache for Windows (Intel) 2007.1 (Build 369) Fri Jun 15 2007 15:25:42 EDT
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Прочитать dbf файлы
    #35185832
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To krvsa :
Попробуйте поработать с ODBC через высокоуровневый интерфейс:

%DynamicQueryGW:SQLGW

Using the ODBC Gateway Programmatically
...
Рейтинг: 0 / 0
Прочитать dbf файлы
    #35186340
Гость68
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ADO предлагать?

приблизительно так:

cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\KATALOG_GDE_DBF;Extended Properties=DBASE III;"

rst.open "select * from FILE_DBF",cnn
...
Рейтинг: 0 / 0
25 сообщений из 51, страница 1 из 3
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Прочитать dbf файлы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]