home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 April / Chip_2000-04_cd.bin / zkuste / Tango / data1.cab / Tango_Tutorials / TangoTutorial / artistsearch.taf next >
Extensible Markup Language  |  1999-09-21  |  38KB  |  543 lines

  1. <?xml version="1.0" encoding="ISO-8859-1" ?>
  2. <!DOCTYPE TAF SYSTEM "tango.dtd" >
  3. <TAF Version="0x02000001">
  4.     <Comments />
  5.  
  6.     <!--Main program-->
  7.     <Program>
  8.         <ActionRef Ref="Search_Builder">
  9.             <ActionRef Ref="IfForm">
  10.                 <ActionRef Ref="Form" />
  11.             </ActionRef>
  12.             <ActionRef Ref="ElseIfList">
  13.                 <ActionRef Ref="RecordList" />
  14.             </ActionRef>
  15.             <ActionRef Ref="ElseIfDetail">
  16.                 <ActionRef Ref="RecordDetail" />
  17.             </ActionRef>
  18.             <ActionRef Ref="ElseError">
  19.                 <ActionRef Ref="InvalidFunction" />
  20.             </ActionRef>
  21.             <ActionRef Ref="Return" />
  22.         </ActionRef>
  23.     </Program>
  24.  
  25.     <!--Program actions-->
  26.     <Actions>
  27.         <SearchBuilderAction UseDevelopmentDataSource="TRUE" DSID="Music" DeploymentDSID="" ID="Search_Builder" Sig="sgrp" Expanded="True">
  28.             <Comments>This file was created entirely with the Search builder.  No changes have been made outside the builder.</Comments>
  29.             <SearchPageInfo>
  30.                 <SearchPageColumns>
  31.                     <SearchPageColumn DataType="text" Length="15" PrimaryKey="False" Operator="swth">
  32.                         <ColumnName>category</ColumnName>
  33.                         <TableName>products</TableName>
  34.                         <TableOwner />
  35.                         <FieldTitle>Category</FieldTitle>
  36.                         <InputOptions>
  37.                             <InputDropDownList>
  38.                                 <InputListItem Selected="True">
  39.                                     <Name>All</Name>
  40.                                     <Value />
  41.                                 </InputListItem>
  42.                                 <InputListItem Selected="False">
  43.                                     <Name>Blues</Name>
  44.                                     <Value>Blues</Value>
  45.                                 </InputListItem>
  46.                                 <InputListItem Selected="False">
  47.                                     <Name>Country</Name>
  48.                                     <Value>Country</Value>
  49.                                 </InputListItem>
  50.                                 <InputListItem Selected="False">
  51.                                     <Name>Polka</Name>
  52.                                     <Value>Polka</Value>
  53.                                 </InputListItem>
  54.                                 <InputListItem Selected="False">
  55.                                     <Name>Pop</Name>
  56.                                     <Value>Pop</Value>
  57.                                 </InputListItem>
  58.                                 <InputListItem Selected="False">
  59.                                     <Name>Rock</Name>
  60.                                     <Value>Rock</Value>
  61.                                 </InputListItem>
  62.                             </InputDropDownList>
  63.                         </InputOptions>
  64.                     </SearchPageColumn>
  65.                     <SearchPageColumn DataType="text" Length="35" PrimaryKey="False" Operator="swth">
  66.                         <ColumnName>artist</ColumnName>
  67.                         <TableName>products</TableName>
  68.                         <TableOwner />
  69.                         <FieldTitle>Artist</FieldTitle>
  70.                         <InputOptions>
  71.                             <InputText Required="False" Width="35" Height="1" MaxLength="35" Scrolling="False" Password="False">
  72.                                 <DefaultValue />
  73.                             </InputText>
  74.                         </InputOptions>
  75.                     </SearchPageColumn>
  76.                     <SearchPageColumn DataType="text" Length="40" PrimaryKey="False" Operator="swth">
  77.                         <ColumnName>title</ColumnName>
  78.                         <TableName>products</TableName>
  79.                         <TableOwner />
  80.                         <FieldTitle>Title</FieldTitle>
  81.                         <InputOptions>
  82.                             <InputText Required="False" Width="40" Height="1" MaxLength="40" Scrolling="False" Password="False">
  83.                                 <DefaultValue />
  84.                             </InputText>
  85.                         </InputOptions>
  86.                     </SearchPageColumn>
  87.                     <SearchPageColumn DataType="deci" Length="21" PrimaryKey="False" Operator="usop">
  88.                         <ColumnName>price</ColumnName>
  89.                         <TableName>products</TableName>
  90.                         <TableOwner />
  91.                         <FieldTitle>Price</FieldTitle>
  92.                         <InputOptions>
  93.                             <InputText Required="False" Width="10" Height="1" MaxLength="30" Scrolling="False" Password="False">
  94.                                 <DefaultValue />
  95.                             </InputText>
  96.                         </InputOptions>
  97.                     </SearchPageColumn>
  98.                 </SearchPageColumns>
  99.                 <PageFormat Border="0" BorderColor="default" BackgroundColor="default" CellPadding="default" CellSpacing="default" />
  100.                 <HeaderOutput Ref="Search_Builder.SearchHeader" />
  101.                 <FooterOutput Ref="Search_Builder.SearchFooter" />
  102.                 <FindButtonTitle>Find</FindButtonTitle>
  103.                 <ResetButtonTitle>Reset Values</ResetButtonTitle>
  104.             </SearchPageInfo>
  105.             <ListPageInfo MaxRows="10" MultiPage="True">
  106.                 <ListPageColumns>
  107.                     <ListPageColumn DataType="text" Length="35" PrimaryKey="False">
  108.                         <ColumnName>artist</ColumnName>
  109.                         <TableName>products</TableName>
  110.                         <TableOwner />
  111.                         <FieldTitle>Artist</FieldTitle>
  112.                         <DisplayOptions>
  113.                             <DisplayNormal LineBreaks="False" Format="None" />
  114.                         </DisplayOptions>
  115.                     </ListPageColumn>
  116.                     <ListPageColumn DataType="text" Length="40" PrimaryKey="False">
  117.                         <ColumnName>title</ColumnName>
  118.                         <TableName>products</TableName>
  119.                         <TableOwner />
  120.                         <FieldTitle>Title</FieldTitle>
  121.                         <DisplayOptions>
  122.                             <DisplayDetailLink Format="None" />
  123.                         </DisplayOptions>
  124.                     </ListPageColumn>
  125.                     <ListPageColumn DataType="deci" Length="21" PrimaryKey="False">
  126.                         <ColumnName>price</ColumnName>
  127.                         <TableName>products</TableName>
  128.                         <TableOwner />
  129.                         <FieldTitle>Price</FieldTitle>
  130.                         <DisplayOptions>
  131.                             <DisplayNormal LineBreaks="False" Format="CurrencyWithCommas" Decimals="2" />
  132.                         </DisplayOptions>
  133.                     </ListPageColumn>
  134.                     <ListPageColumn DataType="text" Length="15" PrimaryKey="False">
  135.                         <ColumnName>category</ColumnName>
  136.                         <TableName>products</TableName>
  137.                         <TableOwner />
  138.                         <FieldTitle>Category</FieldTitle>
  139.                         <DisplayOptions>
  140.                             <DisplayNormal LineBreaks="False" Format="None" />
  141.                         </DisplayOptions>
  142.                     </ListPageColumn>
  143.                 </ListPageColumns>
  144.                 <OrderColumns>
  145.                     <OrderColumn Ascending="True">
  146.                         <TableOwner />
  147.                         <TableName>products</TableName>
  148.                         <ColumnName>artist</ColumnName>
  149.                     </OrderColumn>
  150.                     <OrderColumn Ascending="True">
  151.                         <TableOwner />
  152.                         <TableName>products</TableName>
  153.                         <ColumnName>title</ColumnName>
  154.                     </OrderColumn>
  155.                 </OrderColumns>
  156.                 <PageFormat Border="1" BorderColor="default" BackgroundColor="default" CellPadding="default" CellSpacing="default" />
  157.                 <HeaderOutput Ref="Search_Builder.ListHeader" />
  158.                 <FooterOutput Ref="Search_Builder.ListFooter" />
  159.                 <NoResultsOutput Ref="Search_Builder.ListNoResults" />
  160.             </ListPageInfo>
  161.             <DetailsPageInfo>
  162.                 <DetailsPageColumns>
  163.                     <DetailsPageColumn DataType="long" Length="4" PrimaryKey="True">
  164.                         <ColumnName>product_key</ColumnName>
  165.                         <TableName>products</TableName>
  166.                         <TableOwner />
  167.                         <FieldTitle>Product key</FieldTitle>
  168.                         <DisplayOptions>
  169.                             <DisplayNormal LineBreaks="False" Format="None" />
  170.                         </DisplayOptions>
  171.                     </DetailsPageColumn>
  172.                     <DetailsPageColumn DataType="text" Length="35" PrimaryKey="False">
  173.                         <ColumnName>artist</ColumnName>
  174.                         <TableName>products</TableName>
  175.                         <TableOwner />
  176.                         <FieldTitle>Artist</FieldTitle>
  177.                         <DisplayOptions>
  178.                             <DisplayNormal LineBreaks="False" Format="None" />
  179.                         </DisplayOptions>
  180.                     </DetailsPageColumn>
  181.                     <DetailsPageColumn DataType="text" Length="40" PrimaryKey="False">
  182.                         <ColumnName>title</ColumnName>
  183.                         <TableName>products</TableName>
  184.                         <TableOwner />
  185.                         <FieldTitle>Title</FieldTitle>
  186.                         <DisplayOptions>
  187.                             <DisplayNormal LineBreaks="False" Format="None" />
  188.                         </DisplayOptions>
  189.                     </DetailsPageColumn>
  190.                     <DetailsPageColumn DataType="deci" Length="21" PrimaryKey="False">
  191.                         <ColumnName>price</ColumnName>
  192.                         <TableName>products</TableName>
  193.                         <TableOwner />
  194.                         <FieldTitle>Price</FieldTitle>
  195.                         <DisplayOptions>
  196.                             <DisplayNormal LineBreaks="False" Format="None" />
  197.                         </DisplayOptions>
  198.                     </DetailsPageColumn>
  199.                     <DetailsPageColumn DataType="bool" Length="1" PrimaryKey="False">
  200.                         <ColumnName>onsale</ColumnName>
  201.                         <TableName>products</TableName>
  202.                         <TableOwner />
  203.                         <FieldTitle>Onsale</FieldTitle>
  204.                         <DisplayOptions>
  205.                             <DisplayNormal LineBreaks="False" Format="None" />
  206.                         </DisplayOptions>
  207.                     </DetailsPageColumn>
  208.                     <DetailsPageColumn DataType="deci" Length="21" PrimaryKey="False">
  209.                         <ColumnName>sale_price</ColumnName>
  210.                         <TableName>products</TableName>
  211.                         <TableOwner />
  212.                         <FieldTitle>Sale price</FieldTitle>
  213.                         <DisplayOptions>
  214.                             <DisplayNormal LineBreaks="False" Format="None" />
  215.                         </DisplayOptions>
  216.                     </DetailsPageColumn>
  217.                     <DetailsPageColumn DataType="text" Length="10" PrimaryKey="False">
  218.                         <ColumnName>type</ColumnName>
  219.                         <TableName>products</TableName>
  220.                         <TableOwner />
  221.                         <FieldTitle>Type</FieldTitle>
  222.                         <DisplayOptions>
  223.                             <DisplayNormal LineBreaks="False" Format="None" />
  224.                         </DisplayOptions>
  225.                     </DetailsPageColumn>
  226.                     <DetailsPageColumn DataType="text" Length="15" PrimaryKey="False">
  227.                         <ColumnName>category</ColumnName>
  228.                         <TableName>products</TableName>
  229.                         <TableOwner />
  230.                         <FieldTitle>Category</FieldTitle>
  231.                         <DisplayOptions>
  232.                             <DisplayNormal LineBreaks="False" Format="None" />
  233.                         </DisplayOptions>
  234.                     </DetailsPageColumn>
  235.                     <DetailsPageColumn DataType="text" Length="30" PrimaryKey="False">
  236.                         <ColumnName>supplier</ColumnName>
  237.                         <TableName>products</TableName>
  238.                         <TableOwner />
  239.                         <FieldTitle>Supplier</FieldTitle>
  240.                         <DisplayOptions>
  241.                             <DisplayNormal LineBreaks="False" Format="None" />
  242.                         </DisplayOptions>
  243.                     </DetailsPageColumn>
  244.                 </DetailsPageColumns>
  245.                 <PageFormat Border="1" BorderColor="default" BackgroundColor="default" CellPadding="default" CellSpacing="default" />
  246.                 <HeaderOutput Ref="Search_Builder.DetailsHeader" />
  247.                 <FooterOutput Ref="Search_Builder.DetailsFooter" />
  248.                 <DeleteResponse Ref="Search_Builder.DetailsDelete" />
  249.                 <UpdateResponse Ref="Search_Builder.DetailsUpdate" />
  250.                 <SaveButtonTitle>Save</SaveButtonTitle>
  251.                 <ResetButtonTitle>Reset Values</ResetButtonTitle>
  252.                 <DeleteButtonTitle>Delete</DeleteButtonTitle>
  253.             </DetailsPageInfo>
  254.         </SearchBuilderAction>
  255.         <IfAction ID="IfForm" Sig="if  ">
  256.             <Expression>(<![CDATA['<@ARG _function>'='sform') or (!LEN('<@ARG _function>'))]]></Expression>
  257.             <ExpressionInfo>
  258.                 <ExpLeft><![CDATA[<@ARG _function>]]></ExpLeft>
  259.                 <ExpRight>sform</ExpRight>
  260.                 <Operator>iseq</Operator>
  261.             </ExpressionInfo>
  262.             <ExpressionInfo>
  263.                 <ExpLeft><![CDATA[<@ARG _function>]]></ExpLeft>
  264.                 <ExpRight />
  265.                 <Conjunction>or  </Conjunction>
  266.                 <Operator>iemp</Operator>
  267.             </ExpressionInfo>
  268.         </IfAction>
  269.         <ResultAction ID="Form" Sig="null">
  270.             <ResultsOutput Ref="Form.Results" />
  271.         </ResultAction>
  272.         <ElseIfAction ID="ElseIfList" Sig="elif">
  273.             <Expression>(<![CDATA['<@ARG _function>'='list')]]></Expression>
  274.             <ExpressionInfo>
  275.                 <ExpLeft><![CDATA[<@ARG _function>]]></ExpLeft>
  276.                 <ExpRight>list</ExpRight>
  277.                 <Operator>iseq</Operator>
  278.             </ExpressionInfo>
  279.         </ElseIfAction>
  280.         <SearchAction TotalRows="True" UseDevelopmentDataSource="TRUE" DSID="Music" DeploymentDSID="" ID="RecordList" Sig="srch">
  281.             <Tables>
  282.                 <TableName>products</TableName>
  283.             </Tables>
  284.             <DataDictionary>
  285.                 <Column DataType="text" ColumnType="0">
  286.                     <TableName>products</TableName>
  287.                     <ColumnName>category</ColumnName>
  288.                 </Column>
  289.                 <Column DataType="text" ColumnType="0">
  290.                     <TableName>products</TableName>
  291.                     <ColumnName>artist</ColumnName>
  292.                 </Column>
  293.                 <Column DataType="text" ColumnType="0">
  294.                     <TableName>products</TableName>
  295.                     <ColumnName>title</ColumnName>
  296.                 </Column>
  297.                 <Column DataType="deci" ColumnType="0">
  298.                     <TableName>products</TableName>
  299.                     <ColumnName>price</ColumnName>
  300.                 </Column>
  301.                 <Column DataType="long" ColumnType="0">
  302.                     <TableName>products</TableName>
  303.                     <ColumnName>product_key</ColumnName>
  304.                 </Column>
  305.                 <Column DataType="bool" ColumnType="0">
  306.                     <TableName>products</TableName>
  307.                     <ColumnName>onsale</ColumnName>
  308.                 </Column>
  309.                 <Column DataType="deci" ColumnType="0">
  310.                     <TableName>products</TableName>
  311.                     <ColumnName>sale_price</ColumnName>
  312.                 </Column>
  313.                 <Column DataType="text" ColumnType="0">
  314.                     <TableName>products</TableName>
  315.                     <ColumnName>type</ColumnName>
  316.                 </Column>
  317.                 <Column DataType="text" ColumnType="0">
  318.                     <TableName>products</TableName>
  319.                     <ColumnName>supplier</ColumnName>
  320.                 </Column>
  321.             </DataDictionary>
  322.             <SearchColumns>
  323.                 <ColumnReference>
  324.                     <TableName>products</TableName>
  325.                     <ColumnName>product_key</ColumnName>
  326.                 </ColumnReference>
  327.                 <ColumnReference>
  328.                     <TableName>products</TableName>
  329.                     <ColumnName>artist</ColumnName>
  330.                 </ColumnReference>
  331.                 <ColumnReference>
  332.                     <TableName>products</TableName>
  333.                     <ColumnName>title</ColumnName>
  334.                 </ColumnReference>
  335.                 <ColumnReference>
  336.                     <TableName>products</TableName>
  337.                     <ColumnName>price</ColumnName>
  338.                 </ColumnReference>
  339.                 <ColumnReference>
  340.                     <TableName>products</TableName>
  341.                     <ColumnName>category</ColumnName>
  342.                 </ColumnReference>
  343.             </SearchColumns>
  344.             <OrderColumns>
  345.                 <OrderColumn>
  346.                     <Ascending>True</Ascending>
  347.                     <TableOwner />
  348.                     <TableName>products</TableName>
  349.                     <ColumnName>artist</ColumnName>
  350.                 </OrderColumn>
  351.                 <OrderColumn>
  352.                     <Ascending>True</Ascending>
  353.                     <TableOwner />
  354.                     <TableName>products</TableName>
  355.                     <ColumnName>title</ColumnName>
  356.                 </OrderColumn>
  357.             </OrderColumns>
  358.             <Criteria>
  359.                 <CriteriaItem>
  360.                     <Conjunction>none</Conjunction>
  361.                     <TableName>products</TableName>
  362.                     <ColumnName>category</ColumnName>
  363.                     <Operator>swth</Operator>
  364.                     <Value><![CDATA[<@ARG category>]]></Value>
  365.                     <QuoteValue>true</QuoteValue>
  366.                     <IncludeIfEmpty>false</IncludeIfEmpty>
  367.                 </CriteriaItem>
  368.                 <CriteriaItem>
  369.                     <Conjunction>and </Conjunction>
  370.                     <TableName>products</TableName>
  371.                     <ColumnName>artist</ColumnName>
  372.                     <Operator>swth</Operator>
  373.                     <Value><![CDATA[<@ARG artist>]]></Value>
  374.                     <QuoteValue>true</QuoteValue>
  375.                     <IncludeIfEmpty>false</IncludeIfEmpty>
  376.                 </CriteriaItem>
  377.                 <CriteriaItem>
  378.                     <Conjunction>and </Conjunction>
  379.                     <TableName>products</TableName>
  380.                     <ColumnName>title</ColumnName>
  381.                     <Operator>swth</Operator>
  382.                     <Value><![CDATA[<@ARG title>]]></Value>
  383.                     <QuoteValue>true</QuoteValue>
  384.                     <IncludeIfEmpty>false</IncludeIfEmpty>
  385.                 </CriteriaItem>
  386.                 <CriteriaItem>
  387.                     <Conjunction>and </Conjunction>
  388.                     <TableName>products</TableName>
  389.                     <ColumnName>price</ColumnName>
  390.                     <Operator><![CDATA[<@ARG price_op>]]></Operator>
  391.                     <Value><![CDATA[<@ARG price>]]></Value>
  392.                     <QuoteValue>false</QuoteValue>
  393.                     <IncludeIfEmpty>false</IncludeIfEmpty>
  394.                 </CriteriaItem>
  395.             </Criteria>
  396.             <StartRow><![CDATA[<@ARG _start>]]></StartRow>
  397.             <MaxRows>10</MaxRows>
  398.             <ResultsOutput Ref="RecordList.Results" />
  399.             <NoResultsOutput Ref="RecordList.NoResults" />
  400.         </SearchAction>
  401.         <ElseIfAction ID="ElseIfDetail" Sig="elif">
  402.             <Expression>(<![CDATA['<@ARG _function>'='detail')]]></Expression>
  403.             <ExpressionInfo>
  404.                 <ExpLeft><![CDATA[<@ARG _function>]]></ExpLeft>
  405.                 <ExpRight>detail</ExpRight>
  406.                 <Operator>iseq</Operator>
  407.             </ExpressionInfo>
  408.         </ElseIfAction>
  409.         <SearchAction UseDevelopmentDataSource="TRUE" DSID="Music" DeploymentDSID="" ID="RecordDetail" Sig="srch">
  410.             <Tables>
  411.                 <TableName>products</TableName>
  412.             </Tables>
  413.             <DataDictionary>
  414.                 <Column DataType="text" ColumnType="0">
  415.                     <TableName>products</TableName>
  416.                     <ColumnName>category</ColumnName>
  417.                 </Column>
  418.                 <Column DataType="text" ColumnType="0">
  419.                     <TableName>products</TableName>
  420.                     <ColumnName>artist</ColumnName>
  421.                 </Column>
  422.                 <Column DataType="text" ColumnType="0">
  423.                     <TableName>products</TableName>
  424.                     <ColumnName>title</ColumnName>
  425.                 </Column>
  426.                 <Column DataType="deci" ColumnType="0">
  427.                     <TableName>products</TableName>
  428.                     <ColumnName>price</ColumnName>
  429.                 </Column>
  430.                 <Column DataType="long" ColumnType="0">
  431.                     <TableName>products</TableName>
  432.                     <ColumnName>product_key</ColumnName>
  433.                 </Column>
  434.                 <Column DataType="bool" ColumnType="0">
  435.                     <TableName>products</TableName>
  436.                     <ColumnName>onsale</ColumnName>
  437.                 </Column>
  438.                 <Column DataType="deci" ColumnType="0">
  439.                     <TableName>products</TableName>
  440.                     <ColumnName>sale_price</ColumnName>
  441.                 </Column>
  442.                 <Column DataType="text" ColumnType="0">
  443.                     <TableName>products</TableName>
  444.                     <ColumnName>type</ColumnName>
  445.                 </Column>
  446.                 <Column DataType="text" ColumnType="0">
  447.                     <TableName>products</TableName>
  448.                     <ColumnName>supplier</ColumnName>
  449.                 </Column>
  450.             </DataDictionary>
  451.             <SearchColumns>
  452.                 <ColumnReference>
  453.                     <TableName>products</TableName>
  454.                     <ColumnName>product_key</ColumnName>
  455.                 </ColumnReference>
  456.                 <ColumnReference>
  457.                     <TableName>products</TableName>
  458.                     <ColumnName>artist</ColumnName>
  459.                 </ColumnReference>
  460.                 <ColumnReference>
  461.                     <TableName>products</TableName>
  462.                     <ColumnName>title</ColumnName>
  463.                 </ColumnReference>
  464.                 <ColumnReference>
  465.                     <TableName>products</TableName>
  466.                     <ColumnName>price</ColumnName>
  467.                 </ColumnReference>
  468.                 <ColumnReference>
  469.                     <TableName>products</TableName>
  470.                     <ColumnName>onsale</ColumnName>
  471.                 </ColumnReference>
  472.                 <ColumnReference>
  473.                     <TableName>products</TableName>
  474.                     <ColumnName>sale_price</ColumnName>
  475.                 </ColumnReference>
  476.                 <ColumnReference>
  477.                     <TableName>products</TableName>
  478.                     <ColumnName>type</ColumnName>
  479.                 </ColumnReference>
  480.                 <ColumnReference>
  481.                     <TableName>products</TableName>
  482.                     <ColumnName>category</ColumnName>
  483.                 </ColumnReference>
  484.                 <ColumnReference>
  485.                     <TableName>products</TableName>
  486.                     <ColumnName>supplier</ColumnName>
  487.                 </ColumnReference>
  488.             </SearchColumns>
  489.             <Criteria>
  490.                 <CriteriaItem>
  491.                     <Conjunction>none</Conjunction>
  492.                     <TableName>products</TableName>
  493.                     <ColumnName>product_key</ColumnName>
  494.                     <Operator>iseq</Operator>
  495.                     <Value><![CDATA[<@ARG products_uid1>]]></Value>
  496.                     <QuoteValue>false</QuoteValue>
  497.                     <IncludeIfEmpty>false</IncludeIfEmpty>
  498.                 </CriteriaItem>
  499.             </Criteria>
  500.             <MaxRows>1</MaxRows>
  501.             <ResultsOutput Ref="RecordDetail.Results" />
  502.         </SearchAction>
  503.         <ElseAction ID="ElseError" Sig="else" />
  504.         <ResultAction ID="InvalidFunction" Sig="null">
  505.             <ResultsOutput Ref="InvalidFunction.Results" />
  506.         </ResultAction>
  507.         <ReturnAction ID="Return" Sig="stop" />
  508.     </Actions>
  509.  
  510.     <!--Data sources-->
  511.     <DataSources>
  512.         <DataSource ID="Music">
  513.             <DSType>Pervasive.SQL</DSType>
  514.             <DSN>Music</DSN>
  515.             <DBMS />
  516.             <Host>Music</Host>
  517.             <Database />
  518.             <UserInfo Encrypted="True">
  519.                 <UserName />
  520.                 <Password />
  521.             </UserInfo>
  522.         </DataSource>
  523.     </DataSources>
  524.  
  525.     <!--Output blocks-->
  526.     <Outputs>
  527.         <Output ID="Search_Builder.SearchHeader" Type="HTML"><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">]]> <![CDATA[<HTML>]]> <![CDATA[<HEAD>]]> <![CDATA[    <TITLE>Pervasive Music Artist Search</TITLE>]]> <![CDATA[</HEAD>]]> <![CDATA[<BODY>]]> <![CDATA[<CENTER>]]> <![CDATA[    <IMG SRC="<@APPFILEPATH>images/_pmusic_logo2.gif" ALT="Pervasive Music Logo">]]> <![CDATA[    <H2 ALIGN=CENTER>Music Artist Search</H2>]]> <![CDATA[</CENTER>]]> <![CDATA[<P>Please enter your search criteria below.</P>]]> </Output>
  528.         <Output ID="Search_Builder.SearchFooter" Type="HTML"><![CDATA[</BODY>]]> <![CDATA[</HTML>]]></Output>
  529.         <Output ID="Search_Builder.ListHeader" Type="HTML"><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">]]> <![CDATA[<HTML>]]> <![CDATA[<HEAD>]]> <![CDATA[    <TITLE>Matching Records</TITLE>]]> <![CDATA[</HEAD>]]> <![CDATA[<BODY>]]> <![CDATA[<CENTER>]]> <![CDATA[    <IMG SRC="<@APPFILEPATH>images/_pmusic_logo2.gif" ALT="Pervasive Music Logo">]]> <![CDATA[    <H2 ALIGN=CENTER>Music Artist Search</H2>]]> <![CDATA[</CENTER>]]> <![CDATA[<P>]]> <![CDATA[<@IF "<@TOTALROWS> = -1">]]> <![CDATA[    There are <B><@NUMROWS></B> matching records.]]> <![CDATA[<@ELSEIF "<@TOTALROWS> != 1">]]> <![CDATA[    There are <B><@TOTALROWS></B> matching records.]]> <![CDATA[    <@IF "<@MAXROWS> > 1">]]> <![CDATA[        <P>Displaying matches ]]> <![CDATA[        <B><@STARTROW></B>]]> <![CDATA[        through    ]]> <![CDATA[        <B><@CALC "<@STARTROW> + <@NUMROWS> - 1">.</B>]]> <![CDATA[    </@IF>]]> <![CDATA[<@ELSE>]]> <![CDATA[    There is <B>1</B> matching record.]]> <![CDATA[</@IF>]]> <![CDATA[</P>]]></Output>
  530.         <Output ID="Search_Builder.ListFooter" Type="HTML"><![CDATA[</BODY>]]> <![CDATA[</HTML>]]></Output>
  531.         <Output ID="Search_Builder.ListNoResults" Type="HTML"><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">]]> <![CDATA[<HTML>]]> <![CDATA[<HEAD>]]> <![CDATA[    <TITLE>No Matching Records</TITLE>]]> <![CDATA[</HEAD>]]> <![CDATA[<BODY>]]> <![CDATA[<CENTER>]]> <![CDATA[    <IMG SRC="<@APPFILEPATH>images/_pmusic_logo2.gif" ALT="Pervasive Music Logo">]]> <![CDATA[    <H2 ALIGN=CENTER>Music Artist Search</H2>]]> <![CDATA[</CENTER>]]> <![CDATA[    <H2>No Matching Records</H2>]]> <![CDATA[    <P>No records match your search criteria.</P>]]> <![CDATA[    <P><A HREF="<@CGI><@APPFILE>?<@UserReferenceArgument>">Search Again</A></P>]]> <![CDATA[</BODY>]]> <![CDATA[</HTML>]]></Output>
  532.         <Output ID="Search_Builder.DetailsHeader" Type="HTML"><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">]]> <![CDATA[<HTML>]]> <![CDATA[<HEAD>]]> <![CDATA[    <TITLE>Record Detail</TITLE>]]> <![CDATA[</HEAD>]]> <![CDATA[<BODY>]]> <![CDATA[<CENTER>]]> <![CDATA[    <IMG SRC="<@APPFILEPATH>images/_pmusic_logo2.gif" ALT="Pervasive Music Logo">]]> <![CDATA[    <H2 ALIGN=CENTER>Music Artist Search</H2>]]> <![CDATA[</CENTER>]]> <![CDATA[<P>Here is the album and/or artist you wished to view.</P>]]> </Output>
  533.         <Output ID="Search_Builder.DetailsFooter" Type="HTML"><![CDATA[<P><A HREF="<@CGI><@APPFILE>?<@UserReferenceArgument>">Search Again</A></P>]]> <![CDATA[</BODY>]]> <![CDATA[</HTML>]]></Output>
  534.         <Output ID="Search_Builder.DetailsDelete" Type="HTML"><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">]]> <![CDATA[<HTML>]]> <![CDATA[<HEAD>]]> <![CDATA[<TITLE>Record Deletion Result</TITLE>]]> <![CDATA[</HEAD>]]> <![CDATA[<BODY>]]> <![CDATA[<@ASSIGN NAME=numAffected VALUE=<@NUMAFFECTED>]]> SCOPE=local<![CDATA[>]]> <![CDATA[<@IF EXPR="(@@numAffected = 1) or (@@numAffected < 0)">]]> <![CDATA[<H2>Record Deleted</H2>]]> <![CDATA[<P>The record was deleted successfully.</P>]]> <![CDATA[<@ELSEIF EXPR="@@numAffected = 0">]]> <![CDATA[<H2>No Records Deleted</H2>]]> <![CDATA[<P>No records were deleted. Perhaps the record has already been deleted.</P>]]> <![CDATA[<@ELSE>]]> <![CDATA[<H2>Multiple Records Deleted</H2>]]> <![CDATA[<P>@@numAffected records were deleted.</P>]]> <![CDATA[</@IF>]]> <![CDATA[<P><A HREF="<@CGI><@APPFILE>?<@UserReferenceArgument>">Search]]> Again<![CDATA[</A</P>]]> <![CDATA[</BODY>]]> <![CDATA[</HTML>]]></Output>
  535.         <Output ID="Search_Builder.DetailsUpdate" Type="HTML"><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">]]> <![CDATA[<HTML>]]> <![CDATA[<HEAD>]]> <![CDATA[<TITLE>Record Update Result</TITLE>]]> <![CDATA[</HEAD>]]> <![CDATA[<BODY>]]> <![CDATA[<@ASSIGN NAME=numAffected VALUE=<@NUMAFFECTED>]]> SCOPE=local<![CDATA[>]]> <![CDATA[<@IF EXPR="(@@numAffected = 1) or (@@numAffected < 0)">]]> <![CDATA[<H2>Record Updated</H2>]]> <![CDATA[<P>The record was updated successfully.</P>]]> <![CDATA[<@ELSEIF EXPR="@@numAffected = 0">]]> <![CDATA[<H2>No Records Updated</H2>]]> <![CDATA[<P>No records were updated. Perhaps the record has been deleted.</P>]]> <![CDATA[<@ELSE>]]> <![CDATA[<H2>Multiple Records Updated</H2>]]> <![CDATA[<P>@@numAffected records were updated.</P>]]> <![CDATA[</@IF>]]> <![CDATA[<P><A HREF="<@CGI><@APPFILE>?<@UserReferenceArgument>">Search]]> Again<![CDATA[</A</P>]]> <![CDATA[</BODY>]]> <![CDATA[</HTML>]]></Output>
  536.         <Output ID="Form.Results" Type="HTML"><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">]]> <![CDATA[<HTML>]]> <![CDATA[<HEAD>]]> <![CDATA[    <TITLE>Pervasive Music Artist Search</TITLE>]]> <![CDATA[</HEAD>]]> <![CDATA[<BODY>]]> <![CDATA[<CENTER>]]> <![CDATA[    <IMG SRC="<@APPFILEPATH>resources/logo.gif" ALT="Pervasive Music Logo">]]> <![CDATA[    <H2 ALIGN=CENTER>Music Artist Search</H2>]]> <![CDATA[</CENTER>]]> <![CDATA[<P>Please enter your search criteria below.</P>]]> <![CDATA[<FORM METHOD="POST" ACTION="<@CGI><@APPFILE>?_function=list&<@UserReferenceArgument>&_start=1">]]> <![CDATA[<TABLE BORDER=0>]]> <![CDATA[<TR VALIGN=TOP ALIGN=LEFT>]]> <![CDATA[    <TD>]]> <![CDATA[        Category: ]]> <![CDATA[    </TD>]]> <![CDATA[    <TD>]]> <![CDATA[        <SELECT NAME="category" SIZE=1>]]> <![CDATA[<OPTION VALUE="" SELECTED>All]]> <![CDATA[<OPTION VALUE="Blues" >Blues]]> <![CDATA[<OPTION VALUE="Country" >Country]]> <![CDATA[<OPTION VALUE="Polka" >Polka]]> <![CDATA[<OPTION VALUE="Pop" >Pop]]> <![CDATA[<OPTION VALUE="Rock" >Rock</SELECT>]]> <![CDATA[    </TD>]]> <![CDATA[</TR>]]> <![CDATA[<TR VALIGN=TOP ALIGN=LEFT>]]> <![CDATA[    <TD>]]> <![CDATA[        Artist: ]]> <![CDATA[    </TD>]]> <![CDATA[    <TD>]]> <![CDATA[        <INPUT NAME="artist" TYPE=TEXT SIZE=35 MAXLENGTH=35 VALUE="">]]> <![CDATA[    </TD>]]> <![CDATA[</TR>]]> <![CDATA[<TR VALIGN=TOP ALIGN=LEFT>]]> <![CDATA[    <TD>]]> <![CDATA[        Title: ]]> <![CDATA[    </TD>]]> <![CDATA[    <TD>]]> <![CDATA[        <INPUT NAME="title" TYPE=TEXT SIZE=40 MAXLENGTH=40 VALUE="">]]> <![CDATA[    </TD>]]> <![CDATA[</TR>]]> <![CDATA[<TR VALIGN=TOP ALIGN=LEFT>]]> <![CDATA[    <TD>]]> <![CDATA[        Price: ]]> <![CDATA[    </TD>]]> <![CDATA[    <TD>]]> <![CDATA[        <SELECT NAME="price_op" SIZE=1><OPTION VALUE = "iseq" SELECTED>=]]> <![CDATA[<OPTION VALUE = "isnt">!=]]> <![CDATA[<OPTION VALUE = "gthn">>]]> <![CDATA[<OPTION VALUE = "lthn"><]]> <![CDATA[<OPTION VALUE = "gteq">>=]]> <![CDATA[<OPTION VALUE = "lteq"><=</SELECT> <INPUT NAME="price" TYPE=TEXT SIZE=10 MAXLENGTH=30 VALUE="">]]> <![CDATA[    </TD>]]> <![CDATA[</TR>]]> <![CDATA[</TABLE>]]> <![CDATA[<INPUT TYPE=SUBMIT VALUE="Find"> <INPUT TYPE=RESET VALUE="Reset Values"> ]]> <![CDATA[</FORM>]]> <![CDATA[</BODY>]]> <![CDATA[</HTML>]]> </Output>
  537.         <Output ID="RecordList.Results" Type="HTML"><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">]]> <![CDATA[<HTML>]]> <![CDATA[<HEAD>]]> <![CDATA[    <TITLE>Matching Records</TITLE>]]> <![CDATA[</HEAD>]]> <![CDATA[<BODY>]]> <![CDATA[<CENTER>]]> <![CDATA[    <IMG SRC="<@APPFILEPATH>resources/logo.gif" ALT="Pervasive Music Logo">]]> <![CDATA[    <H2 ALIGN=CENTER>Music Artist Search</H2>]]> <![CDATA[</CENTER>]]> <![CDATA[<P>]]> <![CDATA[<@IF "<@TOTALROWS> = -1">]]> <![CDATA[    There are <B><@NUMROWS></B> matching records.]]> <![CDATA[<@ELSEIF "<@TOTALROWS> != 1">]]> <![CDATA[    There are <B><@TOTALROWS></B> matching records.]]> <![CDATA[    <@IF "<@MAXROWS> > 1">]]> <![CDATA[        <P>Displaying matches ]]> <![CDATA[        <B><@STARTROW></B>]]> <![CDATA[        through    ]]> <![CDATA[        <B><@CALC "<@STARTROW> + <@NUMROWS> - 1">.</B>]]> <![CDATA[    </@IF>]]> <![CDATA[<@ELSE>]]> <![CDATA[    There is <B>1</B> matching record.]]> <![CDATA[</@IF>]]> <![CDATA[</P>]]> <![CDATA[<TABLE BORDER=1>]]> <![CDATA[<TR VALIGN=TOP ALIGN=LEFT>]]> <![CDATA[    <TD>]]> <![CDATA[        <B>Artist</B>]]> <![CDATA[    </TD>]]> <![CDATA[    <TD>]]> <![CDATA[        <B>Title</B>]]> <![CDATA[    </TD>]]> <![CDATA[    <TD>]]> <![CDATA[        <B>Price</B>]]> <![CDATA[    </TD>]]> <![CDATA[    <TD>]]> <![CDATA[        <B>Category</B>]]> <![CDATA[    </TD>]]> <![CDATA[</TR>]]> <![CDATA[<@ROWS>]]> <![CDATA[<TR VALIGN=TOP>]]> <![CDATA[    <TD>]]> <![CDATA[        <@COLUMN "products.artist">]]> <![CDATA[    </TD>]]> <![CDATA[    <TD>]]> <![CDATA[        <A HREF="<@CGI><@APPFILE>?_function=detail&products_uid1=<@COLUMN "products.product_key" ENCODING=URL>&<@UserReferenceArgument>"><@COLUMN "products.title"></A>]]> <![CDATA[    </TD>]]> <![CDATA[    <TD>]]> <![CDATA[        <@COLUMN "products.price" FORMAT="num:3-*,'@@thousandsChar',2,'@@decimalChar','@@currencyChar',,'@@currencyChar(',)">]]> <![CDATA[    </TD>]]> <![CDATA[    <TD>]]> <![CDATA[        <@COLUMN "products.category">]]> <![CDATA[    </TD>]]> <![CDATA[</TR>]]> <![CDATA[</@ROWS>]]> <![CDATA[</TABLE>]]> <![CDATA[<P>]]> <![CDATA[<@COMMENT>]]> <![CDATA[    ----- BEGIN  NEXT/PREV BUTTONS -----]]> <![CDATA[</@COMMENT>]]> <![CDATA[<@IF "<@MAXROWS> > 0">]]> <![CDATA[    <@COMMENT>]]> <![CDATA[        If a max. number of records was specified, show Next and/or Previous buttons.]]> <![CDATA[    </@COMMENT>]]> <![CDATA[    <@COMMENT>]]> <![CDATA[        ----- BUILD SEARCH VALUES  -----]]> <![CDATA[        The Next and Previous buttons must pass to Tango all the search values entered by the user. This]]> <![CDATA[        section loops through all the args received -- via form fields (postargs) and the URL (searchargs) --]]> <![CDATA[        and creates hidden form fields for them. The resulting HTML is used in the form for each button.]]> <![CDATA[    </@COMMENT>]]> <![CDATA[    <@ASSIGN arg_names <@ARGNAMES> SCOPE=LOCAL>]]> <![CDATA[    <@ASSIGN search_vals_HTML "" SCOPE=LOCAL>]]> <![CDATA[    <@ASSIGN crlf "<@CHAR 13><@CHAR 10>" SCOPE=LOCAL>    <@COMMENT>line ending</@COMMENT>]]> <![CDATA[    <@ROWS ARRAY=arg_names>]]> <![CDATA[        <@ASSIGN arg_name "<@COL 1>" SCOPE=LOCAL>]]> <![CDATA[        <@IF "'<@LEFT @@arg_name 1>' != '_'">]]> <![CDATA[            <@COMMENT> Ignore args beginning with '_'; they'll be passed manually.</@COMMENT>]]> <![CDATA[            <@ASSIGN arg_values "<@ARG @@arg_name TYPE=ARRAY>" SCOPE=LOCAL>]]> <![CDATA[            <@COMMENT>]]> <![CDATA[                Assign the current argument's values to a variable. Use]]> <![CDATA[                TYPE=ARRAY to get all the values for multi-select lists.]]> <![CDATA[            </@COMMENT>]]> <![CDATA[            <@ROWS ARRAY=arg_values>]]> <![CDATA[                <@COMMENT>]]> <![CDATA[                    Loop through all the values for the current arg. Build a hidden form field for each.]]> <![CDATA[                    Append field HTML to existing HTML.]]> <![CDATA[                </@COMMENT>]]> <![CDATA[                <@ASSIGN search_vals_HTML '@@search_vals_HTML<INPUT TYPE="HIDDEN" NAME="<@VAR arg_name>" VALUE="<@COL 1>">@@crlf' SCOPE=LOCAL>]]> <![CDATA[            </@ROWS>]]> <![CDATA[        </@IF>    <@COMMENT>End ignoring args beginning with _ </@COMMENT>]]> <![CDATA[    </@ROWS>]]> <![CDATA[    <@COMMENT>]]> <![CDATA[        ----- END BUILD SEARCH VALUES -----]]> <![CDATA[    </@COMMENT>]]> <![CDATA[    <TABLE BORDER=0>]]> <![CDATA[    <TR>]]> <![CDATA[    <@COMMENT>]]> <![CDATA[        ----- PREVIOUS BUTTON -----]]> <![CDATA[    </@COMMENT>]]> <![CDATA[    <TD>]]> <![CDATA[    <@IF "<@STARTROW> != 1">]]> <![CDATA[        <@COMMENT>]]> <![CDATA[        We are beyond the first match; we need a Previous button]]> <![CDATA[        </@COMMENT>]]> <![CDATA[        <@ASSIGN new_start <@CALC "<@STARTROW> - <@MAXROWS>"> SCOPE=LOCAL>]]> <![CDATA[        <@ASSIGN new_start <@CALC "max(@@new_start 1)"> SCOPE=LOCAL>]]> <![CDATA[        <@COMMENT>]]> <![CDATA[            Subtract the max. number of rows per page from the current start]]> <![CDATA[            to get new start. Use 1 if it's less than 1.]]> <![CDATA[        </@COMMENT>]]> <![CDATA[        <FORM METHOD="POST" ACTION="<@CGI><@APPFILE>?_function=list&_start=@@new_start&<@UserReferenceArgument>">]]> <![CDATA[        <@VAR search_vals_HTML ENCODING=NONE>]]> <![CDATA[        <@COMMENT> Hidden fields containing original search values</@COMMENT>]]> <![CDATA[        <@IF "<@STARTROW> > <@MAXROWS>">]]> <![CDATA[            <@ASSIGN num_on_prev_page <@MAXROWS> SCOPE=LOCAL>]]> <![CDATA[        <@ELSE>]]> <![CDATA[            <@ASSIGN num_on_prev_page <@CALC <@STARTROW>-1> SCOPE=LOCAL>]]> <![CDATA[        </@IF>]]> <![CDATA[        <INPUT TYPE="SUBMIT" VALUE="<@IF "@@num_on_prev_page < <@CALC 'min(<@MAXROWS> <@TOTALROWS>)'>">First <@CALC 'min(<@MAXROWS> <@TOTALROWS>)'><@ELSE>Previous @@num_on_prev_page</@IF> Matches">]]> <![CDATA[        </FORM>]]> <![CDATA[    </@IF>]]> <![CDATA[    </TD>]]> <![CDATA[    <@COMMENT>]]> <![CDATA[        ----- END PREVIOUS BUTTON -----]]> <![CDATA[    </@COMMENT>]]> <![CDATA[    <@COMMENT>]]> <![CDATA[        ----- NEXT BUTTON -----]]> <![CDATA[    </@COMMENT>]]> <![CDATA[    <TD>]]> <![CDATA[    <@ASSIGN rows_left <@CALC "<@TOTALROWS> - (<@STARTROW> + <@MAXROWS> - 1)"> SCOPE=LOCAL>]]> <![CDATA[    <@IF "@@rows_left > 0">]]> <![CDATA[        <@COMMENT>More rows? We need a Next button.</@COMMENT>]]> <![CDATA[        <@ASSIGN new_start <@CALC "<@STARTROW> + <@MAXROWS>"> SCOPE=LOCAL>]]> <![CDATA[        <@COMMENT>Add the max. number of rows per page to the current start to get new start.</@COMMENT>]]> <![CDATA[        <FORM METHOD="POST" ACTION="<@CGI><@APPFILE>?_function=list&_start=@@new_start&<@UserReferenceArgument>">]]> <![CDATA[        <@VAR search_vals_HTML ENCODING=NONE>]]> <![CDATA[        <@COMMENT> Hidden fields containing original search values </@COMMENT>]]> <![CDATA[        <@ASSIGN num_on_next_page <@CALC "min(@@rows_left <@MAXROWS>)"> SCOPE=LOCAL>]]> <![CDATA[        <@COMMENT>]]> <![CDATA[            Number of records on next page is the number]]> <![CDATA[            of rows remaining or the max. per page, whichever is less.]]> <![CDATA[        </@COMMENT>]]> <![CDATA[        <INPUT TYPE="SUBMIT" VALUE="Next @@num_on_next_page Match<@IF "@@num_on_next_page != 1">es</@IF>">]]> <![CDATA[        </FORM>]]> <![CDATA[    </@IF>]]> <![CDATA[    </TD>]]> <![CDATA[    <@COMMENT>]]> <![CDATA[        ----- END NEXT BUTTON -----]]> <![CDATA[    </@COMMENT>]]> <![CDATA[    </TR>]]> <![CDATA[    </TABLE>]]> <![CDATA[</@IF>]]> <![CDATA[<@COMMENT>]]> <![CDATA[    ----- END NEXT/PREV BUTTONS -----]]> <![CDATA[</@COMMENT></BODY>]]> <![CDATA[</HTML>]]> </Output>
  538.         <Output ID="RecordList.NoResults" Type="HTML"><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">]]> <![CDATA[<HTML>]]> <![CDATA[<HEAD>]]> <![CDATA[    <TITLE>No Matching Records</TITLE>]]> <![CDATA[</HEAD>]]> <![CDATA[<BODY>]]> <![CDATA[<CENTER>]]> <![CDATA[    <IMG SRC="<@APPFILEPATH>resources/logo.gif" ALT="Pervasive Music Logo">]]> <![CDATA[    <H2 ALIGN=CENTER>Music Artist Search</H2>]]> <![CDATA[</CENTER>]]> <![CDATA[    <H2>No Matching Records</H2>]]> <![CDATA[    <P>No records match your search criteria.</P>]]> <![CDATA[    <P><A HREF="<@CGI><@APPFILE>?<@UserReferenceArgument>">Search Again</A></P>]]> <![CDATA[</BODY>]]> <![CDATA[</HTML>]]></Output>
  539.         <Output ID="RecordDetail.Results" Type="HTML"><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">]]> <![CDATA[<HTML>]]> <![CDATA[<HEAD>]]> <![CDATA[    <TITLE>Record Detail</TITLE>]]> <![CDATA[</HEAD>]]> <![CDATA[<BODY>]]> <![CDATA[<CENTER>]]> <![CDATA[    <IMG SRC="<@APPFILEPATH>resources/logo.gif" ALT="Pervasive Music Logo">]]> <![CDATA[    <H2 ALIGN=CENTER>Music Artist Search</H2>]]> <![CDATA[</CENTER>]]> <![CDATA[<P>Here is the album and/or artist you wished to view.</P>]]> <![CDATA[<@ROWS>]]> <![CDATA[<TABLE BORDER=1>]]> <![CDATA[<TR VALIGN=TOP ALIGN=LEFT>]]> <![CDATA[    <TD>]]> <![CDATA[        Product key: ]]> <![CDATA[    </TD>]]> <![CDATA[    <TD>]]> <![CDATA[        <@COLUMN "products.product_key">]]> <![CDATA[    </TD>]]> <![CDATA[</TR>]]> <![CDATA[<TR VALIGN=TOP ALIGN=LEFT>]]> <![CDATA[    <TD>]]> <![CDATA[        Artist: ]]> <![CDATA[    </TD>]]> <![CDATA[    <TD>]]> <![CDATA[        <@COLUMN "products.artist">]]> <![CDATA[    </TD>]]> <![CDATA[</TR>]]> <![CDATA[<TR VALIGN=TOP ALIGN=LEFT>]]> <![CDATA[    <TD>]]> <![CDATA[        Title: ]]> <![CDATA[    </TD>]]> <![CDATA[    <TD>]]> <![CDATA[        <@COLUMN "products.title">]]> <![CDATA[    </TD>]]> <![CDATA[</TR>]]> <![CDATA[<TR VALIGN=TOP ALIGN=LEFT>]]> <![CDATA[    <TD>]]> <![CDATA[        Price: ]]> <![CDATA[    </TD>]]> <![CDATA[    <TD>]]> <![CDATA[        <@COLUMN "products.price">]]> <![CDATA[    </TD>]]> <![CDATA[</TR>]]> <![CDATA[<TR VALIGN=TOP ALIGN=LEFT>]]> <![CDATA[    <TD>]]> <![CDATA[        Onsale: ]]> <![CDATA[    </TD>]]> <![CDATA[    <TD>]]> <![CDATA[        <@COLUMN "products.onsale">]]> <![CDATA[    </TD>]]> <![CDATA[</TR>]]> <![CDATA[<TR VALIGN=TOP ALIGN=LEFT>]]> <![CDATA[    <TD>]]> <![CDATA[        Sale price: ]]> <![CDATA[    </TD>]]> <![CDATA[    <TD>]]> <![CDATA[        <@COLUMN "products.sale_price">]]> <![CDATA[    </TD>]]> <![CDATA[</TR>]]> <![CDATA[<TR VALIGN=TOP ALIGN=LEFT>]]> <![CDATA[    <TD>]]> <![CDATA[        Type: ]]> <![CDATA[    </TD>]]> <![CDATA[    <TD>]]> <![CDATA[        <@COLUMN "products.type">]]> <![CDATA[    </TD>]]> <![CDATA[</TR>]]> <![CDATA[<TR VALIGN=TOP ALIGN=LEFT>]]> <![CDATA[    <TD>]]> <![CDATA[        Category: ]]> <![CDATA[    </TD>]]> <![CDATA[    <TD>]]> <![CDATA[        <@COLUMN "products.category">]]> <![CDATA[    </TD>]]> <![CDATA[</TR>]]> <![CDATA[<TR VALIGN=TOP ALIGN=LEFT>]]> <![CDATA[    <TD>]]> <![CDATA[        Supplier: ]]> <![CDATA[    </TD>]]> <![CDATA[    <TD>]]> <![CDATA[        <@COLUMN "products.supplier">]]> <![CDATA[    </TD>]]> <![CDATA[</TR>]]> <![CDATA[</TABLE>]]> <![CDATA[</@ROWS>]]> <![CDATA[<P><A HREF="<@CGI><@APPFILE>?<@UserReferenceArgument>">Search Again</A></P>]]> <![CDATA[</BODY>]]> <![CDATA[</HTML>]]> </Output>
  540.         <Output ID="InvalidFunction.Results" Type="HTML"><![CDATA[<B>Error: Invalid function value specified in CGI call.</B>]]></Output>
  541.     </Outputs>
  542. </TAF>
  543.