Форум: "Базы";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.092 c