Como recuperar dados XML com um arquivo de modelo de um cliente do Visual Basic

Traduções deste artigo Traduções deste artigo
ID do artigo: 271621 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Expandir tudo | Recolher tudo

Sumário

Este exemplo neste artigo demonstra como recuperar um documento XML do SQL Server 2000 usando um arquivo de modelo que contém parâmetros. Mais especificamente, uma consulta é emitida no SQL Server 2000 usando um fluxo de comando do ActiveX Data Objects (ADO) 2.6. Esta consulta busca o XML DataStream .

Este exemplo lê o arquivo de modelo "products.xml" do disco e define o texto de comando para o objeto ADODB.Command para a consulta executar.

Você deve definir as seguintes propriedades da coleção Properties do objeto ADODB.Command :
  • caminho base . Esta propriedade estabelece o local dos arquivos XSL (linguagem de folha de estilo extensível) e o modelo.
  • fluxo de saída . Essa propriedade designa onde o fluxo de dados XML resultante será ser enviada por pipe.
  • dialeto . O dialeto define a sintaxe e as regras gerais que usa o provedor para analisar a seqüência de caracteres ou o fluxo. Definindo o dialeto de linguagem de comando, você especifica como o Microsoft OLE DB Provider para SQL Server interpreta o texto de comando que é recebido do ADO. O dialeto é especificado por um identificador globalmente exclusivo (GUID) e é definido usando a propriedade dialeto do objeto Command .
  • XSL . Essa propriedade transforma o documento XML.
Observação : fluxo de saída pode ser qualquer objeto que oferece suporte a uma interface IStream ou ISequentialStream . Objetos que ofereçam suporte as interfaces de IStream são o objeto ADODB.Stream , o objeto de resposta de serviços de informações da Internet (IIS) 5.0 e um objeto do Microsoft XML (MSXML) DomDocument .

Mais Informações

  1. Crie um novo projeto Standard EXE no Visual Basic. O Form1 é criado por padrão.
  2. No menu Project , clique em componentes e adicione uma referência ao Microsoft Internet Controls e Microsoft ActiveX Data Objects 2.6 .
  3. Adicionar um navegador da Web para o formulário, nomeá-la WebBrowser1 e, em seguida, dimensione-o da mesma forma.
  4. Adicione um quadro para o formulário e coloque dois botões de opção nela. Nome do primeiro botão optXSLYes com a legenda XSL Sim e nomeie o segundo botão optXSLNo com a legenda Não XSL .
  5. Adicione dois botões de comando. Nomeie o primeiro botão cmdTestIt com o título Test e nomeie o segundo botão cmdExitProgram com a legenda Sair .
  6. Cole o código do Visual Basic a seguir na janela de código do formulário:
    Option Explicit
    Const DBGUID_DEFAULT As String = "{C8B521FB-5CF3-11CE-ADE5-00AA0044773D}"
     
    Private Sub cmdExitProgram_Click()
        Unload Me
        End
    End Sub
    
    Private Sub cmdTestIt_Click()
        Dim cn As New ADODB.Connection
        Dim cmd As New ADODB.Command
        Dim cmdStream As New ADODB.Stream
        Dim cmdOutput As New ADODB.Stream
        Dim txtOutputFileName As String
        
        ' open the database connection 
        cn.Open "provider=sqloledb;data source=.;initial catalog=northwind;uid=sa;pwd="
        
        ' open the command stream that will eventually contain the templated query
        cmdStream.Open
        ' set the character set to ascii
        cmdStream.Charset = "ascii"
        ' set the command stream type to text, not binary.
        cmdStream.Type = adTypeText
        ' read the template file from disk into the command stream to execute
        cmdStream.LoadFromFile App.Path & "\products.xml"
        ' set the command connection
        Set cmd.ActiveConnection = cn
        ' set the command's command stream to hook the template query to the command you want to run.
        Set cmd.CommandStream = cmdStream
        ' set the command dialect
        cmd.Dialect = DBGUID_DEFAULT
        ' open the output stream to receive the results for the command execute.
        cmdOutput.Open
        ' set the base path for where the template file resides. 
        ' Currently, this must point to a file on disk. Remote templates via
        ' http://...template.xml" are not allowed.
        cmd.Properties("Base Path") = App.Path
        ' set up the output stream that will receive the output of the command execute.
        cmd.Properties("Output Stream") = cmdOutput
        
        ' set the XSL to process if the user requested the output to be fixed.
        If optXSLYes Then
            ' set the file name for the XSL: this inherits the "base path" setting
            cmd.Properties("XSL") = "products.xsl"
            ' set the file extension to ".htm", mainly so the Web browser displays
            ' set the output as a table.   Try with a ".xml" extension... what is displayed?
            txtOutputFileName = App.Path & "\queryout.htm"
        Else
            txtOutputFileName = App.Path & "\queryout.xml"
        End If
    
        ' execute the command stream with the settings specified above.
        cmd.Execute , , adExecuteStream
        ' position the stream back to the beginning: the "file position" in the 
        'stream will be at the end of the stream.  Writing to a stream will append
        'on the end and only while the output from the command execute generates.
        cmdOutput.Position = 0
        'save the output to a file, this is only needed to use the navigate on the Web browser control
        cmdOutput.SaveToFile txtOutputFileName, adSaveCreateOverWrite
        ' Navigate/display the results of the command executes.
        WebBrowser1.Navigate txtOutputFileName
        
        ' close and clean-up the objects used.
        cmdOutput.Close
        cmdStream.Close
        cn.Close
        
        Set cmdOutput = Nothing
        Set cmdStream = Nothing
        Set cmd = Nothing
        Set cn = Nothing
        
    End Sub
    					
  7. Para criar um arquivo de modelo, crie um novo arquivo de texto, cole o seguinte modelo para o arquivo e, em seguida, salve-o com um nome de products.xml:
    <?xml version='1.0' ?>          
    <root xmlns:sql="urn:schemas-microsoft-com:xml-sql">
        <sql:header>
            <sql:param name="ProdName">%</sql:param>
        </sql:header>
        <sql:query>
            SELECT      *
            FROM        Products
            WHERE       ProductName like '%' + @ProdName + '%'
            ORDER BY    ProductName                     
            FOR XML AUTO
        </sql:query>
    </root> 
    					
  8. Como opção, crie um arquivo chamado products.xsl com o seguinte código para transformar a saída:
    <?xml version='1.0' ?>          
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
        <xsl:template match="/">
            <html>
                <head>
                    <title>MSDN ADO Product Sample with SQL Server 2000 Features</title>
                    <base href="http://localhost/3tier/" />
                </head>
                <body>
                    <table border="0" cellPadding="1" cellSpacing="1"
                     width="100%" 
                     style="COLOR:black;FONT-FAMILY:Arial;FONT-SIZE:12pt.;FONT-WEIGHT:500">
    
                    <tr bgColor="#336699" align="center">
                        <TD><P ><STRONG><FONT color="white" size="2">Product ID:</FONT></STRONG></P></TD>
                        <TD><P ><STRONG><FONT color="white" size="2">Product Name:</FONT></STRONG></P></TD>
                        <TD><P ><STRONG><FONT color="white" size="2">Unit Price:</FONT></STRONG></P></TD>
                        <TD><P ><STRONG><FONT color="white" size="2">Units In Stock:</FONT></STRONG></P></TD>
                        <TD><P ><STRONG><FONT color="white" size="2">Restock Level:</FONT></STRONG></P></TD>
                        <TD><P ><FONT color="white" size="2"><STRONG>Units On Order:</STRONG></FONT></P></TD>
                    </tr>
                                    
                    <xsl:for-each select="root/Products">
                        <tr style="COLOR: black; FONT-FAMILY: Arial; FONT-SIZE: 0.8em; FONT-WEIGHT: 500">
                            <td bgColor="#F0F0F0"><xsl:value-of select="@ProductID"/></td>
                            <td bgColor="#F0F0F0"><xsl:value-of select="@ProductName"/></td>
                            <td bgColor="#F0F0F0"><xsl:value-of select="@UnitPrice"/></td>
                            <td bgColor="#F0F0F0"><xsl:value-of select="@UnitsInStock"/></td>
                            <td bgColor="#F0F0F0"><xsl:value-of select="@ReorderLevel"/></td>
                            <td bgColor="#F0F0F0"><xsl:value-of select="@UnitsOnOrder"/></td>
                        </tr>
                    </xsl:for-each>
                    </table>
                </body>
             </html>
        </xsl:template>
    </xsl:stylesheet>
    					

Referências

Para obter mais informações sobre o SQL Server 2000, consulte os manuais online do SQL Server.

Para obter mais informações em XML, visite o seguinte site:
http://msdn.microsoft.com/xml
Para obter mais informações sobre XML, visite o seguinte site da World Wide Web Consortium (W3C):
http://www.w3.org/xml

Propriedades

ID do artigo: 271621 - Última revisão: domingo, 23 de fevereiro de 2014 - Revisão: 2.5
A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.7
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft XML Parser 2.6
  • Microsoft XML Parser 3.0
  • Microsoft XML Core Services 4.0
Palavras-chave: 
kbnosurvey kbarchive kbmt kbhowto KB271621 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 271621

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com