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

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

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]

алиас настроить


Наверх

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