Microsoft KB Archive/927151: Difference between revisions

From BetaArchive Wiki
m (Text replacement - "<" to "<")
m (Text replacement - ">" to ">")
Line 68: Line 68:
# Double-click the text box that you added in step 5.
# Double-click the text box that you added in step 5.
# In the '''Text Box Properties''' dialog box, type <span class="kbd userinput"> QUERYTEXT</span> in the '''Name''' text box.
# In the '''Text Box Properties''' dialog box, type <span class="kbd userinput"> QUERYTEXT</span> in the '''Name''' text box.
# In the '''Initial value''' box, type <span class="kbd userinput"> <%=Request(&quot;QUERYTEXT&quot;)%&gt;</span>, and then click '''OK'''.
# In the '''Initial value''' box, type <span class="kbd userinput"> <%=Request(&quot;QUERYTEXT&quot;)%></span>, and then click '''OK'''.
# In the Toolbox, expand '''Form Controls''', and then double-click '''Drop-Down Box'''.
# In the Toolbox, expand '''Form Controls''', and then double-click '''Drop-Down Box'''.
# Double-click the drop-down box.
# Double-click the drop-down box.
Line 83: Line 83:
# Right-click '''Input (Submit)''', and then click '''Form Properties'''.
# Right-click '''Input (Submit)''', and then click '''Form Properties'''.
# Click '''Send to other''', and then click '''Options'''.
# Click '''Send to other''', and then click '''Options'''.
# In the '''Action''' text box, type <span class="kbd userinput"> <%=Request.ServerVariables(&quot;URL&quot;)%&gt;</span>, and then click '''OK''' two times.
# In the '''Action''' text box, type <span class="kbd userinput"> <%=Request.ServerVariables(&quot;URL&quot;)%></span>, and then click '''OK''' two times.
# On the '''File''' menu, click '''Save'''.
# On the '''File''' menu, click '''Save'''.
# In the '''File name''' text box, type <span class="kbd userinput"> IndexServerTest.asp</span>, and then click '''Save'''.
# In the '''File name''' text box, type <span class="kbd userinput"> IndexServerTest.asp</span>, and then click '''Save'''.
Line 89: Line 89:
=== Step 3: Add the sample ASP code to the page ===
=== Step 3: Add the sample ASP code to the page ===


'''Note''' You may receive an error message if you copy the script examples directly from this article and then paste them into SharePoint Designer 2007. SharePoint Designer 2007 may misinterpret the angle brackets (< and &gt;). To work around this behavior, copy the script and then paste it into a blank Notepad document. Then, copy the script from Notepad, and then paste it into SharePoint Designer 2007.<br />
'''Note''' You may receive an error message if you copy the script examples directly from this article and then paste them into SharePoint Designer 2007. SharePoint Designer 2007 may misinterpret the angle brackets (< and >). To work around this behavior, copy the script and then paste it into a blank Notepad document. Then, copy the script from Notepad, and then paste it into SharePoint Designer 2007.<br />
<br />
<br />
To add the sample ASP code to the page, follow these steps:
To add the sample ASP code to the page, follow these steps:
Line 128: Line 128:
   ' Set a default value if the user has not specified a field.
   ' Set a default value if the user has not specified a field.
   If Len(strQueryField) = 0 Then strQueryField = &quot;DocTitle&quot;
   If Len(strQueryField) = 0 Then strQueryField = &quot;DocTitle&quot;
%&gt;</pre></li>
%></pre></li>
<li><p>Type or paste the following code after the closing tag.</p>
<li><p>Type or paste the following code after the closing tag.</p>
<pre class="codesample"><%
<pre class="codesample"><%
' Check if the user has entered a value in the form
' Check if the user has entered a value in the form
If strQueryText <&gt; &quot;%%&quot; Then
If strQueryText <> &quot;%%&quot; Then


   ' Build the SQL statement from the user-specified options.
   ' Build the SQL statement from the user-specified options.
