Вы можете легко динамически создавать объект данных с помощью функции Create() DataWindow или DataStore, передавая ему синтаксически правильный источник DataWindow (например, то, что вы видите, когда редактируете источник в DataWindow в IDE). Существует даже функция SyntaxFromSQL() объекта Transaction, которая поможет вам построить синтаксис из оператора SELECT, хотя вы можете построить эту синтаксическую строку так, как пожелаете.
Проблема, которую я вижу в вашем вопросе, заключается в том, что вы начинаете не с оператора SELECT, а с объекта курсора, переданного обратно из базы данных. Я не верю, что где-либо в PB есть поддержка такого курсора. (Вы можете создать курсор в своем PowerScript, но, насколько я понимаю, что вы говорите, это другое.) Итак, поскольку не существует синтаксиса DataWindow, совместимого с курсором, сгенерированным СУБД, я верю ответу на ваш вопрос в его нынешнем виде заключается в том, что это невозможно сделать.
Один из вариантов, если у вас есть контроль над хранимой процедурой, состоит в том, чтобы изменить ее, чтобы вернуть строку инструкции SELECT. Таким образом, вы не только сможете динамически создать синтаксис DataWindow (SyntaxFromSQL()) и сгенерировать DataWindow (Create()), но и повысить производительность, поскольку DataWindow в большинстве случаев ( например, когда событие RetrieveRow закодировано) будет извлекать весь набор данных в как можно меньшем количестве сетевых блоков с помощью «одной» сетевой транзакции, в отличие от курсора, который извлекает только одну строку за раз.
Удачи,
Терри.
person
Terry
schedule
19.04.2013