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

Вниз

FOX,ADO и отрицательные числа   Найти похожие ветки 

 
Алексей   (2004-09-01 19:48) [0]

Второй раз задаю этот вопрос:
TADOQuery тащит отрицательные числа неверно. Пример:
select b.id_n,a.id_d,a.kol,a.pr from telo_n a,schapka_n b
where a.id_n=b.id_n
and
b.data_p=:data_p
and
b.cl=.t.
and b.mesto=:mesto
and a.kol<0

в гриде показывает записи, НО kol ПОЛОЖИТЕЛЬНЫЕ!!!
вариант

     while not dm1.qGetNakl.Eof do begin
        Memo1.Lines.Add(dm1.qGetNakl.FieldByName("id_d").AsString+"      |   "+
                        IntToStr(dm1.qGetNakl.FieldByName("kol").AsInteger));
        dm1.qGetNakl.Next;
     end;  

тоже в MEMO дает положительные числа.
Пробовал брать количество как AsFloat - таже беда.
В вычислениях (может при отображении минус теряется?) таже ботва.
В прошлый раз справился использую кучу проверок в коде, но ведь это не выход.
Может кто-то из вас с подобной х...й сталкивался???

Таблицы FOX (мое проклятие!!!) и dBase (уж лучше бы все были в FOXе -и я бы на FOXе тогда написал). Использую следующую строку подключения:
"DSN=Таблицы Visual FoxPro;UID=;PWD=;SourceDB="+
  Put_k_BD+";SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;"+
  "Collate=Machine;Null=Yes;Deleted=Yes;";


 
Алексей   (2004-09-01 20:05) [1]

Попробовал с BDE - заработало так как надо, но нет желания мешать в одной программе разные методы доступа к БД, тем более ставить клиентам BDE.


 
sniknik ©   (2004-09-02 10:56) [2]

> Может кто-то из вас с подобной х...й сталкивался???
для больших чисел (bigint в MSSQL) есть подобный "глючок" в реализации толи ADO толи дейфийской обертки (конкретно не разбирался), оно их в строке (char(19)) держит...(в рекордсете/либо при передаче в делфи) а если числа отрицательные то минус на максимуме теряется ;( (20 символов получается).

возможно у тебя похожая проблема тип поля большое число, или интерпретируется так. выход был, делал свое приведение к строке в запросе (естественно len 20 :).


 
Алексей   (2004-09-02 11:03) [3]

В том то и дело, что поле описанно как numeric(6,0), да и значения от -1000 (ну очеь редко) до 1000. Основной диапазон значений от 0 до 30. А отрицательные от -30 до 0.
Может порыться в исходниках? Но для этого я не настолько владею дельфями :-(


 
sniknik ©   (2004-09-02 11:09) [4]

> поле описанно как numeric(6,0)
тогда проблема не в этом (специально проверил токо что, нормально видит)


 
Алексей   (2004-09-02 11:12) [5]

Самое интересное, что SQL Explorer минусы прекрасно показывает, при настройке алиаса черех ODBC.
Ну BDE тоже работает.
А в программе ни в какую....


 
sniknik ©   (2004-09-02 11:14) [6]

> А в программе ни в какую....
ну значит чегото в программе...

(могу прислать свою на ADO для проверки (500кб), если и в ней тоже самое то... ты не виноват ;о), виновата дельфя и тд.)


 
Алексей   (2004-09-02 11:23) [7]

Давай. str_al_al@rambler.ru


 
sniknik ©   (2004-09-02 11:34) [8]

послал. будет та же фигня, пришли табличку возможно дело в ней.


 
Алексей   (2004-09-02 11:50) [9]

Так таблица-то FOX`ова :-(


 
sniknik ©   (2004-09-02 12:10) [10]

> Так таблица-то FOX`ова :-(
ну так что? думаеш у меня драйвера под нее нету? ;о)))


 
Алексей   (2004-09-02 12:20) [11]

Тады поставлю вопрос так:
Какая строка подключения должна быть для работы с фоксом черех джет 4?
В реестре не нашел ссылок на фокс :-(
(software\mikrosoft\jet\ ....)


 
sniknik ©   (2004-09-02 12:26) [12]

> Какая строка подключения должна быть для работы с фоксом черех джет 4?
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\DB;Extended Properties=dBase IV;Persist Security Info=False

но это для старого фокса (пока они еще не отличались сильно), новый сразу увидиш таблицы будут или просто не видны или не открыватся (ошибку давать будет).

> В реестре не нашел ссылок на фокс :-(
их с 3.5 нет, в нем еще было разделение, после убрали.


 
Алексей   (2004-09-02 16:28) [13]

УРА!!!
Победа!!!
Но через АГРОММНУЮ  ЖООООООООПУ :-(
Пришдось сделать так:
select isnd, AllTrim(str(kol))  from nakl_d
where kol<0


Через ж..у, но работает.....


 
sniknik ©   (2004-09-02 16:44) [14]

через строку? ну так еше в первом своем посте говорил так поступить. (читал бы внимательнее давно бы уже радовался.. ;о)

в моей то то проге пробовал? как там?


 
Алексей   (2004-09-03 09:31) [15]

Пробовал. Как ты иговорил - не сработало из-за того, что таблица сделана в более позднем ФОКСе


 
sniknik ©   (2004-09-03 10:31) [16]

> не сработало из-за того, что таблица сделана в более позднем ФОКСе
ну так там же можно любую строку настроить! интересно именно это с той же строкой подключения как у тебя но в моей программе. (глюк в программе или нет понять, если с той же строкой но в моей проге этого не будет...)



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

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

Наверх




Память: 0.5 MB
Время: 0.024 c
4-1093413745
sohat
2004-08-25 10:02
2004.10.03
хук на сообщения об ошибке, возможно ли такое


14-1095175588
Отечественный программист
2004-09-14 19:26
2004.10.03
АСКОН


3-1094218103
Muchacho
2004-09-03 17:28
2004.10.03
Учебник по InterBase


3-1094223672
}|{yk
2004-09-03 19:01
2004.10.03
Вот проблема встала...


3-1094623708
Junior
2004-09-08 10:08
2004.10.03
AutoInc в таблице Paradox