Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.18;
Скачать: CL | DM;

Вниз

Select, Dbase, BDE, кодировка...   Найти похожие ветки 

 
Эдик   (2004-06-22 15:50) [0]

Всем привет!
Есть таблица DBASE IV, созданная в фоксе, кодовая страница 866, необходимо сделать выборку... Проблема в том, что по умолчанию для файлов *.dbf исспользуеться драйвер DBASE, а он некоректно воспринимает фоксовскую кодовую страницу... Открываю таблицу компонентом TTable и исспользую TableType=ttfoxpro, данные отображаються корректно, но как TQuery заставить исспользовать драйвер FOXPRO???
Всем заранее спасибо.


 
Соловьев ©   (2004-06-22 15:51) [1]

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


 
Andrick ©   (2004-06-22 15:52) [2]

А псевдонимы на что? А BDE Administrator для чего делался?


 
Эдик   (2004-06-22 16:03) [3]

А как-нить без псевдонимов можно обойтись?


 
Sandman25 ©   (2004-06-22 16:04) [4]

Можно псевдоним сделать "локальный", в рамках только текущей программы. Смотреть методы Session


 
Соловьев ©   (2004-06-22 16:05) [5]

TSsession+Tdatabase


 
Эдик   (2004-06-22 18:36) [6]

Обнаружил глюк...
Настроил алиас, установил default driver=foxpro, теперь если в скрипте имя таблицы указывать как TableName.dbf - выбирает зюками, а если TableName, то все нормально, но не в этом проблема, если пользоваться последним вариантом, перестает работать функция преобразования типа cast и именнно при преобразовании в тип float или numeric... :-((
Какие есть мысли?


 
Соловьев ©   (2004-06-23 10:28) [7]

BDE->Configuration->Drivers->Native->FoxPro->Langdriver=dBASE RUS cp866
сохрани, и закрой все приложения использующие BDE, или перегрузи комп для надежности


 
Эдик   (2004-06-23 17:08) [8]

Я это сделал, выбрать получаеться, но никак нельзя в запросе работать с типом числовым (не инт) - 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, то все выполняються...
Вот такие дела.


 
Sandman25 ©   (2004-06-23 17:10) [9]

cast(0 as decimal(16,2)) пробовали?


 
Эдик   (2004-06-23 17:21) [10]

>cast(0 as decimal(16,2)) пробовали?
пробовал, не получается...


 
Эдик   (2004-06-23 17:24) [11]

Попробуйте:
1. Сделайте алиас Type=Standart, Default driver=foxpro
2. сделайте выборку
select a.*,cast(0 as numeric(16,2)) as Suma from Table a


 
Sandman25 ©   (2004-06-23 17:27) [12]

[11] Эдик   (23.06.04 17:24)

У меня так работает. И с numeric, и с float


 
Эдик   (2004-06-23 17:42) [13]

попробуй не ставить расширение для таблицы, т.к. в противном слусае подключаеться драйвер DBASE
select a.*,cast(0 as numeric(16,2)) as Suma from Table.dbf a
у меня тоже работает, но текстовые поля - зюки, т.к. у DBASE подругому кодировка устанавливается...
Для fox-а 866 кодировка - байт по смещению 29 от начала файла $65
для DBASE он же но $26
Сделай кодировку 866 фоксовскую и таблицу с русскими буквами, сам увидешь...


 
Эдик   (2004-06-24 10:11) [14]

Я так понимаю, что драйвер FOXPRO дефолтно типу Numeric выставляет параметры (20,4), а потом с таким полем работать не может...  :-((
Dbase устанавливает по умолчанию (19,4), и нормально работает...
Все это можно проверить, сделав BachMove.
Есть идеи?


 
Эдик   (2004-06-24 19:25) [15]

Побород!!!
В настройках драйвера FOXPRO level надо поставить 25...
и все чудесно работает


 
Эдик   (2004-06-24 19:25) [16]

Поборол!!!
В настройках драйвера FOXPRO level надо поставить 25...
и все чудесно работает



Страницы: 1 вся ветка

Текущий архив: 2004.07.18;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.043 c
1-1088687390
Akella
2004-07-01 17:09
2004.07.18
Проблема с объявлением функции внутри формы


14-1088320968
georg
2004-06-27 11:22
2004.07.18
Delphi 8


1-1088736123
qwerg
2004-07-02 06:42
2004.07.18
Скины


4-1086467751
SniZ
2004-06-06 00:35
2004.07.18
IrDA


6-1084803810
Artem03
2004-05-17 18:23
2004.07.18
TIdTCPServer, TIdTCPClient - передача файлов