Вопрос: можно ли в строке подключения как-то указать кодовую страницу или использовать vfoxpro драйвер (пробовал - говорит что его нет в системе)
Строка подключения:
Driver={Microsoft dBASE Driver (*.dbf)};
DriverID=277;
Dbq=x:\1S\CopyAC;
Collating Sequence=RUSSIAN;
CODEPAGE=1251;
ANSI=True;
CP=1251;
---
А тут: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\xBase

Искал имя параметра "CollatingSequence"
---
Первый раз вижу что бы в DBF была кодировка cp1251.
Как правило там DOS-овские кодировки KOI-8(866).
Попробуйте все-таки "поиграть" с кодировками в строке подключения.

Или попробуй такую строку подключения
"Provider=Microsoft.Jet.OLEDB.4.0;" +
                   "Data Source=" + Path + ";" +
                   "Extended Properties=""DBASE IV;"";"
---
Ни разу dbf-базы от 1С 7.7 не видел?
---
zels, Не жалко тебе времени на поддевки.
Давай двигаться в конструктивном направлении.
---
, зачем такие сложности с ODBC? Сходу предложу три варианта:
1.Подключайтесь из 8-ки к 1С.77, открывайте справочник и читайте данные.
2.Открывайте файл через XBase и читайте в нужной кодировке.
3.Открываете в Excel, сохраняете в желаемом формате и читаете.
---
Alexander.Dyatchenko,
Хм... смешно но факт.
1) средствами ADO никак не получается нормально кодировку воспроизвести.
2) XBase показывает русский "на ура", но тогда это не внешний источник.
3) Копаю дальше. (просто самому стало интересно как такое может быть?).
---
zels,
Видел, но в обход 1С в их dbf не лазил.
Да и видел то разы, как правило всегда работал с SQL базами.

DBF использовал только как транзит для обмена (пока не появился XML).
---
Для меня заявление, "не видел dbf в windows-кодировке" это примерно как заявление на автомобильном форуме "не видел машин с механической КПП". 1С за 15+ лет заполонила компьютеры dbf-файлами в windows-кодировке. Дос-кодировки в dbf тоже были (1С, например, в "досемерочный" период), но сейчас их встретить гораздо труднее.
---
zels,
А вот такой я, "зажравшийся американец" - всю жизнь на "автомате" катаюсь.
Но это уже другая и в данном случае off-топная история :)
---
1251 я решил из-за WindbfView - когда в нем 866 выставляю - иероглифы, возвращаю 1251 - все читабельно.
---
Alexander.Dyatchenko,
Для просмотра dbf лучше пользоваться старым-добрым dbfnavigator (бесплатная).
---
Попробовал - то же самое.
---
Alexander.Dyatchenko,
То , да не то :)
866 - это OEM
т.е. ANSI=false
---
Alexander.Dyatchenko,
Брось ка по почте maxa.ok@gmail.com этот файл.
Сна все равно нет :) Посмотрю что за чудо такое :)
---
И эта программа согласна что не DOS
---
Не помагает false.
У меня есть подозрение что параметр ANSI не подходит для этого драйвера.
В карточке ODBC это как порядок сортировки, и там выбор, т.е. ANSI может стоять в параметре ПОСЛЕ знака =
---
Файлик другой, но суть та же.
---
Alexander.Dyatchenko,
Операционка у тебя какая?
---
Тестировал на 2х
Сервер 2008
Win7x64
---
Alexander.Dyatchenko,
Понятно...у них то UTF-8
где то затык в динамической перекодировке для корректного отображения.
---
А Администратор ODBC запускаешь х32 или х64?
---
и тот и тот пробовал. на Win7 - 64 открывал. Но ничего интересного там не нашел
---
Код языка в файле указан 0 (1251), то есть получается, что у тебя драйвер не может определить код страницы из самого файла, ему требуется указание вручную
---
Подскажите, может другой драйвер можно использовать?
Предложите строку подключения.
Я заргузил обновление vfoxpro но он не хочет использовать этот драйвер...
Например на Win7 такая строка проходит, но не дает результата

DRIVER={Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)};
Dbq=x:\1S\CopyAC;
CODEPAGE=1251;
ANSI=False;
CP=1251;

А на Windows 2008 выдает ошибку
---
А вот подключение vfoxpro дает ошибку:

Driver={Microsoft Visual FoxPro Driver};
SourceType=DBF;
SourceDB=x:\1S\CopyAC;
Exclusive=No;
Collate=Russian;
NULL=NO;
DELETED=NO;
BACKGROUNDFETCH=NO;
---
И этот тоже иероглифы выдает
DRIVER={Microsoft dBase-Treiber (*.dbf)};
---
для подключения к клюшкам, на пример по адо:

