ID do artigo: 232562 - Última revisão: quinta-feira, 23 de junho de 2005 - Revisão: 3.0

ACC2000: Saída do procedimento armazenado truncado no cliente/servidor do Access

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Avançadas: Requer especialista de codificação, interoperabilidade e habilidades de multiusuário.

Este artigo se aplica somente a um projeto Microsoft Access (.adp).

Nesta página

Expandir tudo | Recolher tudo

Sintomas

Quando você executa determinados procedimentos armazenados de um projeto Microsoft Access, a saída do procedimento é truncada no modo folha de dados. Se você executar o mesmo procedimento de um SQL Server Client Tools, todas as linhas são retornadas como esperado.

Causa

Se um procedimento armazenado retorna que conjuntos de resultados várias na sua saída, um projeto do Access retorna somente o primeiro conjunto de resultados para o modo folha de dados. A interface do usuário em um projeto do Access não foi projetada para retornar vários conjuntos de resultados.

Resolução

Usar ferramentas alternativas para executar procedimentos armazenados que retornem vários conjuntos de resultados, como o SQL Server Query Analyzer ou o OSQL.

Mais Informações

Para determinar se o cliente/servidor do Access pode exibir a toda saída de um determinado procedimento armazenado, siga estas etapas.

Observação : O código de exemplo neste artigo usa o Microsoft ActiveX Data Objects. Para que este código seja executado corretamente, você deve fazer referência a 2.x Microsoft ActiveX Data Objects Library (onde 2.x é 2.1 ou posterior.) Para fazer isso, clique em referências no menu Ferramentas no Editor do Visual Basic e veja que a caixa de seleção 2.x Microsoft ActiveX Data Objects Library está selecionada.

Microsoft fornece exemplos de programação apenas para ilustração, sem garantia expressa ou implícita. Isso inclui, mas não está limitado a, garantias implícitas de comercialização ou adequação para uma finalidade específica. Este artigo presume que você está familiarizados com a linguagem de programação que está sendo demonstrada e com as ferramentas que são usadas para criar e depurar procedimentos. Engenheiros de suporte podem ajudar a explicar a funcionalidade de um determinado procedimento, mas eles não modificarão esses exemplos para fornecer funcionalidades adicionais ou construir procedimentos para atender às suas necessidades.
  1. Abra um projeto do Access conectado ao banco de dados usuário que contém o procedimento armazenado que você deseja examinar. Se você precisa testar um procedimento armazenado do sistema, abra qualquer projeto do Access conectado a um banco de dados usuário.
  2. Crie um módulo e digite a seguinte linha na seção Declarações caso ainda não estiver lá:
    Option Explicit
    					
  3. Digite o seguinte procedimento:
     
    Sub CheckOutput(strProcName As String)
        
       Dim conn As New adodb.Connection
       Dim com As New adodb.Command
       Dim rs As New adodb.Recordset
       Dim i
        
       On Error GoTo errorTrapper
       
       Set conn = CurrentProject.Connection
       com.ActiveConnection = conn
        
       With com
          .CommandText = strProcName
          .CommandType = adCmdStoredProc
       End With
        
       Set rs = com.Execute
           
       Do Until rs Is Nothing
          i = i + 1
          Set rs = rs.NextRecordset
          If i > 1 Then
             MsgBox "Stored Procedure " & strProcName & _
               " contains more than one resultset. " & vbCrLf & _
               "The results will therefore be truncated when displayed.", _
               vbInformation
             Exit Sub
          End If
       Loop
            
       Exit Sub
        
    errorTrapper:
       If Err.Number = 3251 Then
          MsgBox "Stored Procedure " & strProcName & _
            " contains only one resultset. " & vbCrLf & _
            "It therefore should be displayed correctly.", _
            vbInformation
       Else
          MsgBox Err.Description & Err.Number, vbCritical, "Error"
       End If
        
    End Sub
    					
  4. Abra a janela Immediate e digite a seguinte linha de código, substituindo StoredProcName com o nome do procedimento armazenado que você deseja examinar:
    Call Checkoutput("StoredProcName")
    					
    pressione ENTER.

Etapas para reproduzir o problema

  1. Abrir um projeto do Access conectado ao banco de dados exemplo NorthwindCS.adp.
  2. Use o seguinte SQL para criar um novo procedimento armazenado:
       CREATE PROCEDURE "TestSProc"
       AS
       EXEC sp_help 'Customers'
    					
    salvar o procedimento armazenado.

  3. Execute o procedimento armazenado e observe que uma linha é retornada no modo folha de dados.
  4. Abra o SQL Server Query Analyzer, conecte-se ao banco de dados NorthwindCS no SQL Server e execute o código a seguir:
    EXEC TestSproc
    					
Observe que aproximadamente 23 linhas são retornadas.

Referências

Para obter mais informações sobre regras, o SQL Server Query Analyzer ou o OSQL, consulte SQL Server 7.0 Books Online , que está disponível para download no seguinte site da Microsoft:
http://download.microsoft.com/download/SQL70/File/2/Win98/En-US/SQLBOL.exe (http://download.microsoft.com/download/sql70/file/2/win98/en-us/sqlbol.exe)

A informação contida neste artigo aplica-se a:
  • Microsoft Access 2000 Standard Edition
Palavras-chave: 
kbmt kbdownload kbclientserver kbprb KB232562 KbMtpt
Tradução automáticaTraduçã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: 232562  (http://support.microsoft.com/kb/232562/en-us/ )