![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Select, Dbase, BDE, кодировка...
Эдик © (2004-06-22 15:50:00)Всем привет!
Есть таблица DBASE IV, созданная в фоксе, кодовая страница 866, необходимо сделать выборку... Проблема в том, что по умолчанию для файлов *.dbf исспользуеться драйвер DBASE, а он некоректно воспринимает фоксовскую кодовую страницу... Открываю таблицу компонентом TTable и исспользую TableType=ttfoxpro, данные отображаються корректно, но как TQuery заставить исспользовать драйвер FOXPRO???
Всем заранее спасибо.
Эдик (2004-06-24 19:25:00) [1]Побород!!!
В настройках драйвера FOXPRO level надо поставить 25...
и все чудесно работает
Эдик (2004-06-24 19:25:00) [2]Поборол!!!
В настройках драйвера FOXPRO level надо поставить 25...
и все чудесно работает
Эдик (2004-06-24 10:11:00) [3]Я так понимаю, что драйвер FOXPRO дефолтно типу Numeric выставляет параметры (20,4), а потом с таким полем работать не может... :-((
Dbase устанавливает по умолчанию (19,4), и нормально работает...
Все это можно проверить, сделав BachMove.
Есть идеи?
Эдик (2004-06-23 17:42:00) [4]попробуй не ставить расширение для таблицы, т.к. в противном слусае подключаеться драйвер DBASE
select a.*,cast(0 as numeric(16,2)) as Suma from Table.dbf a
у меня тоже работает, но текстовые поля - зюки, т.к. у DBASE подругому кодировка устанавливается...
Для fox-а 866 кодировка - байт по смещению 29 от начала файла $65
для DBASE он же но $26
Сделай кодировку 866 фоксовскую и таблицу с русскими буквами, сам увидешь...
Sandman25 (2004-06-23 17:27:00) [5][11] Эдик (23.06.04 17:24)
У меня так работает. И с numeric, и с float
Эдик (2004-06-23 17:24:00) [6]Попробуйте:
1. Сделайте алиас Type=Standart, Default driver=foxpro
2. сделайте выборку
select a.*,cast(0 as numeric(16,2)) as Suma from Table a
Эдик (2004-06-23 17:21:00) [7]>cast(0 as decimal(16,2)) пробовали?
пробовал, не получается...
Sandman25 (2004-06-23 17:10:00) [8]cast(0 as decimal(16,2)) пробовали?
Эдик (2004-06-23 17:08:00) [9]Я это сделал, выбрать получаеться, но никак нельзя в запросе работать с типом числовым (не инт) - numeric,float...
попробуйте вот тка:
select a.*,0 as Suma from Table a
или
select a.*,cast(0 as numeric(16,2)) as Suma from Table a
а вот так идет
select a.*,cast(0 as int) as Suma from Table a
А если Default driver поставит DBASE, то все выполняються...
Вот такие дела.
Соловьев (2004-06-23 10:28:00) [10]BDE->Configuration->Drivers->Native->FoxPro->Langdriver=dBASE RUS cp866
сохрани, и закрой все приложения использующие BDE, или перегрузи комп для надежности
Эдик (2004-06-22 18:36:00) [11]Обнаружил глюк...
Настроил алиас, установил default driver=foxpro, теперь если в скрипте имя таблицы указывать как TableName.dbf - выбирает зюками, а если TableName, то все нормально, но не в этом проблема, если пользоваться последним вариантом, перестает работать функция преобразования типа cast и именнно при преобразовании в тип float или numeric... :-((
Какие есть мысли?
Соловьев (2004-06-22 16:05:00) [12]TSsession+Tdatabase
Sandman25 (2004-06-22 16:04:00) [13]Можно псевдоним сделать "локальный", в рамках только текущей программы. Смотреть методы Session
Эдик (2004-06-22 16:03:00) [14]А как-нить без псевдонимов можно обойтись?
Andrick (2004-06-22 15:52:00) [15]А псевдонимы на что? А BDE Administrator для чего делался?
Соловьев (2004-06-22 15:51:00) [16]алиас настроить