Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];

Вниз

При вводе ключевого поля не отображаются некоторые лукапные поля   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.009 c
1-93452
Alexander666
2004-01-16 09:31
2004.01.29
Компилятор


3-93385
belyh
2003-12-30 17:40
2004.01.29
QUERY - не обновляется


1-93504
Кен
2004-01-16 02:34
2004.01.29
Чем лучше запаковать программу, чтобы враги не распаковали ?


7-93727
Sam Stone
2003-11-12 19:36
2004.01.29
Файлы из кеша IE


1-93456
Lkan
2004-01-16 08:03
2004.01.29
Хеш





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский