|
Чтение файла Paradox. Ошибка при попытке чтения | ☑ | ||
---|---|---|---|---|
0
Dmitriy_S
23.03.12
✎
12:01
|
Знаю, что как читать не раз уже обсуждалось. и поиском искал, но так ничего и не нашел. Написал несколько вариантов кода - ошибка одна и та же "Произошла исключительная ситуация (Microsoft JET Database Engine): Внешняя таблица не имеет предполагаемый формат."
пример 1 ИмяФайла = "Users.DB"; СтрокаПодключения = "Data Source=C:\Baza16\;Extended Properties=Paradox 5.x"; Провайдер= "Microsoft.Jet.OLEDB.4.0"; МойЗапрос = "Select * From " + ИмяФайла; Connection = Новый COMОбъект("ADODB.Connection"); Connection.Provider = Провайдер; Connection.ConnectionString = СтрокаПодключения; Попытка Connection.Open(); Исключение Сообщить("Подключение - bad!"); КонецПопытки; Command = Новый COMОбъект("ADODB.Command"); Command.ActiveConnection = Connection; Command.CommandText = МойЗапрос; Command.CommandType = 1; RS = Новый COMОбъект("ADODB.Recordset"); Попытка RS.Open(Command); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; пример 2 ИмяФайла = "Users.DB"; СтрокаПодключения = "Data Source=C:\Baza16\;Extended Properties=Paradox 5.x"; Провайдер= "Microsoft.Jet.OLEDB.4.0"; МойЗапрос = "Select * From " + ИмяФайла; Connection = Новый COMОбъект("ADODB.Connection"); Connection.Provider = Провайдер; Connection.ConnectionString = СтрокаПодключения; Попытка Connection.Open(); Исключение Сообщить("Подключение - bad!"); КонецПопытки; Command = Новый COMОбъект("ADODB.Command"); Command.ActiveConnection = Connection; Command.CommandText = МойЗапрос; Command.CommandType = 1; RS = Новый COMОбъект("ADODB.Recordset"); Попытка RS = Command.Execute(); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Пример 3 ИмяФайла = "Users.DB"; СтрокаПодключения = "Data Source=C:\Baza16\;Extended Properties=Paradox 5.x"; Провайдер= "Microsoft.Jet.OLEDB.4.0"; МойЗапрос = "Select * From " + ИмяФайла; Connection = Новый COMОбъект("ADODB.Connection"); Connection.Provider = Провайдер; Connection.ConnectionString = СтрокаПодключения; Попытка Connection.Open(); Исключение Сообщить("Подключение - bad!"); КонецПопытки; Command = Новый COMОбъект("ADODB.Command"); Command.ActiveConnection = Connection; Command.CommandText = МойЗапрос; Command.CommandType = 1; RS = Новый COMОбъект("ADODB.Recordset"); Попытка RS.Open(МойЗапрос, Connection ); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Операционка Win7 64. Может какую-то библиотеку надо или сам файл кривой? как выяснить что файл кривой? Программа Paradox Viewer 1.98 показывает версия файла 5.0. Данные из файла тоже отображаются. Впервые столкнулся с этим форматом. Знающие люди. не проходите мимо, пожалуйста! |
|||
1
Dmitriy_S
23.03.12
✎
12:18
|
Попробую апнуть
|
|||
2
Deniskind
23.03.12
✎
12:29
|
Соединение = Новый COMОбъект("ADODB.Connection");
РасположениеБазыДанных = Константы.РасположениеБазыДанныхКомплектация.Получить(); СтрокаСоединения = "Provider=Microsoft.Jet.OLEDB.4.0; |Jet OLEDB:Database Password=""""; |Data Source="+РасположениеБазыДанных+"; |Extended Properties=Paradox 5.x; |"; Соединение.Open(СтрокаСоединения); Вот такая штука работает. Обратите внимание на строку Jet OLEDB:Database Password=""""; Может из-за этого? |
|||
3
Zubek
23.03.12
✎
12:31
|
Тут человек говорит мне что ему помогло следующее: "расшаривание" доступа к файлу с:\pdox.net
|
|||
4
Dmitri888
23.03.12
✎
12:33
|
я читал Paradox через ВК
|
|||
5
Dmitriy_S
23.03.12
✎
12:35
|
(3) и даже с этой строчкой не помогает
(4) нет возможности ставить дополнительные компоненты пользователям, которым надо будет каждый день грузить файлы. Но для опыта хотелось бы посмотреть как через ВК это делается. |
|||
6
Dmitriy_S
23.03.12
✎
12:36
|
(3) даже несмотря на то, что это локальный файл?
|
|||
7
Dmitriy_S
23.03.12
✎
12:39
|
(3) и даже это не помогло.
|
|||
8
Deniskind
23.03.12
✎
12:39
|
Залейте куда-нибудь несущественную дб-шку. Попробую ее у себя открыть, чтобы убедиться, что дело в ваших библиотеках.
|
|||
9
Dmitri888
23.03.12
✎
12:42
|
на правах антирекламы ресурса )) : http://infostart.ru/public/14148/
|
|||
10
Dmitri888
23.03.12
✎
12:44
|
можно найти на просторах инета и в свободном доступе
|
|||
11
EasyRider
23.03.12
✎
12:45
|
(0)У меня вот такие строки есть в одной обработке:
Соединение = Новый ComОбъект("ADODB.Connection"); СтрокаПодключения="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Лев(ЭлементыФормы.Файл.Значение,3)+";Extended Properties=Paradox 5.x;"; Соединение.Open(СтрокаПодключения); Rs = Новый ComОбъект("ADODB.Recordset"); ИмяФайла=СтрЗаменить(ЭлементыФормы.Файл.Значение,Лев(ЭлементыФормы.Файл.Значение,3),""); Rs.Open("select * from "+ИмяФайла+";",Соединение); |
|||
12
Dmitriy_S
23.03.12
✎
12:53
|
(11) у меня такой способ указан в третьем варианте.
(8) Создал пустой текстовый файл, заменил имя на то с которым работаю - ошибка та же самая выходит. (9) Там гемморой с внутренней валютой. поищу где-нибудь еще на просторах интернетов. |
|||
13
Dmitri888
23.03.12
✎
13:06
|
мыло пиши - сброшу
|
|||
14
Dmitriy_S
23.03.12
✎
13:17
|
||||
15
Dmitriy_S
23.03.12
✎
13:18
|
Но все же хотелось бы узнать как же можно заставить 1с читать парадоксовские файлы теми способами, которые везде написаны.
|
|||
16
Deniskind
23.03.12
✎
13:46
|
Попробовал ваш код из 3-го примера на своих данных. Полностью рабочий.
Windows XP. |
|||
17
Deniskind
23.03.12
✎
13:48
|
Но, с пустым файлом выдает такое "Непредвиденная ошибка драйвера внешней базы данных (8961)" Видимо, версии ADO разные.
|
|||
18
Kreont
23.03.12
✎
14:35
|
У меня так читает (что на ВинХП что на Вин7):
БД = Новый ComObject("ADODB.Connection"); Если БД.Open("Driver={Microsoft Paradox Driver (*.db )};DriverID=538;Fil=Paradox 5.X;DefaultDir="+ПутьБД+";Dbq="+ПутьБД+";CollatingSequence=ASCII")= 0 Тогда Сообщить("Ошибка...."); Возврат; КонецЕсли; |
|||
19
Dmitriy_S
23.03.12
✎
14:48
|
(16) можно попросить проверить ни чтение этот файл http://ifolder.ru/29474196
(17) я когда создавал пустой файл вьювер мне писал версию 3. |
|||
20
Deniskind
23.03.12
✎
15:48
|
(19) Файл отрывается нормально без ошибок
|
|||
21
Deniskind
23.03.12
✎
15:56
|
(20) открывается
версия msjetoledb40.dll 4.0 95020 если что еще BDE стоит idapi32.dll 5.0 122 |
|||
22
Dmitriy_S
23.03.12
✎
16:46
|
(21) У себя нашел файл msjetoledb40.dll версия 4.0.9756. Значит, библиотечка стоит. но вот ошибка... позже домой приеду попробую ни XP эту обработку запустить.
|
|||
23
Deniskind
23.03.12
✎
16:59
|
На Win 7 с такой же версией библиотеки как и у вас ваш файл тоже открывается нормально.
|
|||
24
Deniskind
23.03.12
✎
17:21
|
Ага! Попалась, которая кусалась! :)
Эксперимент на Win XP без установленного BDE показал вашу же ошибку о неверном формате. После установки BDE все отработало корректно. Для установки надо найти файл bdeinst.cab, извлечь из него bdeinst.dll и зарегистрировать эту dll в системе с помощью regsrv32. Понимаю, что, видимо, вам без лишних телодвижений у пользователя не обойтись. Либо этот способ, либо ВК стало быть. |
|||
25
Dmitriy_S
23.03.12
✎
23:02
|
Делюсь как это победил дома я. По совету (24) я искал BDE, но так просто его не нашел. нашел в делфи, установил. запустил обработку - выдал уже другую ошибку([Microsoft][Драйвер ODBC Paradox] Непредвиденная ошибка драйвера внешней базы данных (11265)).
Наткнулся в инете на описание этой ошибки - надо было запускать с под пользователем с административными правами, это несмотря на то, что я администратор на компе. напоминаю ОС - Win7. В общем, после этих плясок, вроде, перебор строк заработал. зы. Огромное всем спасибо за участие!!! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |