|
|
|
Как прочитать из dbf-таблицы 1С сразу и числа, и русские буквы? ₽ |
☑ | ||
|---|---|---|---|---|
|
0
Звездочёт
23.07.07
✎
12:23
|
Как прочитать из dbf-таблицы 1С сразу и числа, и русские буквы?
По материалам форума: http://1c.proclub.ru/modules/newbb/viewtopic.php?topic_id=274998&forum=2&viewmode=flat&order=ASC&start=0 Повторить удалось: 1) С помощью строки соединения "Driver={Microsoft Visual FoxPro Driver};Exclusive=Yes;Null=No;SourceType=DBF;SourceDB=C:/MyTables" удалось прочитать русские буквы, но при чттении полей integer выдаёт ошибку. 2) С помощью строки соединения "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq="+ПутьДоФайла+";" удалось прочитать числа, но русских букв таким способом точно не получить (подробности пока опускаю). Есть способ сразу и числа, и русские буквы? Может кто в теме? |
|||
|
1
ТелепатБот
гуру
23.07.07
✎
12:23
|
||||
|
2
Звездочёт
23.07.07
✎
16:30
|
Ап
|
|||
|
3
Torquader
23.07.07
✎
19:02
|
А в какой программе читается ?
Потому как DBF можно открыть как двоичный файл и прочитать оттуда всё, что хочется, ну и записать тоже. Только надо ли оно ? |
|||
|
4
smaharbA
23.07.07
✎
19:04
|
дай код, может че скумекаем
|
|||
|
5
smaharbA
23.07.07
✎
19:04
|
+(4) только без фокспрошного драйвера, нах он нужен, его скорее может и не быть, чем быть, даже если ссылка в одбс есть
|
|||
|
6
Звездочёт
23.07.07
✎
20:08
|
(4) дам, только поздно вечером - он у меня дома.
(5) дравер FoxPro я специально обновлял (в моем случае я готов где надо его поставить). У меня он даже с прошлого года остался, когда я с русскими буквами разбирался. Без него, как мне кажется, прочесть русский текст в dbf-файле из 1С не получится. Я тогда перепробовал разные драйвера, пришел к выводу, что там код некоторых русских букв возвращается, как код ASCII до 127, что есть абсурд. |
|||
|
7
Звездочёт
23.07.07
✎
20:09
|
(3) читать dbf-файл, как двоичный файл, на мой взгляд, накладно. Надо в его реализации копаться, а это время, т.е. деньги.
|
|||
|
8
Звездочёт
24.07.07
✎
09:41
|
(4) вот код:
Путь = КаталогПользователя(); ИмяДбф = "SC2875"; // вар.1, читает русские буквы, но не поля integer СтрСоединения = "Driver=Microsoft Visual FoxPro Driver;Exclusive=No;SourceType=DBF;Null = No;SourceDB=" + Путь + ";"; СтрЗапрос = "SELECT * FROM " + ИмяДбф; // вар.2, не читает русские буквы, но поля integer читает СтрСоединения = "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq="+Путь+";"; СтрЗапрос = "Select * from "+ИмяДбф; Соединение = CreateObject("ADODB.Connection"); Соединение.Open(СтрСоединения); НаборЗаписей = Соединение.Execute(СтрЗапрос); Кол = 0; Пока НаборЗаписей.EOF = 0 Цикл Кол = Кол + 1; Сообщить("#"+Кол+"------------------"); Для к = 1 По НаборЗаписей.Fields.Count Цикл Поле = НаборЗаписей.Fields(к-1); Попытка //Значение = AnsiToOem(Поле.Value); // варианту 2 не поможет Значение = Поле.Value; Сообщить(Строка(Поле.Name)+" ("+Поле.Type+"): "+Значение); Исключение Сообщить(Строка(Поле.Name)+" ("+Поле.Type+"): ошибка","!"); КонецПопытки; КонецЦикла; НаборЗаписей.MoveNext(); КонецЦикла; Соединение.Close(); |
|||
|
9
Звездочёт
24.07.07
✎
14:56
|
Ап
|
|||
|
10
Звездочёт
24.07.07
✎
16:37
|
Ап
|
|||
|
11
Звездочёт
24.07.07
✎
22:13
|
Ап
|
|||
|
12
UnoMomento
25.07.07
✎
08:28
|
А не пробовал через "XBase" ?
|
|||
|
13
Звездочёт
25.07.07
✎
09:59
|
(12) конечно. С ним таких проблем нет.
Только он работает в 1С и еще в нем запрос нельзя написать. |
|||
|
14
Звездочёт
25.07.07
✎
14:46
|
"Еще по 150 и все!..." (х/ф "Бриллиянтовая рука")
|
|||
|
15
Звездочёт
26.07.07
✎
00:55
|
А можно тему перенести в раздел IT?
|
|||
|
16
Ковычки
26.07.07
✎
02:16
|
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Xbase
DataCodePage=ANSI ... я вот предпочитаю рекордсет, хотя пофих... |
|||
|
17
Ковычки
26.07.07
✎
03:21
|
|
|||
|
18
Garykom
гуру
26.07.07
✎
09:18
|
(7) Есть самолично написанная обработка делающая это (причем с memo)
Могу выложить (если найду). На 7.7 с применением binfiles.dll (чтобы сомволы с кодом 0 читать) (17) рекордсет хорошо, но попробуйте прочитать из дбф файла если в текстовых полях находятся непечатные символа (коды до 32) - что у вас будет? |
|||
|
19
Звездочёт
26.07.07
✎
14:26
|
(17) спасибо за ответ :)
А изменения ключа в реестре на другие программы не повлияет? Мало ли кто захочет пользоваться провайдером Microsoft dBASE Driver (*.dbf) |
|||
|
20
Звездочёт
26.07.07
✎
14:29
|
(18) такие строчки, мне кажется, и 1С не прочтет.
|
|||
|
21
Garykom
гуру
26.07.07
✎
17:25
|
(20) через XBase конечно, а вручную по байтикам прекрасно читает, главное чтобы с кодом 0 не было (не понимает в типе строка), binfiles заменяет на то что указано
Там суть была в том что индексы(ключевые поля) в старой фоксовой проге такие были, и нужно было переконвертить их в числа по кодам символов. |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |