|
чтение файла DB | ☑ | ||
---|---|---|---|---|
0
rt2000
23.10.14
✎
21:51
|
Подскажите пожалуйста, никак не могу найти как должно происходить чтение файла "db" (не dbf). Интернет облазил, ничего не нашел, нашел только две строчки на форуме, но и они не работают.
Можете привести пример, как 1с читает db файл |
|||
1
spectre1978
23.10.14
✎
21:58
|
Хм, для начала недурно бы понять что за файл. Paradox?
|
|||
2
roman844
23.10.14
✎
21:59
|
пробуй ЭКСЕЛЬ
|
|||
3
roman844
23.10.14
✎
22:00
|
это Paradox. Я не давно данные переносил из Инфо-бухгалтера, так экселем их открывал.
|
|||
4
spectre1978
23.10.14
✎
22:00
|
Если это Paradox DB, то можно попробовать связку ADO-провайдер ODBC-драйвер Paradox для ODBC
|
|||
5
spectre1978
23.10.14
✎
22:02
|
ну или вариант (3)
|
|||
6
spectre1978
23.10.14
✎
22:03
|
(3) по расширению не всегда можно ориентироваться. Мы не знаем точно, откуда переносится инфа, и под расширением DB вполне может оказаться что-то самопальное...
|
|||
7
roman844
23.10.14
✎
22:04
|
(6) согласен
|
|||
8
rt2000
23.10.14
✎
22:07
|
в файле db хранится таблица. Excel, -думаю это не то
|
|||
9
spectre1978
23.10.14
✎
22:09
|
(8) почему? Если файл парадоксовский, то Excel может его открыть
|
|||
10
rt2000
23.10.14
✎
22:12
|
(9) пробовал через Excel, вообще никакой реакции.
Мне нужно не открыть файл, а прочитать его, нужен образец кода |
|||
11
spectre1978
23.10.14
✎
22:14
|
(10) сигнатуру файла можешь посмотреть? Какие байты вначале?
|
|||
12
rt2000
23.10.14
✎
22:18
|
вот ссылка
http://dropmefiles.com/jDWeQ |
|||
13
spectre1978
23.10.14
✎
22:22
|
По-моему, это парадоксовский файлик. Сейчас посмотрим...
|
|||
14
roman844
23.10.14
✎
22:26
|
у меня запрашивает пароль
|
|||
15
rt2000
23.10.14
✎
22:31
|
нету никакого пароля, даже не знаю от куда он взялся.
Если это парадоксовский файл, то как его правильно прочитать? |
|||
16
spectre1978
23.10.14
✎
22:36
|
хм... драйвер видит таблю User, но при попытке открытия непредвиденная ошибка базы данных 11010. Возможно, нет какого-нть индексного файла или чего-то наподобие
|
|||
17
spectre1978
23.10.14
✎
22:37
|
||||
18
roman844
23.10.14
✎
22:40
|
MS VISUAL FOXPRO, только посмотреть
|
|||
19
spectre1978
23.10.14
✎
22:41
|
Попытался сформировать строку из (17), опять-таки - таблицу видит, но данные не извлекает. Чего-то не хватает, скорее всего индексов.
|
|||
20
spectre1978
23.10.14
✎
22:46
|
есть еще какие-то файлы User.* ?
|
|||
21
spectre1978
23.10.14
✎
22:48
|
(0) в (17) описано, как формировать Paradox- строку соединения для провайдера Jet. Если есть желание - пробуйте самостоятельно, у вас база целиком есть.
|
|||
22
rt2000
23.10.14
✎
22:49
|
(20) файлов больше нету.
А если бы были? То мне придется их одновременно читать или как? |
|||
23
spectre1978
23.10.14
✎
23:04
|
(20) вообще у парадокса обычно для одной таблицы есть файл данных и несколько вспомогательных с тем же именем но другими расширениями - PX, MB... Когда обращаешься к базе, как правило, нужно указывать папку со всеми этими файлами, после чего становится возможным обращаться к отдельным таблицам. Это я собираю в кучку все что я помню по вопросу. Последний раз с парадоксом воевал лет 12 назад.
|
|||
24
spectre1978
23.10.14
✎
23:09
|
когда я обратился через драйвер к папке, где лежит твой файл, мне удалось увидеть таблицу USER, но не удалось увидеть поля в ней, а при попытке исполнить SELECT * from USER я получил ошибку синтаксиса в предложении FROM. Это скорее всего может означать либо разрушенный/непарадоксовский файл, либо отсутствие требуемых дополнительных файлов (индексных и т.п.) в каталоге. Нужно понять в чем проблема.
|
|||
25
Woldemar22LR
23.10.14
✎
23:45
|
Знакомый кодил на Btrieve обзывал расширением *.db
Я тоже :) Файл слегка смахивает на Btrieve файл. Запись на поля делит прикладная программа. |
|||
26
Woldemar22LR
23.10.14
✎
23:58
|
чем прочитать -ищи ddf btrieve editor belov
|
|||
27
Woldemar22LR
24.10.14
✎
07:24
|
(27) утром проснулся вспомнил - как вариант это еще может быть файл клариона.
найди pervasive попробуй им открыть файл. |
|||
28
rt2000
24.10.14
✎
08:25
|
(27) pervasive - это программа для открытия таблиц?
|
|||
29
ASV
24.10.14
✎
08:44
|
в обычном редакторе открой файл. дальше заменой убери лишнее. там все то 100 записей
|
|||
30
Woldemar22LR
24.10.14
✎
08:45
|
(28) Pervasive.SQL купил Btrieve у новелла и на его основе сделал sql - там есть инструмент для просмотра файлов btrieve, файлы клариона это по сути тоже btrieve.
(29) + много :))) |
|||
31
ASV
24.10.14
✎
08:52
|
получается там две таблицы
1.ID Code Name Text 2. ProfileID Password Card Finger |
|||
32
spectre1978
24.10.14
✎
09:04
|
мне все-таки кажется что парадоксовский файл. Обратите внимание на строку ancyrr в заголовке - таким образом у парадокса кодируется поддержка кириллицы (как вариант там может быть ascii и другое подобное). Вопрос только, почему его джет не кушает.
|
|||
33
ASV
24.10.14
✎
09:13
|
файл возможно не весь. последняя строчка не полная
|
|||
34
spectre1978
24.10.14
✎
09:14
|
Попытался открыть через BDE - получил более информативное сообщение: BLOB file not found or corrupt. Открыл в рид-онли.
Получил список полей. При попытке открыть таблицу BDE запросил файлики: USER.PX USER.MB Так что мой первоначальный диагноз был верным. |
|||
35
gae
24.10.14
✎
09:15
|
Мы брали vfpoledb.dll
Потом через ADO читали, писали. Вот куски кода: Функция ПолучитьСтрокуПодключения(Путь,Тип,Provider="") Если Provider="" Тогда Provider="Microsoft.Jet.OLEDB.4.0"; КонецЕсли; Возврат "Provider = "+Provider+"; |Data Source="+Путь+"; |Extended Properties="+Тип+"; |Mode=Read|Write|Share Deny None; |Persist Security Info=True"; КонецФункции ----------------- ... ИначеЕсли ВыборкаИзменений.ФорматТаблицы = "DB" Тогда ТипБазы = "Paradox 5.X"; Иначе ТекстОшибки = ВывестиСообщениеОбОшибке(ЗаголовокСообщенияОбОшибке,"Неизвестный формат таблицы: "+ВыборкаИзменений.ФорматТаблицы,Ложь); Возврат Ложь; КонецЕсли; СтрокаПодключения = ПолучитьСтрокуПодключения(Путь,ТипБазы,Provider); Соединение = Новый COMОбъект("ADODB.Connection"); Catalog = Новый COMОбъект("ADOX.Catalog"); Попытка Catalog.ActiveConnection = СокрЛП(СтрокаПодключения); Соединение.Open(СокрЛП(СтрокаПодключения)); Исключение ТекстОшибки = ВывестиСообщениеОбОшибке(ЗаголовокСообщенияОбОшибке); Возврат Ложь; КонецПопытки; Command = Новый COMОбъект("ADODB.Command"); Command.ActiveConnection = Соединение; ... --------------- ... //SELECT Успешно = СформироватьЗапросSELECT(Command, ИмяТаблицы, СтруктураКлючей, СтруктураИзменений, ТекстОшибки); Если не Успешно Тогда Возврат Ложь; КонецЕсли; RecordSet = Новый COMОбъект("ADODB.RecordSet"); RecordSet.LockType = 2; //2 RecordSet.CursorType = 1; //1 Попытка RecordSet.Open(Command); Исключение ТекстОшибки = ВывестиСообщениеОбОшибке(ЗаголовокСообщенияОбОшибке); Соединение.Close(); Возврат Ложь; КонецПопытки; // Перебор данных Если не ВыборкаИзменений.НеУникальныеЗаписи Тогда Если не RecordSet.EOF() = 1 Тогда ЕстьЗапись = Истина; Иначе ЕстьЗапись = Ложь; КонецЕсли; Если ЕстьЗапись Тогда ... |
|||
36
rt2000
24.10.14
✎
09:16
|
если пробовать строчки:
ExcelПриложение = Новый COMОбъект("Excel.Application"); Книга = ExcelПриложение.WorkBooks.Open(Путь); то сначала появится таблица, с запросом пароля, а потом будет ошибка |
|||
37
spectre1978
24.10.14
✎
09:16
|
файл все-таки парадоксовский, вот список полей из билдера:
TAutoIncField *Table1ID; TIntegerField *Table1Code; TStringField *Table1Name; TStringField *Table1Text; TIntegerField *Table1ProfileID; TStringField *Table1Password; TStringField *Table1Card; TBlobField *Table1Finger; но чтобы зачитать данные, нужны все файлы. одного DB недостаточно |
|||
38
spectre1978
24.10.14
✎
09:18
|
либо, если по какой-то причине этого нет - может быть, возможно восстановить индексы в Database Desktop. У меня он, к сожалению, не установлен потому что был не нужен. Если (0) актуально, то могу позаморачиваться
|
|||
39
spectre1978
24.10.14
✎
09:19
|
последнее поле - Finger - это блоб. Блобы у парадокса хранятся в отдельных (!) файлах
|
|||
40
rt2000
24.10.14
✎
09:25
|
(39) finger -это поле не нужно.
(35) попробовал так: RecordSet = Новый COMОбъект("ADODB.RecordSet"); RecordSet.LockType = 2; //2 RecordSet.CursorType = 1; //1 попытка RecordSet.Open(Путь); Сообщить("да"); Исключение ТекстОшибки = ИнформацияОбОшибке(); Сообщить("нет"); КонецПопытки; Выводит "нет" информации об ошибке нет |
|||
41
ASV
24.10.14
✎
09:26
|
Database Desktop открыл в read-only
|
|||
42
spectre1978
24.10.14
✎
09:29
|
(40) если других файлов действительно нет (в чем я не уверен), то вряд ли вы сможете открыть чем-либо кроме Database Desktop. Потому что база по сути повреждена - нет части данных.
|
|||
43
spectre1978
24.10.14
✎
09:30
|
(41) там нет функционала, который позволил бы восстановить индексы? Я уж и позабыл как с ним работать...
|
|||
44
rt2000
24.10.14
✎
09:31
|
(42) скажи, я немного не понимаю. У меня база открывается через Database Tour Pro. Открывается таблица и могу посмотреть таблицу. А как в 1с открыть, при помощи Database Desktop?
|
|||
45
Woldemar22LR
24.10.14
✎
09:34
|
(44) ты чего то не договариваешь? :)))
|
|||
46
spectre1978
24.10.14
✎
09:36
|
(44) Database Desktop - это не через 1С. Это просто самостоятельная программа. Дело в том что парадоксовская база содержит не один файл на таблицу, а несколько, а прислан только один. Соответственно, база с точки зрения парадокса - повреждена и просто так открыть ее не получится. И мы тут пытаемся открыть хоть как-то. Понятно?
|
|||
47
rt2000
24.10.14
✎
09:36
|
Насчет файлов вы были правы, только что спросил. Их 5 шт:
DB, MB, XGO, PX, YGO и как мне сразу с пятьми файлами работать |
|||
48
rt2000
24.10.14
✎
09:38
|
(46) таблицу открыть я могу через Database Tour Pro, мне видны значения полей, а в 1с нет
|
|||
49
Woldemar22LR
24.10.14
✎
09:38
|
(47) ну ты и партизан.... Так как тебе сказали в (4)
На допросе давно был? :)))) |
|||
50
rt2000
24.10.14
✎
09:45
|
(49) извиняюсь.
Вчера дали один файл, сегодня по другому спросил, дали 5 файлов |
|||
51
spectre1978
24.10.14
✎
09:51
|
(50) ну вот теперь пробуй через 1С со строкой соединения, как написано в (17). В Data source указывай папку с файлами, в Extended Properties Paradox 7.x. Возможно, получится.
|
|||
52
spectre1978
24.10.14
✎
09:51
|
+ (50) или можно попробовать как в (4), но вариант из (17) мне нравится больше - это гораздо проще
|
|||
53
rt2000
24.10.14
✎
09:57
|
в (17) написано:
Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Program Files\BD\Base; Mode =Read|Write|Share Deny None; Extended Properties=Paradox 7.x; Persist Security Info = True; Можете подсказать, что значит этот код? |
|||
54
gae
24.10.14
✎
10:00
|
(53) это строка подключения. путь где таблицы лежат, режим, прочие настройки
|
|||
55
rt2000
24.10.14
✎
10:07
|
сделал так
Акцесс = СоздатьОбъект("ADODB.CONNECTION"); СтрокаПодключения= Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Путь;Mode =Read|Write|Share Deny None;Extended Properties=Paradox 7.x;Persist Security Info = True; Акцесс.Open(Путь); Ошибка в служебном сообщении: Неопознанный оператор СтрокаПодключения= Provider=Microsoft.Jet.OLEDB<<?>>.4.0;Data Source=Путь;Mode =Read|Write|Share Deny None;Extended Properties=Paradox 7.x;Persist Security Info = True; (Проверка: Сервер) |
|||
56
КонецЕсли
24.10.14
✎
10:09
|
Чего-то наподобие?
ID 47 Code 47 Name Гераськина Text Гераськина ProfileID 6 Password 65 Card $4444$ Файл можно как обычный TXT сделать (убрать заголовок). Поля имеют фикс. длину. Легко распарсить. Только потом часть полей из текстового вида преобразовать обратно в коды с помощью КодСимвола а потом в десятичный вид. З.ы. надо только узнать про байт 0x80 несёт в себе данные или просто разграничитель полей. |
|||
57
gae
24.10.14
✎
10:09
|
(55)а ковычки где?
|
|||
58
rt2000
24.10.14
✎
10:14
|
(57) не понимаю какие кавычки? Куда их ставить, поставлю в одном месте, в другом будет ошибка...
|
|||
59
silent person
24.10.14
✎
10:15
|
СтрокаПодключения="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Путь;Mode =Read|Write|Share Deny None;Extended Properties=Paradox 7.x;Persist Security Info = True;";
|
|||
60
silent person
24.10.14
✎
10:17
|
всмысле СтрокаПодключения="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Путь+";Mode =Read|Write|Share Deny None;Extended Properties=Paradox 7.x;Persist Security Info = True;";
|
|||
61
rt2000
24.10.14
✎
10:30
|
Можно еще немного объяснить.
Написал код Акцесс = Новый COMОбъект("ADODB.CONNECTION"); Путь = "D:\atol"; СтрокаПодключения="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Путь+";Mode =Read|Write|Share Deny None;Extended Properties=Paradox 7.x;Persist Security Info = True;"; Акцесс.ConnectionString = СтрокаПодключения; Книга = Акцесс.WorkBooks.Open(Путь); Появляется ошибка: Произошла исключительная ситуация (ADODB.Connection); Операция не допускается, если объект закрыт. Ошибка при получении значения атрибута контекста (WorkBooks) Книга = Акцесс.WorkBooks.Open(Путь); |
|||
62
silent person
24.10.14
✎
10:32
|
WorkBooks ? O_o ты же не через Excel файлы открываешь.
|
|||
63
rt2000
24.10.14
✎
10:34
|
(62) через Excel тоже пробовал
|
|||
64
Looser-1c
24.10.14
✎
10:35
|
(63) А теперь попробуй об стенку с разбегу.
|
|||
65
silent person
24.10.14
✎
10:38
|
(61) а пароль на базу не надо никакой ?
|
|||
66
rt2000
24.10.14
✎
11:16
|
(65) а где его надо написать? Есть пароли для пользователей, т.е. надо указать пользователя и его пароль?
|
|||
67
silent person
24.10.14
✎
11:48
|
у меня строка подключения была такая
СтрокаСоединения = "Provider=Microsoft.Jet.OLEDB.4.0; |Jet OLEDB:Database Password=""jIGGAe""; |Data Source="+ТемпКаталог+"; |Extended Properties=Paradox 5.x; |"; но мне сразу сказали что jIGGAe - это технический пароль на базы paradox |
|||
68
gae
24.10.14
✎
12:10
|
(58) ставь не в одном месте, а в двух :)
|
|||
69
spectre1978
24.10.14
✎
14:41
|
(55),(61) да, с таким пониманием технологий тяжело, наверно, работать...
|
|||
70
Woldemar22LR
24.10.14
✎
17:28
|
(69) не знаю как ты я уже тупо пью, я теперь понимаю почему темы пятницы перестали создавать. Потому что ближе к пятнице во всех темах начинается сплошная пятница.
|
|||
71
Torquader
27.10.14
✎
00:49
|
Я, помнится, писал на сях читалку Paradox, чтобы восстановить файл с данными, только потом умная читалка показала, что в середине файла вместо данных одни 0xFF - после этого очень не люблю этот Paradox.
|
|||
72
Стальная Крыса
27.10.14
✎
06:47
|
Читал тему - смешно :)
Автор, по-ходу, и в 1С немного понимает, а ещё взялся из 1С сторонними продуктами пользоваться. куды мир катится... |
|||
73
spectre1978
27.10.14
✎
11:42
|
(71) Много лет назад я пользовался парадоксовскими базами, используя BDE (Borland Database Engine). Для совсем небольших объемов сойдет, когда речь начинает идти о десятках мегабайт - начинает барахлить даже локально: появляются висячие внешние ключи, дубликаты PK и прочая гадость. А уж по сети и говорить нечего. В результате отказался от него. А так, в принципе, сделать импорт данных никаких проблем - дельфю в руки и вперед.
|
|||
74
spectre1978
27.10.14
✎
11:44
|
+ (71) починялки файлов какие-то были, точно помню
|
|||
75
Torquader
27.10.14
✎
22:17
|
(74) Если середину файла затёрло из-за ошибки на диске, то нет смысла такой файл восстанавливать.
|
|||
76
spectre1978
28.10.14
✎
10:57
|
(75) почему? У меня был случай когда файл проводок в семерке покрячило в середине из-за плохого сектора. Ничего, взял бэкапный и из него пару килобайт вклеил по смещению, потом ТИИ - и все нормально...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |