поле, не относящееся к базе данных, в форме открытого запроса

StackOverflow https://stackoverflow.com/questions/157357

  •  03-07-2019
  •  | 
  •  

Вопрос

Есть ли способ использовать поля формы, которые не соответствуют полю базы данных, для временной обработки?

То есть.Я хочу добавить:

  • временные поля элемент1, элемент2
  • поле базы данных сумма
  • кнопка с крючком для записи, которая устанавливает сумма = элемент1 + элемент2
Это было полезно?

Решение

Насколько я знаю, это просто невозможно с помощью ClearQuest.Я пытался сделать что-то подобное, и наш консультант IBM сказал мне, что единственный способ - это создать поле базы данных для всех переменных.

Другие советы

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

Добавление временных данных к самой базовой записи (сущности) также кажется маловероятным.Возможно, можно злоупотреблять perl API и динамически присоединять данные к объектам entity, но я лично не стал бы это пробовать, тогда вы можете потерять свои данные по прихоти CQ ;-)

Однако это не означает, что невозможно иметь временные данные.Мне кажется, лучшим способом является использование объекта session, который явно предназначен для этой цели.

Из файла справки:

IBM Rational ClearQuest поддерживает использование переменных для всей сессии для хранения информации.После создания общесессионных переменных вы можете получить к ним доступ через текущий объект Session с помощью функций или подпрограмм, включая перехваты, которые имеют доступ к объекту Session.Когда текущий сеанс завершается, все переменные , связанные с этим объектом сеанса , удаляются.Сеанс завершается, когда пользователь выходит из системы или последняя ссылка на объект сеанса перестает существовать.

Есть некоторая полезная документация по этому вопросу в file:///C:/Program%20Files/Rational/ClearQuest/doc/help/cq_api/c_session_vars.htm (Разумеется, предполагается установка по умолчанию на компьютере с Windows.)

Переводя приведенный там пример кода в то, что вам кажется нужным, сначала вы сохраняете данные, которые вы рассчитали внутри объекта сеанса:

$session->SetNameValue("item1", $value1);
$session->SetNameValue("item2", $value2);

Затем в вашем вычислительном хоке вы извлекаете сохраненные значения и устанавливаете значение этого поля итогов следующим образом:

my $item1 = GetNameValue("item1");
my $item2 = GetNameValue("item2");
my $sum = $item1 + $item2;

$entity->SetFieldValue("some_totals_record", $sum);

Регулируйте, конечно, по вкусу ;-)

Разработчики схем ClearQuest часто включают "временные" поля в свои типы записей.Они делают это, чтобы выполнять операции с перехватами для генерации другого значения.

Например, для полей Notes существует "временное" поле Notes_entry, в которое пользователь вводит самую последнюю заметку, и когда запись сохраняется, значение добавляется в поле Notes_Log.При следующем редактировании записи поле Notes_entry очищается, чтобы пользователь мог ввести новое Notes_entry.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top