Текущий архив: 2004.01.29;
Скачать: CL | DM;
ВнизПри вводе ключевого поля не отображаются некоторые лукапные поля Найти похожие ветки
← →
alextov (2003-12-29 15:28) [0]Наблюдается такой интересный глючок.
Есть таблица с товарами (код товара, название товара) - TableTovari, таблица с заказами(код товара, количество, и тд) - TableZakazi. Поле "Название товара" в TableZakazi - лукапное и связывается с TableTovari по полю "Код товара".
То есть при новом заказе я вбиваю код товара в поле "Код товара" таблицы заказов и по Enter в лукапном поле появляется название товара. Ситуация то в общем стандартная.
Но на некоторые дробные коды (типа 69.1) название товара не подтягивается, как-будто такого товара вообще нет в таблице товаров. Причем записи в таблице товаров (те которые отображаются нормально и те которые не подхватываются) практически идентичны.
Никто не подскажет в чем может быть проблема ?
← →
Stas (2003-12-29 15:30) [1]Возможно у тебя тип поля Float и получается вместо 69.1 69.099999999 или что-то в этом роде. Попробуй соединять округленные поля.
← →
alextov (2003-12-29 15:52) [2]У меня действительно тип поля TFloat и коды товаров не всегда целые - соответственно задать тип поля как ftInteger я не могу. Но как окрулять поля до 1-го знака после запятой? Я так понимаю округлять значение можно на OnGetText и OnSetText, но этапе связывания таблиц данный метод неприемлим. :(((
← →
Stas (2003-12-29 15:54) [3]А какая у тебя СУБД ?
← →
Johnmen (2003-12-29 15:55) [4]>alextov
Для данного случая в обязательном порядке д.б. суррогатные целочисленные ключевые поля. Почитай про организацию ссылочной целостности...
← →
alextov (2003-12-29 16:01) [5]Oracle8
← →
Stas (2003-12-29 16:05) [6]У тебя в Oracle должна быть функция округления.
в MS SQL так Select Field1,...,ROUND (KEYFIELD,1) from ...
у тебя должно быть что-то похожее.
Я так делал и все работает 100%
← →
alextov (2003-12-29 16:12) [7]Логично, я правда сейчас пользуюсь TTable, туда select не запишешь. Но перейти на TQuery не проблема. Спасибо ща попробую.
← →
Stas (2003-12-29 16:33) [8]Для таких БД как ORACLE TTABLE лучше не использовать и BDE наверное тоже.
← →
alextov (2003-12-29 17:16) [9]да я и не использую...
пользуюсь набором компонент прямого доступа ODAC, а писал TTable, чтоб проще для восприятия было
← →
alextov (2003-12-29 17:23) [10]не хочет, собака !!!
Поменял oба TOraTable на TOraQuery написал в запросе
select round(id,1) from tovari
То есть уже должно выбирать в QueryTovari значение поля id округленное до 1 цифры после запятой...., ввожу тоже вроде 69.1 (а не 69.09999)....должно одно равняться другому , а не хочет , зараза
← →
Sandman25 (2003-12-29 17:39) [11][10] alextov (29.12.03 17:23)
Замените FLOAT на DECIMAL(10,1)
← →
alextov (2003-12-30 11:46) [12]не совсем понял где заменить?
Если в базе то у меня там изначально тип поля был определен как
NUMBER(8,1), что по моему разумению где-то одинаково.
← →
Anatoly Podgoretsky (2003-12-30 11:53) [13]alextov (30.12.03 11:46) [12]
Необязательно, зависит от СУБД, но как правило NUMBER это float(double), а DECIMAL BCD, но не обязательно, это авторы решают
← →
alextov (2003-12-30 12:08) [14]Поменял тип поля на DECIMAL(8,2) но это не помогло.
Может еще и TOraQuery поменять тип поля на ftBCD&
← →
Sandman25 (2003-12-30 12:43) [15][14] alextov (30.12.03 12:08)
Естественно, надо поменять. Иначе Delphi перегоняет обратно во Float.
← →
alextov (2003-12-30 14:40) [16]После того как поменял тип поля в Query на TBCDField
при открытии Query начала вылетать ошибка
Type mismatch for field "Field1" expecting BCD , actual Float
← →
Sandman25 (2003-12-30 16:22) [17]В базе поменять на DEC не забыли?
← →
alextov (2003-12-30 16:29) [18]поменял см [14]
← →
Sandman25 (2003-12-30 16:39) [19][18] alextov (30.12.03 16:29)
Значит, это проблема TOraQuery, который преобразует BCD в Float.
Я использовал такой подход с TQuery и с TSQLQuery и такого сообщения не было. Или Вы в select еще к полю что-то добавляете? Тогда попробуйте явно привести к BCD: что-то типа CAST(myfield AS DECIMAL(8,2))
← →
alextov (2003-12-30 16:51) [20]к сожалению это не проблема TOraQuery - это моя ПРОБЛЕМА!! :)))
← →
Sandman25 (2003-12-30 16:53) [21][20] alextov (30.12.03 16:51)
Вот Вам совет. Сделайте новую табличку из одного поля типа DEC(8,2), новый проект с TORAQuery и посмотрите, сохраниться ли для него та же ругань. Если все будет работать, значит, действительно была Ваша проблема :)
← →
alextov (2003-12-30 17:57) [22]Всем спасибо!!
Решать данную проблему буду уже в следующем году, так как новогодняя пьянка уже началась :))) И завтра тоже явно свежие творческие идеи в голову не придут :)))
Страницы: 1 вся ветка
Текущий архив: 2004.01.29;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.007 c