Line 155: Line 155:


     ' Start a table.
     ' Start a table.
     Response.Write &quot;<table border=&quot;&quot;1&quot;&quot;&gt;&quot; &amp; vbCrLf
     Response.Write &quot;<table border=&quot;&quot;1&quot;&quot;>&quot; &amp; vbCrLf


     ' Start the row for the header section.
     ' Start the row for the header section.
     Response.Write &quot;<tr&gt;&quot; &amp; vbCrLf
     Response.Write &quot;<tr>&quot; &amp; vbCrLf
     ' Loop through the fields collection.
     ' Loop through the fields collection.
     For Each objField in objRS.Fields
     For Each objField in objRS.Fields
Line 164: Line 164:
       strName  = objField.Name
       strName  = objField.Name
       ' If the field has a name, escape it for HTML.
       ' If the field has a name, escape it for HTML.
       If Len(strName)  &gt; 0 Then strName = Server.HTMLEncode(strName)
       If Len(strName)  > 0 Then strName = Server.HTMLEncode(strName)
       ' Output the field name as a table header.
       ' Output the field name as a table header.
       Response.Write &quot;<th&gt;&quot; &amp; strName &amp; &quot;</th&gt;&quot; &amp; vbCrLf
       Response.Write &quot;<th>&quot; &amp; strName &amp; &quot;</th>&quot; &amp; vbCrLf
     Next
     Next
     ' End the row for the header section.
     ' End the row for the header section.
     Response.Write &quot;</tr&gt;&quot; &amp; vbCrLf   
     Response.Write &quot;</tr>&quot; &amp; vbCrLf   


     ' Loop through all the records.
     ' Loop through all the records.
     While Not objRS.EOF
     While Not objRS.EOF
       ' Start a row in the data section.
       ' Start a row in the data section.
       Response.Write &quot;<tr&gt;&quot; &amp; vbCrLf
       Response.Write &quot;<tr>&quot; &amp; vbCrLf
       ' Loop through the fields collection.
       ' Loop through the fields collection.
       For Each objField in objRS.Fields
       For Each objField in objRS.Fields
Line 180: Line 180:
         strValue = objField.Value
         strValue = objField.Value
         ' Look for null values.
         ' Look for null values.
         If Len(strValue) &gt; 0 Then
         If Len(strValue) > 0 Then
           ' If the value is not null, escape it for HTML.
           ' If the value is not null, escape it for HTML.
           strValue = Server.HTMLEncode(strValue)
           strValue = Server.HTMLEncode(strValue)
Line 188: Line 188:
         End If
         End If
       ' Output the field value as table data.
       ' Output the field value as table data.
         Response.Write &quot;<td&gt;&quot; &amp; strValue &amp; &quot;</td&gt;&quot; &amp; vbCrLf
         Response.Write &quot;<td>&quot; &amp; strValue &amp; &quot;</td>&quot; &amp; vbCrLf
       Next
       Next
       ' End a row in the data section.
       ' End a row in the data section.
       Response.Write &quot;</tr&gt;&quot; &amp; vbCrLf
       Response.Write &quot;</tr>&quot; &amp; vbCrLf
       ' Move on to the next record.
       ' Move on to the next record.
       objRS.MoveNext
       objRS.MoveNext
     Wend
     Wend
     Response.Write &quot;</table&gt;&quot; &amp; vbCrLf
     Response.Write &quot;</table>&quot; &amp; vbCrLf
   End If
   End If


Line 201: Line 201:
' User has not entered any value in search form
' User has not entered any value in search form
     Response.Write &quot;Please enter a Search Term before submitting the form&quot; &amp; vbCrLf
     Response.Write &quot;Please enter a Search Term before submitting the form&quot; &amp; vbCrLf
End if%&gt;</pre></li>
End if%></pre></li>
<li>On the '''File''' menu, click '''Save'''.</li></ol>
<li>On the '''File''' menu, click '''Save'''.</li></ol>



Revision as of 10:26, 21 July 2020

Article ID: 927151

Article Last Modified on 10/15/2007



APPLIES TO

  • Microsoft Office SharePoint Designer 2007



INTRODUCTION

