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

Вниз

Разное форматирование в одной колонке   Найти похожие ветки 

 
Tlotr   (2002-11-28 15:23) [0]

Здравствуйте.
Вопрост такой: Есть два типа товаров, один измеряется в double числах (тонны), другой в целых (штуки). Можно ли как-то выпендриться, чтобы в DBGride (я пользуюсь EhLib) отображать эти данные в одной и той же колонке (идеально - с разным DisplayFormat: "##0 штук" и "###,##0.000 тонн" соответственно. )

Очень нежелательно делать две колонки, ведь одна из них всегда окажется пустой, а так как данные в гриде еще и редактируются (вводятся), то и рисованием не помочь. Нутром чую, что копать надо в OnCalcFields, только вот если я изменяю DisplayFormat, то он меняется для всей колонки. А как бы сделать DisplayFormat для конкретной строки ?

Заранее благодарен, Игорь.


 
Prooksius   (2002-11-28 15:29) [1]

В калькулируемом поле (типа string) форматируешь строчку (из числа)


 
Jeer   (2002-11-28 15:29) [2]

TField.OnGetText


 
mike-d   (2002-11-28 21:14) [3]

Ты же как-то различаешь, где штуки, а где тонны?
Добавь колонку "единица измерения".


 
Tlotr   (2002-11-29 10:07) [4]

2 mike-d:
На данном этапе так и сделал, но вообще-то,
Дело в том, что штуки должны редактироваться целыми числами, не отображая дробных нулей, а тонны - три знака после запятой.

2 Prooksius, Jeer:
Вы, видимо, имели ввиду одно и то же ? Tnx, попробую...

Спасибо.


 
ЮЮ   (2002-11-29 10:23) [5]

Если это два разных столбца в физической таблице, то непосредственно в DBGride ты этого не сделаешь, т.к. стобец грида непосредственно связан с одним столбцом DataSeta.
Правильнее иметь одно целочисленное поле в таблице, а в гриде отображать его по разному. Но тогда и хранить надо будет не тонны, а килограммы


 
Tlotr   (2002-11-29 14:39) [6]

2 ЮЮ: Интересная мысль... :) Значит, до 65 тонн ? ;)

Кстати, а calculated-поля я так понимаю, редактировать через грид как data нельзя, да ? %(


 
ЮЮ   (2002-11-30 08:37) [7]

>Значит, до 65 тонн ? ;)
Нет, до 2147483,647 :-) Зато точно будешь знать, что если ввел
0,29 то и храниться и суммироваться будет 290, а не 0,289999999765 :-)

Так значит это всё-таки два разных поля в одной таблице, а реально используется одно? Не очень интересная мысль :-)))


 
Tlotr   (2002-12-01 04:43) [8]

2 ЮЮ
два разных поля в одной таблице, а реально используется одно?
Подловил.... Не совсем. :)
Скажем так, это для весовых используется одно. А для штучных известен их табличный вес (в зависимости от формата) и вес заказа калькулируется от него.

Масса весового товара = введенному значению.
Масса штучного товара = введенному значению * табличную массу одной штуки (в зависимости от формата).

Т.о., хотя и есть некоторая избыточность, но она позволяет не джойнить несколько дополнительных таблиц при расчетах.


 
maratFromTomsk   (2002-12-02 12:34) [9]

может быть в таблицу добавить поле типа DisplayName,
а в триггере его обрабатывать.
Редактирование данных, на мой взгляд, лучше вовсе делать в форме.
В этой форме можно показывать оба поля,
и в зависимости от типа разрешать редактировать требуемое поле.

можно еще поиграться форматом для поля
такие вещи я делал на фоксе
для каждого типа данных свой формат ...
в этом случае поле данных д.б. строкой

кроме этого для каждого типа данных можно
сделать валидацию данных,
при помещении данных в табицк обновлять требуемые поля
и т.п.

В своем проекте мы поступили так:
сделали класс - так называемые редакторы свойств
(наподобие Delphi PropEditor)
которые весь этот функционал обеспечивали.
Для каждого типа данных свой наследник от PropEditor

Ну и свой набор контролов,
для редактирования табличных данных используем наследник
от DrawGrid,
для паспорта свой контрол,
для адреса еще один,
для элемента справочника,
для документа
ну и т.д.

Это кстати удобно еще в том смысле что формы мало зависят от того как лежат данные
потом как мы не используем DataSet и их контролы
есть тут и плюсы и минусы




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

Форум: "Базы";
Текущий архив: 2002.12.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
3-61413
Diouzshev
2002-11-27 18:57
2002.12.19
Странно ведет себя цикл while not DataSet.Eof do


3-61399
Step[B.M.]
2002-11-29 01:34
2002.12.19
Как организовать автосумму в Table, типа Excel, но вертикально?


3-61388
Mic_2000
2002-11-29 14:14
2002.12.19
Как в DbGrid можно узнать на какой колонке находится курсор?


1-61618
biss
2002-12-06 13:29
2002.12.19
Форма в Делфи


1-61686
Che
2002-12-08 01:35
2002.12.19
Форматирование текста!!!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский