Как я могу отображать массивы записей и управлять ими?

Ищете следующие функциональные возможности форм с INFORMIX 4GL ?, ISQL с ESQL / C ?, PROGRESS-4GL ?, ORACLE? и т.д?

У меня есть форма CRUD, которая отображает клиента [master] со всеми связанными с ними транзакциями в массивах записей [detail] на том же экране:

[id   ]
[fullname                     ]
[address1                     ]
[address2                     ]
[city                |st|zip  ]  
 ================================================================
[trxnum][itemdesc                            ]
[trxnum][itemdesc                            ]
[trxnum][itemdesc                            ]
[trxnum][itemdesc                            ]
[trxnum][itemdesc                            ]
[trxnum][itemdesc                            ]


attributes
id = customer.pk_id = transaction.fk_id;
trxnum = transaction.trx_num = actions.trx_num;
[...];

instructions
customer master of transaction
transaction master of action
[...];

Желаемый функционал:

Когда я запрашиваю и нахожу правильного клиента [master], я хочу, чтобы все транзакции [детали], принадлежащие этому клиенту, отображались автоматически. Если имеется более 6 строк с подробностями, мне нужна возможность прокручивать все строки с подробностями [в области прокрутки], пока я не найду подходящую транзакцию. Затем я хочу обновить эту транзакцию, нажав клавишу ввода или «U» для обновления, и в режиме обновления появится следующий экран действий:

[id   ]
[fullname                     ]
[address1                     ]
[address2                     ]
[city                |st|zip  ]  
 ================================================================
[trxnum][itemdesc                                  ]

 TRANS-DATE TRX-TIME ACTION PRINCIPAL  AMOUNT  BALANCE CLERK
[tdate     ][ttime ]  [a]  [princ    ][amt   ][bal    ][cl]
[tdate     ][ttime ]  [a]  [princ    ][amt   ][bal    ][cl]
[tdate     ][ttime ]  [a]  [princ    ][amt   ][bal    ][cl]
[tdate     ][ttime ]  [a]  [princ    ][amt   ][bal    ][cl]
[tdate     ][ttime ]  [a]  [princ    ][amt   ][bal    ][cl]
[tdate     ][ttime ]  [a]  [princ    ][amt   ][bal    ][cl]

опять же, это область прокрутки предыдущих действий [строк], связанных с конкретной транзакцией. Я хочу, чтобы курсор автоматически позиционировался на следующем доступном открытом месте, позволяя tdate и ttime = default current, а курсор останавливался на теге действия 'a', чтобы клерк мог ввести желаемое действие. Мне также нужна возможность выполнять вычисления между предыдущими действиями [строками]. Я ловко имитирую это в исполнении ISQL, но без возможности просмотра массивов записей. (см. видео-демонстрацию [2 мин.] на сайте: www.frankcomputer.com

Я готов переписать эту желаемую функциональность с помощью другого инструмента разработки, не относящегося к INFORMIX, если он имеет эти возможности и не сложен или требует много времени для реализации, но логичным вариантом было бы переписать с помощью I4GL, однако я слышал его громоздкий работать с массивами записей. Есть предложения лучше?


person Frank R.    schedule 06.07.2010    source источник
comment
На какое сообщество пользователей вы нацеливаетесь? Это обычные бизнес-пользователи?   -  person Conrad Frix    schedule 07.07.2010
comment
@Conrad: Любой разработчик, который разработал формы, отображающие массивы записей или управляющие ими!   -  person Frank R.    schedule 07.07.2010


Ответы (1)


Informix 4GL мог это сделать; Informix SQL, даже с помощью ESQL / C, не может этого сделать разумно. Я не знаю про Progress или Oracle, но вполне вероятно, что они могут сделать что-то подобное.

В I4GL вы бы вытащили информацию об основной записи, а затем, используя обычные операторы DISPLAY (не DISPLAY ARRAY), вы бы отобразили подробную информацию в строках экрана в разделе подробностей. Когда пользователь хотел выбрать строку для обновления, вы должны были перейти либо к оператору DISPLAY ARRAY, либо (возможно) к оператору INPUT ARRAY.

person Jonathan Leffler    schedule 06.07.2010
comment
Как мне выполнить расчеты между столбцами в разных массивах записей с индексами курсора? - person Frank R.; 07.07.2010
comment
@Frank: это зависит от того, что вам нужно. Если все данные находятся в массиве экрана (или, точнее, в массиве программ, который отображается на экране), то вы просто используете индексы массива как обычно. Если у вас есть два параллельных массива, один с данными для отображения, а другой - с данными, которые не отображаются, у вас есть более сложная задача. Вы должны отслеживать операции вставки и удаления во INPUT ARRAY и следить за тем, где находятся записи в обоих массивах (убедитесь, что второй массив имеет копию информации PK - для перекрестной проверки и работоспособности), а затем вы используете обычный индексы, как и раньше. - person Jonathan Leffler; 07.07.2010