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

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

FOX,ADO и отрицательные числа [D6, dBase, FoxPro]


Алексей ©   (2004-09-01 19:48:00) 

Второй раз задаю этот вопрос:
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;';


sniknik   (2004-09-03 10:31:00) [1]

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


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

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


sniknik   (2004-09-02 16:44:00) [3]

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

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


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

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


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


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

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

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

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


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

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


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

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


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

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


sniknik   (2004-09-02 11:34:00) [9]

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


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

Давай. str_al_al@rambler.ru


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

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

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


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

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


sniknik   (2004-09-02 11:09:00) [13]

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


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

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


sniknik   (2004-09-02 10:56:00) [15]

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

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


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

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


Наверх

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