```1c
    КаталогИБ = "D:\Bases\Торговля\"; // тут свой путь воткнешь + в системе должен быть установлен vfp провайдер, вот отсюда, к примеру:
    // http://www.microsoft.com/downloads/details.aspx?FamilyId=E1A87D8F-2D58-491F-A0FA-95A3289C5FD4&displaylang=en

    ОлеДБ = Новый COMОбъект("ADODB.Connection");
    Соединение = "Provider=VFPOLEDB.1;Data Source=" + КаталогИБ + ";Mode=ReadWrite;Collating Sequence=MACHINE";
    ОлеДБ.Open(Соединение);
    Command = Новый COMОбъект("ADODB.Command");
    Command.ActiveConnection = ОлеДБ;
    ТекстЗапроса = "
    |select
    | Спр.descr as Номенклатура,
    | Спр.sp85 as Артикул,
    | sum(Рег.sp411) as Остаток
    |from rg405 as Рег
    |left join sc84 as Спр on Спр.id = Рег.sp408
    |where Рег.period= {d '2012-07-01'}
    |group by Спр.descr,Спр.sp85
    |order by Спр.descr
    |";
    Command.CommandText = ТекстЗапроса;
    RecordSet = Новый COMОбъект("ADODB.RecordSet");
    RecordSet = Command.Execute();
    Если not RecordSet.EOF() Тогда
    RecordSet.MoveFirst();
    Пока RecordSet.EOF() = 0 Цикл
    Сообщить(RecordSet.Fields.Item("Номенклатура").Value + " "+RecordSet.Fields.Item("Артикул").Value+" "+RecordSet.Fields.Item("Остаток").Value);
    RecordSet.MoveNext();
    КонецЦикла;
    КонецЕсли;
    RecordSet.Close();
    RecordSet = Неопределено;
    Command = Неопределено;
```
---
Ёпрст, В том то и суть что ему нужно подключиться объектом метаданных "Внешний источник".
Да и потом Provider=VFPOLEDB.1 в стандартных ODBC у Windows нет, нужно доп.драйвера устанавливать.
---
odbc никогда нормально не работал с дбф файлами семёрки, только фоксовый провайдер.
Не хотите - не ставьте, хозяин барин.
---
Ёпрст, Что такое фоксовый провайдер?

Для остальных "веток" от заданного направления!:
1. Отчет через восьмерку (именно внешние источники) на тех же dbf строиться в 20 раз быстрее!!!
2. Это в 20 раз по отношению к прямым запросам в той же базе!
3. Объем файла 2 Gb через OLE - это грусть.
4. В экселе тот же файл я не смог открыть в правильной кодировке!!! (3 компа)
5. В Access тот же файл я не смог открыть в правильной кодировке.

Давайте разовьем фоксового провайдера - что ставить как коннектить?
---
Alexander.Dyatchenko,

Чисто для того что бы поржать, открыл dbf, который ты выслал в HEX-редакторе.
Не ошибся, долго смеялся от увиденного.
1) По структуре заголовка(служебная часть файла) - это досовская версия таблицы.
2) Сама кодировка таблицы cp1251

Хотя что удивительного... к "перлам" 1С уже давно пора привыкнуть.
---
Да, с дбф никогда не пищите запросы с odbc, используйте oledb провайдер - при правильном написании текста запроса с использовании индексов полёт обеспечен.
---
ODBC, ADO... Хлопцы, скажите, чем плох старый добрый способ:
V7=Новый COMОбъект("V77.Application") // или "V77s.Application" для SQL
 Попытка
  strApp = "/D"""+ТекПутьКБазе+""" /N"""+ТекПользователь+""" /P"""+ТекПароль+"""";
  Открыта=V7.Initialize(V7.RMTrade,strApp,"NO_SPLASH_SHOW");
...
Читаем справочники, документы, регистры и пр.
---
ОЛЕ - это мегатормоз, это раз, база может быть недоступна, это два.
---
+32 ну и обрыв по таймауту в 2 минуты, это три..
потеря фокуса, это четыре..
в топку олю - это пять!
---
Может кто-то ставил внешние драйвера, типа TDBF?
---
HKEY_LOCAL_MACHINE\Software\microsoft\jet\4.0\Engines\Xbase DataCodePade=OEM <== поменяй на ANSI
---
нет такой ветки в реесте.
Ни на Win7 ни на 2008
---
Alexander.Dyatchenko, у меня XP. А просто поискать раздел Jet\4.0\Engines ?
---
zels, ТВОЕ РЕШЕНИЕ. Блин вроде просто с виду!!!
Блнннн... Ветка находилась:
[18:31:01] Dyatchenko Alexander: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\xBase
там то и поменял на ANSI DataCodePage.
Спасибо Zels.
---
хотя пакет драйверов доступа я установил вот отсюда (32bit)
http://www.microsoft.com/en-us/download/details.aspx?id=13255
Может из-за этого и JET драйвер и не работает?
---
ДА!!!!!!!!!!!!!!!!!!!!!!
СУПЕР!!!!!!!!!!!!!!!!!
---
А тут: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\xBase

Искал имя параметра "CollatingSequence"