Как избежать обращения к несуществующему датасету?
Ситуация:
я получаю данные из файла 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 и последующая корректная обработка данных??
я получаю данные из файла 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 и последующая корректная обработка данных??
Комментарии