This step-by-step article describes how to create a custom Index Server search page by using Active Server Pages (ASP) in Microsoft Office SharePoint Designer 2007.

MORE INFORMATION

To create a custom Index Server search page by using ASP in SharePoint Designer 2007, follow these steps.

Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure. However, they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements.

Step 1: Prepare to use the ASP features in SharePoint Designer 2007

Before you can use the ASP features in SharePoint Designer 2007, you must install the components that are listed in the following Microsoft Knowledge Base article:

318287 What you need to use Active Server Pages (ASP) in FrontPage 2002


Step 2: Add a form page in SharePoint Designer 2007

To do this, follow these steps:

  1. Start SharePoint Designer 2007, and then open the Web site.
  2. Click the New Document button on the toolbar.
  3. At the bottom of the document, click Design to switch to the Design view.
  4. In the Toolbox, expand Form Controls, and then double-click Form.
  5. In the Toolbox, expand Form Controls, and then double-click Input (Text).
  6. Double-click the text box that you added in step 5.
  7. In the Text Box Properties dialog box, type QUERYTEXT in the Name text box.
  8. In the Initial value box, type <%=Request("QUERYTEXT")%>, and then click OK.
  9. In the Toolbox, expand Form Controls, and then double-click Drop-Down Box.
  10. Double-click the drop-down box.
  11. In the Drop Down Box Properties dialog box, type QUERYFIELD in the Name text box.
  12. Click Add, and then type DocAppName in the Choice text box.
  13. Click to clear the Specify Value check box, and then click OK.
  14. Repeat steps 12 and 13 to add the following menu items:
    • Characterization
    • FileName
    • DocAuthor
    • DocTitle
  15. Click OK to close the Drop Down Box Properties dialog box.
  16. In the Toolbox, expand Form Controls, and then double-click Input (Submit).
  17. Right-click Input (Submit), and then click Form Properties.
  18. Click Send to other, and then click Options.
  19. In the Action text box, type <%=Request.ServerVariables("URL")%>, and then click OK two times.
  20. On the File menu, click Save.
  21. In the File name text box, type IndexServerTest.asp, and then click Save.

Step 3: Add the sample ASP code to the page

Note You may receive an error message if you copy the script examples directly from this article and then paste them into SharePoint Designer 2007. SharePoint Designer 2007 may misinterpret the angle brackets (< and >). To work around this behavior, copy the script and then paste it into a blank Notepad document. Then, copy the script from Notepad, and then paste it into SharePoint Designer 2007.

