Как избежать обращения к несуществующему датасету?

отредактировано September 2009 Раздел: FastReport 4.0
Ситуация:
я получаю данные из файла xml.
при этом в приложении динамически создаются ClientDataSet'ы и frxDBDataset'ы в необходимом количестве.
имена задаются так:
ClientDataSet.Name:= 'cds'+XMLDocument1.DocumentElement.ChildNodes[ii].NodeName;
frxDBDataset.Name:= 'frxDBDS'+XMLDocument1.DocumentElement.ChildNodes[ii].NodeName;
frxDBDataset.UserName:= 'frxDBDS'+XMLDocument1.DocumentElement.ChildNodes[ii].NodeName;


допустим, при получении информации о кассовом чеке создалось 4 датасета:
шапка чека, строки чека, инфа о скидках, инфа об оплате.
ОК, создали печатную форму на основе этих данных, обращаясь к наборам данных по имени:
[frxDBDSHead."CheckNum"]
[frxDBDSDishes."Dish"]
[frxDBDSDiscounts."Name"]
[frxDBDSPayments."Sum"]
и т.д.

Проблема:
всё отлично работает, пока просматриваем чеки со скидками. но если скидки не было, то в xml-файле отсутствует соот-щая ветка, т.е. cdsDiscounts
и frxDBDSDiscounts не создадутся. а при открытии печатной формы будет попытка обращения к этим компонентам.

Вопрос:
возможна ли в дизайнере проверка на существование датасета с именем frxDBDSDiscounts и последующая корректная обработка данных??

Комментарии

  • отредактировано 16:10
    мда, была надежда, что придёт gpi и что-нибудь посоветует.... не прокатило(((
  • gpigpi
    отредактировано 16:10
    if Report.GetDataset('frxDBDSDiscounts') <> nil then ...
    
  • отредактировано 16:10
    пасиба :) , правда этот проект уже пришлось запустить "на подпорках". но будем исправлять))

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.