UFN_QUERY_DATAFORMINSTANCE_FORMFIELDS

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@DATAFORMINSTANCEID uniqueidentifier IN

Definition

Copy


CREATE function dbo.UFN_QUERY_DATAFORMINSTANCE_FORMFIELDS
(
    @DATAFORMINSTANCEID uniqueidentifier
)
returns @FIELDTABLE TABLE
(
    ID uniqueidentifier not null,
    FIELDID varchar(100),
    CAPTION varchar(100),
    DATATYPE varchar(50),
    READONLY bit,
    HIDDEN bit,
    REQUIRED bit,
    CUSTOMIZED bit,

    MAXLENGTH integer,
    DESCRIPTION nvarchar(max),
    MAXVALUE integer,
    MINVALUE integer,
    PRECISION integer,
    SCALE integer,
    TIMEPRECISION integer,
    DATETIMEWITHOFFSETPRECISION integer,
    INCLUDETIMEONDATE bit,
    ALLOWMONTHDAYONFUZZYDATE bit,
    DEFAULTVALUETEXT nvarchar(max),
    FIXEDVALUETEXT nvarchar(max),
    CAPTIONRESOURCEKEY nvarchar(max),
    CATEGORY nvarchar(max),
    CATEGORYRESOURCEKEY nvarchar(max),
    DONOTAPPLYFORMAT bit,
    MULTILINE bit,
    APPLYPHONEFORMATTING bit,
    ALLOWZOOM bit,
    AVAILABLETOCLIENT bit,
    DESCRIPTORTYPE nvarchar(20),
    INSTALLEDPRODUCTSLIST nvarchar(max),
    INSTALLED bit
)
with execute as caller
as begin

    declare @FORMUIXML xml;
    select @FORMUIXML = FORMUIXML
        from dbo.DATAFORMINSTANCECATALOG 
        where ID = @DATAFORMINSTANCEID;

    with xmlnamespaces ('bb_appfx_commontypes' as common)
    insert @FIELDTABLE
    select 
        @DATAFORMINSTANCEID as ID,
        dataform.fields.value('@FieldID', 'nvarchar(100)') as FIELDID,
        coalesce(DFFCC.CAPTION, dataform.fields.value('@Caption', 'nvarchar(100)')) as CAPTION,
        coalesce(dataform.fields.value('@DataType', 'nvarchar(50)'), 'String') as DATATYPE,
        coalesce(dataform.fields.value('@ReadOnly', 'bit'), 0) as READONLY,
        coalesce(DFFC.ISHIDDEN, dataform.fields.value('@Hidden', 'bit'), 0) as HIDDEN,
        coalesce(DFFC.ISREQUIRED, dataform.fields.value('@Required', 'bit'), 0) as REQUIRED,
        case when DFFC.ID is null then 0 else 1 end as CUSTOMIZED,

        coalesce(dataform.fields.value('@MaxLength', 'integer'), 0) as MAXLENGTH,
        dataform.fields.value('@Description', 'nvarchar(max)') as DESCRIPTION,
        coalesce(dataform.fields.value('@MaxValue', 'integer'), 0) as MAXVALUE,
        coalesce(dataform.fields.value('@MinValue', 'integer'), -1) as MINVALUE,
        coalesce(dataform.fields.value('@Precision', 'integer'), -1) as PRECISION,
        coalesce(dataform.fields.value('@Scale', 'integer'), -1) as SCALE,
        coalesce(dataform.fields.value('@TimePrecision', 'integer'), 0) as TIMEPRECISION,
        coalesce(dataform.fields.value('@DateTimeWithOffsetPrecision', 'integer'), 3) as DATETIMEWITHOFFSETPRECISION,
        coalesce(dataform.fields.value('@IncludeTimeOnDate', 'bit'), 0) as INCLUDETIMEONDATE,
        coalesce(dataform.fields.value('@AllowMonthDayOnFuzzyDate', 'bit'), 0) as ALLOWMONTHDAYONFUZZYDATE,
        dataform.fields.value('@DefaultValueText', 'nvarchar(max)') as DEFAULTVALUETEXT,
        dataform.fields.value('@FixedValueText', 'nvarchar(max)') as FIXEDVALUETEXT,
        dataform.fields.value('@CaptionResourceKey', 'nvarchar(max)') as CAPTIONRESOURCEKEY,
        dataform.fields.value('@Category', 'nvarchar(max)') as CATEGORY,
        dataform.fields.value('@CategoryResourceKey', 'nvarchar(max)') as CATEGORYRESOURCEKEY,
        coalesce(dataform.fields.value('@DoNotApplyFormat', 'bit'), 0) as DONOTAPPLYFORMAT,
        coalesce(dataform.fields.value('@Multiline', 'bit'), 0) as MULTILINE,
        coalesce(dataform.fields.value('@ApplyPhoneFormatting', 'bit'), 0) as APPLYPHONEFORMATTING,
        coalesce(dataform.fields.value('@AllowZoom', 'bit'), 0) as ALLOWZOOM,
        coalesce(dataform.fields.value('@AvailableToClient', 'bit'), 1) as AVAILABLETOCLIENT,
        case
            when dataform.fields.exist('common:CodeTable') = 1 then 'CodeTable'
            when dataform.fields.exist('common:ValueList') = 1  then 'ValueList'
            when dataform.fields.exist('common:SimpleDataList') = 1  then 'SimpleDataList'
            when dataform.fields.exist('common:Collection') = 1  then 'Collection'
            when dataform.fields.exist('common:SearchList') = 1  then 'SearchList'
            when dataform.fields.exist('common:Link') = 1  then 'Link'
            when dataform.fields.exist('common:File') = 1  then 'File'
            when dataform.fields.exist('common:CreditCard') = 1  then 'CreditCard'
            when dataform.fields.exist('common:Html') = 1  then 'Html'
            else 'None'
        end as DESCRIPTORTYPE,
        dbo.UFN_INSTALLEDPRODUCTS_TRANSLATELIST(dataform.fields.query('common:InstalledProductList')) as INSTALLEDPRODUCTSLIST,
        dbo.UFN_INSTALLEDPRODUCTS_OPTIONALPRODUCTSINSTALLED(dataform.fields.query('common:InstalledProductList')) as INSTALLED

    from @FORMUIXML.nodes('common:FormMetaData/common:FormFields/common:FormField') as dataform(fields)    
        left join dbo.DATAFORMFIELDCHARACTERISTIC as DFFC on @DATAFORMINSTANCEID = DFFC.DATAFORMINSTANCEID
            and dataform.fields.value('@FieldID', 'nvarchar(100)') = DFFC.FIELDID
        left join dbo.DATAFORMFIELDCHARACTERISTICCAPTION as DFFCC on DFFCC.DATAFORMFIELDCHARACTERISTICID = DFFC.ID

    return;

end