Моя значительная часть других использует Crystal Reports в ходе своих обязанностей и пришла ко мне за помощью.Она написала функцию отображения, как показано ниже, и удивлена, что получает значение сбоя, когда у клиента несколько карт (см. Диаграмму).
В этой модели, когда клиент посещает врача, карта клиента должна быть указана в записи о посещении клиента для целей правительственной отчетности.Хотя идентификатор карты не является концептуально необязательным, вполне возможно, что карта не находится в файле во время регистрации сведений о посещении, поэтому их система позволяет оставить ее временно незаполненной.Это состояние представлено условием «нет карты» в приведенной ниже функции сопоставления.
Неудовлетворенный моим ответом о том, что ни одно из ее условий не выполнено, она попросила меня отправить ее обращение за помощью.
Ниже приведен код Crystal Basic из ее функции отображения.Она знает, что в последнем условии есть необработанный случай, и в этом случае будет отображаться пробел, который не является наблюдаемым поведением.Имена на диаграмме не совпадают с именами в коде функции отображения, потому что диаграмма - это мой синтез большого количества размахиваний руками и объяснений, тогда как код вставляется непосредственно из отчета и содержит фактические имена полей.
if ({awt_temp.Service_code} = "DOM") and ({Card_Type.Card_Type_ID} = 21) then
{Card_Holder.Card_No}
else if ({awt_temp.Service_code} = "MANT") and ({Card_Type.Card_Type_ID} = 25) then
{Card_Holder.Card_No}
else if ({awt_temp.Service_code} = "PC") and ({Card_Type.Card_Type_ID} = 22) then
{Card_Holder.Card_No}
else if ({awt_temp.Service_code} = "RES") and ({Card_Type.Card_Type_ID} = 24) then
{Card_Holder.Card_No}
else if ({awt_temp.Service_code} = "SOC") and ({Card_Type.Card_Type_ID} = 23) then
{Card_Holder.Card_No}
else if not ({Card_Type.Description} startswith "vhc") then
"no card"
Нет смысла упоминать, что функцию отображения лучше всего обрабатывать с помощью соединения с таблицей поиска.Она не может изменить схему.