To add the sample ASP code to the page, follow these steps:

  1. At the bottom of the document, click Code to switch to HTML view.
  2. Type or paste the following code before the opening HTML tag.

    <%
      ' Force variable declaration.
      Option Explicit
    
      ' Declare all our variables.
      Dim strQueryText
      Dim strQueryField
      Dim strSQL
      Dim strName
      Dim strValue
      Dim objRS
      Dim objField
    
      ' This is the list of Index Server variables that will appear.
      ' You can customize the list of fields. For more information,
      ' see Microsoft Knowledge Base article 318387.
      Const strDisplayFields = "Rank, DocAuthor, DocAppName, DocTitle, FileName, Create, Access, Characterization, VPath"
    
      ' This is the default Index Server catalog for all Web content.
      ' For information about how to customize this, see Microsoft 
      ' Knowledge Base article 318387.
    
      Const strDataSource = "WEB"
    
      ' Get the value of the user-submitted search query.
      strQueryText = Request("QUERYTEXT")
      ' Set a default value if the user has not submitted anything.
      If Len(strQueryText) = 0 Then strQueryText = "%%"
    
      ' Get the field that the user wants to query against.
      strQueryField = Request("QUERYFIELD")
      ' Set a default value if the user has not specified a field.
      If Len(strQueryField) = 0 Then strQueryField = "DocTitle"
    %>
  3. Type or paste the following code after the closing tag.

    <%
    ' Check if the user has entered a value in the form
    If strQueryText <> "%%" Then
    
      ' Build the SQL statement from the user-specified options.
      strSQL = "SELECT " & strDisplayFields & " FROM SCOPE() " & _
        "WHERE ((" & strQueryField & " LIKE '%" & strQueryText & "%') AND " & _
        "((VPath NOT LIKE '%/_vti%') AND (VPath NOT LIKE '%/_private%')))"
    
      ' Create a recordset object.
      Set objRS = Server.CreateObject("ADODB.Recordset")
    
      ' Open the recordset by using the SQL string with the Index Server provider.
      objRS.Open strSQL,"PROVIDER=MSIDXS;DATA SOURCE=" & strDataSource
    
      ' Are there any records to show?
      If objRS.EOF Then
    
        ' Show a default message if nothing is found.
        Response.Write "No Documents were Found." & vbCrLf  
    
      ' Otherwise...
      Else
    
        ' Start a table.
        Response.Write "<table border=""1"">" & vbCrLf
    
        ' Start the row for the header section.
        Response.Write "<tr>" & vbCrLf
        ' Loop through the fields collection.
        For Each objField in objRS.Fields
          ' Get the field's name.
          strName  = objField.Name
          ' If the field has a name, escape it for HTML.
          If Len(strName)  > 0 Then strName = Server.HTMLEncode(strName)
          ' Output the field name as a table header.
          Response.Write "<th>" & strName & "</th>" & vbCrLf
        Next
        ' End the row for the header section.
        Response.Write "</tr>" & vbCrLf   
    
        ' Loop through all the records.
        While Not objRS.EOF
          ' Start a row in the data section.
          Response.Write "<tr>" & vbCrLf
          ' Loop through the fields collection.
          For Each objField in objRS.Fields
            ' Get the field's value.
            strValue = objField.Value
            ' Look for null values.
            If Len(strValue) > 0 Then
              ' If the value is not null, escape it for HTML.
              strValue = Server.HTMLEncode(strValue)
            Else
              ' Otherwise, make it a non-breaking space character.
              strValue = "&#xa0;"
            End If
          ' Output the field value as table data.
            Response.Write "<td>" & strValue & "</td>" & vbCrLf
          Next
          ' End a row in the data section.
          Response.Write "</tr>" & vbCrLf
          ' Move on to the next record.
          objRS.MoveNext
         Wend
         Response.Write "</table>" & vbCrLf
      End If
    
    Else
    ' User has not entered any value in search form
        Response.Write "Please enter a Search Term before submitting the form" & vbCrLf
    End if%>
  4. On the File menu, click Save.

Step 4: Test the sample ASP page

  1. Start SharePoint Designer 2007, and then open the IndexServerTest.asp page.
  2. On the File menu, point to Preview in Browser, and then click the browser that you want to use.
  3. In the text box, type your search criteria.
  4. In the list, click the field that you want to query.
  5. Click Submit.
  6. Any results that match your query appear in a table on the page.

Step 5: Customize the sample ASP page

The two customization options are as follows:

  • Change the catalog
  • Modify the Field list

Change the catalog

If multiple Index Server catalogs are defined on the Web server, you can specify that the sample page use a different catalog. To do this, follow these steps:

  1. Start SharePoint Designer 2007, and then open the sample Web page that you created earlier.
  2. Click Code to switch to HTML view.
  3. Locate the following line of code.

    Const strDataSource = "WEB" 
  4. Change the value of strDataSource to the name of your catalog so that the code resembles the following code:

    Const strDataSource = My_Custom_Catalog
  5. On the File menu, click Save, and then close the file.

Modify the "Field" list

  1. Start SharePoint Designer 2007, and then open the sample Web page that you created earlier.
  2. Click Code to switch to HTML view.
  3. Locate the line of code that resembles the following code.

    Const strDisplayFields = "Rank, DocAuthor, DocAppName"
  4. Change the list of values. Separate each field name with a comma so that the line resembles the following line:

    Const strDisplayFields = "Rank, DocAuthor, DocAppName, DocTitle"
  5. On the File menu, click Save, and then close the file.

The following table lists the values that you can use for the strDisplayFields variable.

Field Name Field Type Description
Access Date/Time This value indicates the last time that the file was accessed.
Characterization Text/String This value indicates the characterization, or the abstract, of the document. This value is computed by the Index Server.
Create Date/Time This value indicates the time that the file was created.
Directory Text/String This value indicates the physical path of the file. This path excludes the file name.
DocAppName Text/String This value indicates the name of the application that created the file.
DocAuthor Text/String This value indicates the author of the document.
DocByteCount Numeric This value indicates the number of bytes in the document.
DocCategory Text/String This value indicates the type of document, such as a memo, a schedule, or a white paper.
DocChar Count Numeric This value indicates the number of characters in the document.
DocComments Text/String This value indicates comments about the document.
DocCompany Text/String This value indicates the name of the company for which the document was written.
DocCreatedTm Date/Time This value indicates the time that the document was created.
DocEditTime Date/Time This value indicates the total time that was spent editing the document.
DocHiddenCount Numeric This value indicates the number of hidden slides in a Microsoft PowerPoint presentation.
DocKeywords Text/String This value indicates the document keywords.
DocLastAuthor Text/String This value indicates the user who edited the document most recently.
DocLastPrinted Date/Time This value indicates the time that the document was last printed.
DocLastSavedTm Date/Time This value indicates the time that the document was last saved.
DocLineCount Numeric This value indicates the number of lines in a document.
DocManager Text/String This value indicates the name of the manager of the document's author.
DocNoteCount Numeric This value indicates the number of pages that have notes in a PowerPoint presentation.
DocPageCount Numeric This value indicates the number of pages in the document.
DocParaCount Numeric This value indicates the number of paragraphs in the document.
DocPartTitles Text/String This value indicates the names of document parts. For example, in Microsoft Excel, a spreadsheet is a document part. In PowerPoint, a slide is a document part. In Word, the file names of the documents that are contained in a master document are document parts.
DocPresentationTarget Text/String This value indicates the target format for a PowerPoint presentation. These formats include 35 mm, printer, or video.
DocRevNumber Text/String This value indicates the current version number of a document.
DocSlideCount Numeric This value indicates the number of slides in a PowerPoint presentation.
DocSubject Text/String This value indicates the subject of the document.
DocTemplate Text/String This value indicates the name of the template for the document.
DocTitle Text/String This value indicates the title of document.
DocWordCount Numeric This value indicates the number of words in the document.
FileIndex Numeric This value indicates the unique ID of the file.
FileName Text/String This value indicates the name of the file.
HitCount Numeric This value indicates the number of hits (words that match a query) in the file.
Path Text/String This value indicates the full physical path of the file. This path includes the file name.
Rank Numeric This value indicates the rank of a row. The rank ranges from 0 to 1000. Larger numbers indicate better matches.
ShortFileName Text/String This value indicates the short (8.3) file name.
Size Numeric This value indicates the size of the file, in bytes.
VPath Text/String This value indicates the full virtual path of the file. This path includes the file name. If there is more than one possible path, the best match for the specific query is chosen.
Write Date/Time This value indicates the last time that the file was written.

Troubleshooting

  • If the Index Service is not running, you receive the following error message:

    Microsoft OLE DB Provider for Indexing Service error '80041820'
    Service is not running.
    /IndexServerTest.asp, line 44

    To resolve this issue, start the Index Service.
  • If you specify a catalog that is not valid, you receive an error message that resembles the following error message:

    Microsoft OLE DB Provider for Indexing Service error '8004181d'
    There is no catalog.
    /IndexServerTest.asp, line 44

    To resolve this issue, check the value of the strDataSource variable. If the value is correct, restart the Index Service.


REFERENCES

For more information about how to work with the Microsoft Windows 2000 Indexing Service, click the following article number to view the article in the Microsoft Knowledge Base:

185985 Using Index Server to query and display META TAG information


256276 Error message: "There is no catalog"


229282 ASP code is visible when you view source of an Index Server results page



Additional query words: SPD2007 SharePointDesign2007

Keywords: kbhowto kbinfo kbcode kbquery kbasp KB927151