Страница 1 из 1

Дайти идею - "Свернутый" browse

Добавлено: 03 Февраль 2008, 2:17
Андрей
Может смешно сформулировал в теме :-) - постараюсь расшифровать
Итак есть основная таблица начислений, в простом виде:
ИдКлиента; ИдТипаРасчета; СуммаНач1; СуммаНач2; СуммаНач3..... СуммаНач7

задолбало во всей проге в сотне мест вносить исправления при добавлении очередного ВидаНачисления (просто при постановке задачи говорили- виды начислений постоянны :-( )
В общем решил сделать ПРАВИЛЬНО, т.е.
ИдКлиента; ИдТипаРасчета; ИдВидНач; СуммаНач
Ну с расчетом и отчетами разберусь, но вот как представить результаты расчета в визуальной форме ? Раньше то было просто
ВидНач1 ВидНач2 ................ ВидНач7
ТипРасчета1 х х ............... х
ТипРасчета2 х х ............... х
ТипРасчетаN х х ............... х

и удобно - если какая то строка не устраивала - жмем "Изменить" - редактируем все(отдельные) начисления, сохраняем с флагом руч. изменения

теперь если сделать
ТипРасчета1 ВидНач 1 х
ТипРасчета1 ВидНач 2 х
ТипРасчета1 ВидНач N х
ТипРасчета2 ВидНач 1 х
ТипРасчета2 ВидНач 2 х
ТипРасчета2 ВидНач N х
..............................................
НЕНАГЛЯДНО.....

как бы совместить правильность хранения данных и удобство отображения и редактирования "неправильного" варианта,т.е. как бы "свернуть" Browse ???? Возможно ??? Какие есть варианты ?

с уважением, Андрей

Re: Дайти идею - "Свернутый" browse

Добавлено: 03 Февраль 2008, 3:35
Admin
Андрей писал(а):как бы совместить правильность хранения данных и удобство отображения и редактирования "неправильного" варианта,т.е. как бы "свернуть" Browse ???? Возможно ??? Какие есть варианты ?
Совсем недавно применяли такой вариант, строка формируется как XXX = "Название|100|200|300"
Вот смотри пример:

Код: Выделить всё

            PROGRAM
            MAP
            END

GQueue      QUEUE
GoodsLine     STRING(2048)
            END

Window      WINDOW('DinaList'),AT(,,298,115),FONT('MS Sans Serif',8,,FONT:regular),GRAY,RESIZE
              LIST,AT(0,0),USE(?List1),FULL,FORMAT('0L(0)|M~ID~C(0)@N09@140L(2)|M~GoodsName~C(0)@s50@50L(2)|M~ID1~C(0)@n12@50L(2)|M~ID2~C(0)@n12@50L(2)|M~ID3~C(0)@n12@50L(2)|' &|
              'M~ID4~C(0)@n12@'),FROM(GQueue)
            END
  CODE
  OPEN(Window)
  LOOP W# = 1 TO 1000
    GQueue.GoodsLine = FORMAT(W#,@N_09)&'|Товар '&W#&'|'&RANDOM(1,1000)&'|'&RANDOM(1,1000)&'|'&RANDOM(1,1000)&'|'&RANDOM(1,1000)&'|'&RANDOM(1,1000)
    ADD(GQueue)
  END
  ACCEPT
  END
  CLOSE(Window)
Только один момент. Я не смог поместить в листе два поля. К примеру в одном ID записи LONG, а во втором строку с разбивкой |
Короче, есть куда копать! Если нужно в таком списке еще и ID хранить - держи его в первом столбце и делай первому столбцу ширину равную нулю.

P.S. Формат листа можешь динамически менять в зависимости от количества столбцов

Re: Дайти идею - "Свернутый" browse

Добавлено: 03 Февраль 2008, 18:20
Igor
Залил на FTP в каталог Samle\SetBrowse\SetBrw.arj
Писал лет восемь назад ( Не судите строго). Так подтянул , вроде работает работает.

Re: Дайти идею - "Свернутый" browse

Добавлено: 04 Февраль 2008, 4:14
Admin
Такой мелкий пример можно было не лить на FTP а воспользоваться вложением в сообщение
Не у всех есть доступ в Приват
Но за пример спасибо! :D

Re: Дайти идею - "Свернутый" browse

Добавлено: 13 Февраль 2008, 23:50
Андрей
Спасибо откликнувшимся !

Буду пробовать. Думаю, может быть остановиться на промеж. варианте с использованием массива ?
Основания:
1. Эксперименты показывают, что размер файла с массивом в 2 раза меньше.
2. Точно не понадобится более 10(ну пусть с запасом 20) видов начислений.
3. Выборка по отдельному виду начисления практически никогда не требуется