Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Кодировка dBase при использовании ADO +Jet 4.0 [D7]


Страницы:   1 2

mvg_first ©   (2004-02-19 10:00:00) 

Мне нужно выполнять 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 16:06:00) [1]

sniknik ©   (19.02.04 15:36) [25]
>от одной установки в пользу другой ...
Установка установке рознь. BDE напорядок неудобнее. Да и мне кажется всех прелестей SQL он не позволит. Да и для подключения именно к этим DBF все равно придется использовать драйвер ODBC.
Ну и еще есть один аспект о котором я ранее не упоминал, у меня уже есть программа которая работает через ADO но с SQL  базой. Пэтому даже при всех прочих равных условиях Адо для меня более приоритетно.

А насчет индексов - не создавал, потому что 1С в принципе сама их создает где нужно. А там где не создаст врядли они помогут мне так кажется.


sniknik   (2004-02-19 15:36:00) [2]

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 14:26:00) [3]

Еще один вариант.
Тянем вот отсюда
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 14:06:00) [4]

два варианта
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 13:33:00) [5]

Ух и стиль блин. Прошу прощения за грамматику и стиль -спешу побольше задать вопросов - вот и получается такое :(


mvg_first   (2004-02-19 13:30:00) [6]

Anatoly Podgoretsky ©   (19.02.04 13:11) [19]
Спасибо за дополнительное разъяснение касательно форматов. Но уже выснили что формат Visual FoxPro

Нашли оптимальный способ открытия, используя драйвер ODBC.

Но у меня сразу же вопрос в догонку. Етстовая база на которой я тренировался находится у меня в каталоге C:\Temp. Там все работает. А вот когда я попробовал настроится на рабочую базу которая у меня лежит в d:\Projects\1C_Config's\kondceh\ прога рукается говорит таблица sc148.dbf не может быть найдена или шо то в этом духе. Я так понимаю что указывать путь содержит знак ' для ODBC драйвера - есть некорретное поведение. Но мне то надо открыть именно так? 1С ведь открывает эту базу и успешно ею пользуется.

Вопрос на ту же тему только чуть по другому Подключиться к БД FOXPRO  не указывая каталог, так что бы талицы искались в текущем каталоге где и расположенна программа.


sniknik   (2004-02-19 13:29:00) [7]

> Ну вот - начинается (я где-то это говорил) Блин у меня жена точно так же все наровит перекрутить :)
а ты поменяй стиль разговора, вместо того чтобы (относительно жены) говорить "ну сейчас ты права дорогая" говори "дорогая! ты как всегда права" (даже если это не так), посмотриш будут ли "перекруты". (это я о том что это в основном от тебя зависит)

> Кстати скачал поставил драйвера для Visual Fox Pro 6 - и все заработало
все? сомнительно, все никогда работать не будет. попробуй индекс создать в этом конкретном случае (Visual FoxPro).

Anatoly Podgoretsky ©   (19.02.04 13:11) [19]
> Весь вопрос а какой формат у таблиц из 1С
в 1С пока встречал только 1251. возможно есть и вторая в более ранних версиях, но с ними к счастью не работаю. (и так головной боли хватает, еще и это делить)


Anatoly Podgoretsky   (2004-02-19 13:11:00) [8]

Весь вопрос а какой формат у таблиц из 1С
Для dBase ниже 7 поддержана только одна русская кодировка 866, для Фокспро 2.6 + две 866 и 1251
Возможно еще использовать машинную кодировку 'ascii' ANSI

После этого возникает следующий вопрос, работа с JET различается установлен БДЕ или нет, в первом случае используются настройки из БДЕ, во втором из указанных ключей. По умолчанию преобразование из OEM в ANSI


mvg_first   (2004-02-19 13:06:00) [9]

Респект!


mvg_first   (2004-02-19 13:05:00) [10]

Ну вот - начинается (я где-то это говорил) Блин у меня жена точно так же все наровит перекрутить :)
Кстати скачал поставил драйвера для Visual Fox Pro 6 - и все заработало


sniknik   (2004-02-19 13:00:00) [11]

> Ну тут ты прав.
а до этого значит был не прав? ну чтож, спасибо.


mvg_first   (2004-02-19 12:54:00) [12]

Ну тут ты прав. Спорить не буду. Как это можно обойти?

На вскидку только два варианта - или пользователь сам выполняет переключение в программе если видит нечитаемые данные или одно из двух :)

Выполнять тестовое открытие и искать заранее невозможный символ в текстовом поле, и при его обнаружении производить изменение ключей реестра и рестарт?

Или каким то образом проверять что установлено на машиен какой ленгдрайвер установлен для dBase и менять его находу. Если стоит не Ansi.

Кстати как программно проверить установленно ли БДЕ и какой ленгдрайвер у ДБэйс???


sniknik   (2004-02-19 12:27:00) [13]

> Но при этом у меня получается BDE установлен (ставился по умолчанию вместе с дельфином) и все равно этот параметр значение имеет :)
т.е. у тебя счас все зашибись? инфа по русски?
могу сделать вывод что в BDE у драйверов dBase и(или) Foxpro (не могу так сказать какой влияет) стоит ленгдрайвер 'ascii' ANSI (ANCYRR, без конвертации), поставь на оба dBASE RUS cp866 и проверь свою прогу еще раз на русские буквы. (после изменений программу надо перестартовать).
(???) ну как? а это основное значение в россии для прог использующих BDE.


mvg_first   (2004-02-19 12:15:00) [14]

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 11:51:00) [15]

mvg_first ©   (19.02.04 11:20) [10]
возможно, читал на мелкософте что с какойто версии не включаются, можно доставить, оттудаже с мелкософта.
но это родные драйвера для 1C таблиц.

mvg_first ©   (19.02.04 11:35) [11]
если бы посмотрел ссылку, то увидел бы анологичное решение, а также  возможную дырку для глюков. (установлено/неустановлено BDE)


mvg_first   (2004-02-19 11:35:00) [16]

Как вариант решения найдено следующее (где найдено? - в справке по JET файл JETSQL40.CHM поставляется вместе с оффисом)
В регистре в ключе

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Xbase

меняем значение у реквизита DataCodePage на ANSI и телемаркет


mvg_first   (2004-02-19 11:20:00) [17]

Попробовал ставить эту строку не программно а использовать кномполку Build  - оказывается нет у меня в ODBC такого драйвера :) Может по этому?


mvg_first   (2004-02-19 11:16:00) [18]

Когда это вылетает?
Когда говорю
ADOConnection.Connected := true;


mvg_first   (2004-02-19 11:14:00) [19]

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 10:59:00) [20]

Opilki_Inside
Это кардинально не тот метод которым я хочу пользоваться, я знаю одно 1С их показыват по русски, блокнотом или другим текстовым (не UNICODE) отображаются по русски. Значит и моя программа должна это видеть. И основная суть вопроса это какую конфигурационную строку задать в ADOConnection


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо