Текущий архив: 2007.05.27;
Скачать: CL | DM;
Вниз
Изменить LANGDRIVER для DBase Найти похожие ветки
← →
lightix (2007-03-13 09:45) [0]Как для всех наборов данных (таблицы DBASE) приложения изменить LANGDRIVER, не меняя при этом настройки в BDE, т.е. чтобы все остальные приложения работали с стандартным LANGDRIVER?
В настройках BDE для DBASE указано LANGDRIVER=dBASE RUS cp866 , а мне нужно, чтобы мое приложение работало с LANGDRIVER="ascii" ANSI, и при этом все остальные приложения работали с dBASE RUS cp866. Алиасы создавать нельзя.
Пробовал два способа:
1. На форме поставил TDatabase (DriverName=STANDART), прописал такие параметры:
DEFAULT DRIVER=DBASE
LANGDRIVER=DBWINUS0
У всех наборов данных указал его в качестве DatabaseName.
Кодировка не поменялась.
2. Перед открытием набора данных такой код:
var List:TStrings;
.......
BEGIN
.......
List.Add ( "LANGDRIVER=DBWINUS0 ");
.......
Session.ModifyDriver( "DBASE", List );
.......
END;
В таком случае меняются и настройки в БДЕ.
← →
ЮЮ © (2007-03-13 10:10) [1]> Алиасы создавать нельзя.
Алиасы можно создавать и на время работы приложениия. см. TSession.ConfigMode
Кстати и в топике о ModifyDriver об этом тоже говорится:
A session’s ConfigMode property determines whether a driver is local to the session, or is available to all applications in the BDE persistent store as long as any BDE clients are active. To save a driver permanently, call the SaveConfigFile method before ending the session.
← →
lightix (2007-03-13 10:30) [2]Странно, но почему-то у меня сохраняются настройки в конфиге, хотя SaveConfigFile не вызываю...
Перепробовал все ConfigMode
← →
lightix (2007-03-13 10:38) [3]Может быть это потому, что я работаю с default session?
← →
lightix (2007-03-13 11:11) [4]Закрыл-открыл IDE, теперь в конфиге не сохраняется....
Но запускаю 2 приложения - одно должно использовать кодировку из конфига (866), а другое - использовать ANSI с помощью ModifyDriver.
Так вот, после ModifyDriver, первое приложение уже тоже с кодировкой ANSI....
Как сделать так, чтобы смену кодировки не видели другие приложения??
← →
lightix (2007-03-13 11:50) [5]И еще вопрос - если в приложении нужно будет создать 2 таблицы с разными кодировками, то как указать что для одной используй одну кодировку, для другой другую?
Пробовал с разными TSession для каждой таблицы - кодировка выставляется один раз , а второй раз уже не изменяется
← →
lightix (2007-03-13 11:50) [6]И еще вопрос - если в приложении нужно будет создать 2 таблицы с разными кодировками, то как указать что для одной используй одну кодировку, для другой другую?
Пробовал с разными TSession для каждой таблицы - кодировка выставляется один раз , а второй раз уже не изменяется
← →
ЮЮ © (2007-03-13 12:10) [7]> Как сделать так, чтобы смену кодировки не видели другие
> приложения??
Если все-таки посмотреть в сторону "виртуальных" алиасов и там устанавливать LANGDRIVER, а не менять глобальный LANGDRIVER для DBASE ?
> если в приложении нужно будет создать 2 таблицы с разными
> кодировками
Кому, интересно, такое нужно?
Создавать две TDataBase и использовать для разных таблиц разные базы. Вот только запросом из двух таблиц сразу вряд ли что получишь путное.
← →
Desdechado © (2007-03-13 12:22) [8]http://delphimaster.net/view/2-1173690419/
← →
lightix (2007-03-13 13:13) [9]
> ЮЮ © (13.03.07 12:10) [7]
> >Если все-таки посмотреть в сторону "виртуальных"
> алиасов и там устанавливать LANGDRIVER, а не менять глобальный
> LANGDRIVER для DBASE ?
А как менять у алиаса LANGDRIVER?
> если в приложении нужно будет создать
> 2 таблицы с разными > кодировкамиКому, интересно, такое
> нужно?Создавать две TDataBase и использовать для разных
> таблиц разные базы. Вот только запросом из двух таблиц сразу
> вряд ли что получишь путное.
Нужен не запрос из двух таблиц. В общем ПО работает на DBASE с кодировкой 866, а на вход могут прийти DBF как 866 так и ANSI, присылают каждый раз как захотят, и таблицы то DBASE то FOXPRO. Приходится каждый раз брать входной файл и вручную перекодировать, сохранять в "своем формате", и только тогда уже подсовывать его ПО. Хотелось бы, чтобы входной файл подхватывался автоматически.
← →
ЮЮ © (2007-03-13 13:27) [10]> А как менять у алиаса LANGDRIVER?
Точно, у STANDARD c параметрами не густо, т.е. он как раз и работает, похоже с тем, что в NATIVE/DBASE стоит :(
← →
lightix (2007-03-13 13:34) [11]
> Точно, у STANDARD c параметрами не густо, т.е. он как раз
> и работает, похоже с тем, что в NATIVE/DBASE стоит :(
Вот и я о том же... :(
← →
Desdechado © (2007-03-13 13:45) [12]> Нужен не запрос из двух таблиц
Ты вычитал совсем не то, что нужно. И пропустил нужное. Tsession - там настройка LangDriver.
Но, судя по всему, тебе просто придется читать байт кодировки из заголовка DBF и выставлять нужную кодировку в своем Session.
← →
lightix (2007-03-13 13:49) [13]
> Desdechado © (13.03.07 13:45) [12]
> Tsession - там настройка LangDriver.Но, судя по всему, тебе просто >придется читать байт кодировки из заголовка DBF и выставлять нужную >кодировку в своем Session.
Не выставляется! Верней выставляется один раз, а потом уже не изменяется больше. TSession разные для двух таблиц.
Страницы: 1 вся ветка
Текущий архив: 2007.05.27;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.041 c