Форум: "Базы";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
ВнизКодировка dBase при использовании ADO +Jet 4.0 Найти похожие ветки
← →
mvg_first © (2004-02-19 10:00) [0]Мне нужно выполнять SQL Запросы к таблицам dBase. Я положил на форму AdoConnection TAdoQuery DataSource и dbGrid.
В свойстве ConnectionString указал "Provider = Microsoft.Jet.OLEDB.4.0; Data Source= C:\temp; Extended properties="dBase 5.0";";
При таком раскладе все открывается нормально - но один маленький но очень раздражающий недостаток - русские фразы, предложение вообще все что написано по русски - совершенно нечитаемо.
Каким образом и где что нужно поменять (я так понимаю именно в ConnectionString) что бы русские значения полей отображались корректно.
← →
mvg_first © (2004-02-19 10:07) [1]На всякий случай уточню может для кого будет более понятно с чем борюсь.
Таблицы к которым хочу выполнять запросы - это dbf - таблицы программы 1С предприятие.
Ну и еще скажу что когда пробовал открывать эти таблицы просто блокнотом то все русские значения читались замечательно.
← →
Opilki_Inside © (2004-02-19 10:17) [2]Попробуй открыть файл *.dbf с помощью какого-нить редактора типа FAR"a и 30 символ замени на "&" это русская кодировка
← →
mvg_first © (2004-02-19 10:25) [3]Вся проблема в том что- ничего менять в этих DBF нельзя. Ибо как та прога что я пришу это лишь вспомогательная система для более быстрого формирования отчетов и более широких вариантов поиска в БД. Поэтому все запросы планируется только ReadOnly характера, ну и понято что никаких изменений в структуре файлов быть недолжно. На них будет продолжать работать 1С
← →
mvg_first © (2004-02-19 10:29) [4]Еще если вдруг возникнет вопрос - почему не через BDE. Скажу - ADO сейчас есть почти на каждой машине работающей под W2k BDE придется устанавливать везде где нужно запустить мою прогу - а это меня не устраивает :)
← →
Opilki_Inside © (2004-02-19 10:38) [5]а скопировать файлы которые ты собираешься открыть в другую директорию и изминить 30-ый символ?
Да и вобще, ты посмотри на 30-ый символ, может там уже "&" и стоит... или хотя бы попрорбуй, может и не в этом дело вобще...
← →
sniknik © (2004-02-19 10:41) [6]> Еще если вдруг возникнет вопрос - почему не через BDE.
почитай, особенно последний пост
http://delphimaster.net/view/3-1076774946/
> Скажу - ADO сейчас есть почти на каждой машине...
а вот jet-а чаше нет на новых установках.
> Таблицы к которым хочу выполнять запросы - это dbf - таблицы программы 1С предприятие.
попробуй такую строку для них
Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DRIVER={Microsoft Visual FoxPro Driver};UID=;SourceDB=C:\temp;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"
← →
mvg_first © (2004-02-19 10:59) [7]Opilki_Inside
Это кардинально не тот метод которым я хочу пользоваться, я знаю одно 1С их показыват по русски, блокнотом или другим текстовым (не UNICODE) отображаются по русски. Значит и моя программа должна это видеть. И основная суть вопроса это какую конфигурационную строку задать в ADOConnection
← →
mvg_first © (2004-02-19 11:14) [8]sniknik
Попробовал:
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EOleException with message "[Microsoft][ODBC Driver Manager] Driver does not support this function". Process stopped. Use Step or Run to continue.
← →
mvg_first © (2004-02-19 11:16) [9]Когда это вылетает?
Когда говорю
ADOConnection.Connected := true;
← →
mvg_first © (2004-02-19 11:20) [10]Попробовал ставить эту строку не программно а использовать кномполку Build - оказывается нет у меня в ODBC такого драйвера :) Может по этому?
← →
mvg_first © (2004-02-19 11:35) [11]Как вариант решения найдено следующее (где найдено? - в справке по JET файл JETSQL40.CHM поставляется вместе с оффисом)
В регистре в ключе
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Xbase
меняем значение у реквизита DataCodePage на ANSI и телемаркет
← →
sniknik © (2004-02-19 11:51) [12]mvg_first © (19.02.04 11:20) [10]
возможно, читал на мелкософте что с какойто версии не включаются, можно доставить, оттудаже с мелкософта.
но это родные драйвера для 1C таблиц.
mvg_first © (19.02.04 11:35) [11]
если бы посмотрел ссылку, то увидел бы анологичное решение, а также возможную дырку для глюков. (установлено/неустановлено BDE)
← →
mvg_first © (2004-02-19 12:15) [13]sniknik © (19.02.04 11:51) [12]
Прикол в том что ссылку я читал (но видать не все видел :) :) )
В чем дырка для глюков? В хелпе как раз написано что:
DataCodePage Этот параметр используется только в том случае, если на данном компьютере не установлено приложение BDE.
Определяет способ сохранения текстовых страниц. Возможные значения:
OEM — Преобразования из OEM в ANSI и из ANSI в OEM выполняются.
ANSI — Преобразования из OEM в ANSI и из ANSI в OEM не выполняются.
По умолчанию задается значение «OEM». Значения имеют тип String в Windows 95 и Windows NT 4.0 или тип REG_SZ в Windows NT 3.51.
Но при этом у меня получается BDE установлен (ставился по умолчанию вместе с дельфином) и все равно этот параметр значение имеет :) Потому как помог. Получается на машинах где его нет тоже поможет - исходя из инструкции выше :)
← →
sniknik © (2004-02-19 12:27) [14]> Но при этом у меня получается BDE установлен (ставился по умолчанию вместе с дельфином) и все равно этот параметр значение имеет :)
т.е. у тебя счас все зашибись? инфа по русски?
могу сделать вывод что в BDE у драйверов dBase и(или) Foxpro (не могу так сказать какой влияет) стоит ленгдрайвер "ascii" ANSI (ANCYRR, без конвертации), поставь на оба dBASE RUS cp866 и проверь свою прогу еще раз на русские буквы. (после изменений программу надо перестартовать).
(???) ну как? а это основное значение в россии для прог использующих BDE.
← →
mvg_first © (2004-02-19 12:54) [15]Ну тут ты прав. Спорить не буду. Как это можно обойти?
На вскидку только два варианта - или пользователь сам выполняет переключение в программе если видит нечитаемые данные или одно из двух :)
Выполнять тестовое открытие и искать заранее невозможный символ в текстовом поле, и при его обнаружении производить изменение ключей реестра и рестарт?
Или каким то образом проверять что установлено на машиен какой ленгдрайвер установлен для dBase и менять его находу. Если стоит не Ansi.
Кстати как программно проверить установленно ли БДЕ и какой ленгдрайвер у ДБэйс???
← →
sniknik © (2004-02-19 13:00) [16]> Ну тут ты прав.
а до этого значит был не прав? ну чтож, спасибо.
← →
mvg_first © (2004-02-19 13:05) [17]Ну вот - начинается (я где-то это говорил) Блин у меня жена точно так же все наровит перекрутить :)
Кстати скачал поставил драйвера для Visual Fox Pro 6 - и все заработало
← →
mvg_first © (2004-02-19 13:06) [18]Респект!
← →
Anatoly Podgoretsky © (2004-02-19 13:11) [19]Весь вопрос а какой формат у таблиц из 1С
Для dBase ниже 7 поддержана только одна русская кодировка 866, для Фокспро 2.6 + две 866 и 1251
Возможно еще использовать машинную кодировку "ascii" ANSI
После этого возникает следующий вопрос, работа с JET различается установлен БДЕ или нет, в первом случае используются настройки из БДЕ, во втором из указанных ключей. По умолчанию преобразование из OEM в ANSI
← →
sniknik © (2004-02-19 13:29) [20]> Ну вот - начинается (я где-то это говорил) Блин у меня жена точно так же все наровит перекрутить :)
а ты поменяй стиль разговора, вместо того чтобы (относительно жены) говорить "ну сейчас ты права дорогая" говори "дорогая! ты как всегда права" (даже если это не так), посмотриш будут ли "перекруты". (это я о том что это в основном от тебя зависит)
> Кстати скачал поставил драйвера для Visual Fox Pro 6 - и все заработало
все? сомнительно, все никогда работать не будет. попробуй индекс создать в этом конкретном случае (Visual FoxPro).
Anatoly Podgoretsky © (19.02.04 13:11) [19]
> Весь вопрос а какой формат у таблиц из 1С
в 1С пока встречал только 1251. возможно есть и вторая в более ранних версиях, но с ними к счастью не работаю. (и так головной боли хватает, еще и это делить)
← →
mvg_first © (2004-02-19 13:30) [21]Anatoly Podgoretsky © (19.02.04 13:11) [19]
Спасибо за дополнительное разъяснение касательно форматов. Но уже выснили что формат Visual FoxPro
Нашли оптимальный способ открытия, используя драйвер ODBC.
Но у меня сразу же вопрос в догонку. Етстовая база на которой я тренировался находится у меня в каталоге C:\Temp. Там все работает. А вот когда я попробовал настроится на рабочую базу которая у меня лежит в d:\Projects\1C_Config"s\kondceh\ прога рукается говорит таблица sc148.dbf не может быть найдена или шо то в этом духе. Я так понимаю что указывать путь содержит знак " для ODBC драйвера - есть некорретное поведение. Но мне то надо открыть именно так? 1С ведь открывает эту базу и успешно ею пользуется.
Вопрос на ту же тему только чуть по другому Подключиться к БД FOXPRO не указывая каталог, так что бы талицы искались в текущем каталоге где и расположенна программа.
← →
mvg_first © (2004-02-19 13:33) [22]Ух и стиль блин. Прошу прощения за грамматику и стиль -спешу побольше задать вопросов - вот и получается такое :(
← →
sniknik © (2004-02-19 14:06) [23]два варианта
1
настроить путь в ODBC алиасе и конект делать через него, так
Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DSN=Visual FoxPro Tables;"
(считаем что здесь путь задан ;о))
2
задавать коротким досовским путем
будет так
d:\Projects\1C_Con~1\kondceh\
но тоже возможны глюки (с тем же успехом может быть 2 в конце, если есть еще аналогичное начало)
лутше его програмно получить, есть функция такая (искать лень, а на память не помню).
может и еще как можно, не в курсе.
← →
mvg_first © (2004-02-19 14:26) [24]Еще один вариант.
Тянем вот отсюда
http://download.microsoft.com/download/4/3/f/43fbe7c7-81ae-4a0e-acc1-8532a99c5d2d/vfpoledb.exe
OLE Provider For Visual FoxPro устанавливаем и наслаждаемся жизнью :).
Подключается на все каталоги, и все культурно и красиво показывает. Ну и я так понимаю ODBC не используется.
← →
sniknik © (2004-02-19 15:36) [25]mvg_first © (19.02.04 10:29) [4]
> Еще если вдруг возникнет вопрос - почему не через BDE. Скажу - ADO сейчас есть почти на каждой машине работающей под W2k BDE > придется устанавливать везде где нужно запустить мою прогу - а это меня не устраивает :)
с чего начали, к чему пришли
> OLE Provider For Visual FoxPro устанавливаем и наслаждаемся жизнью :).
от одной установки в пользу другой ...
ты скажи, индексы создавать пробовал? > sniknik © (19.02.04 13:29) [20]
или оно тебе не нужно?
← →
mvg_first © (2004-02-19 16:06) [26]sniknik © (19.02.04 15:36) [25]
>от одной установки в пользу другой ...
Установка установке рознь. BDE напорядок неудобнее. Да и мне кажется всех прелестей SQL он не позволит. Да и для подключения именно к этим DBF все равно придется использовать драйвер ODBC.
Ну и еще есть один аспект о котором я ранее не упоминал, у меня уже есть программа которая работает через ADO но с SQL базой. Пэтому даже при всех прочих равных условиях Адо для меня более приоритетно.
А насчет индексов - не создавал, потому что 1С в принципе сама их создает где нужно. А там где не создаст врядли они помогут мне так кажется.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.034 c