Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-1078406246
ghg
2004-03-04 16:17
2004.03.28
использование функции из DLL


1-1079030891
Rim
2004-03-11 21:48
2004.03.28
Массив


1-1078415118
Pa5ha
2004-03-04 18:45
2004.03.28
MainMenu


1-1078485306
Олег
2004-03-05 14:15
2004.03.28
WM_INPUTLANGCHANGE и TEdit


3-1077201038
STANT
2004-02-19 17:30
2004.03.28
Проблема с кодировкой Paradox-таблиц





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский