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 de acesso

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çado: Requer conhecimentos avançados sobre codificação, interoperabilidade e multi-utilizador.

Este artigo aplica-se apenas a um projecto do Microsoft Access (.adp).

Nesta página

Expandir tudo | Reduzir tudo

Sintomas

Quando executa determinados procedimentos armazenados num projecto do Microsoft Access, o resultado do procedimento está truncado na vista de folha de dados. Se tiver o mesmo procedimento de uma das ferramentas de cliente do SQL Server, todas as linhas são devolvidas como previsto.

Causa

Se um procedimento armazenado devolver que conjuntos de vários resultados no respectivo resultado, um projecto do Access devolve apenas o primeiro conjunto de resultados para a vista de folha de dados. A interface de utilizador num projecto do Access não foi concebida para devolver vários conjuntos de resultados.

Resolução

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

Mais Informação

Para determinar se o cliente/servidor de acesso pode apresentar o resultado completo de um determinado procedimento armazenado, siga estes passos.

Nota : O código de exemplo deste artigo utiliza Microsoft ActiveX Data Objects. Para que este código seja executado correctamente, tem de referenciar o Microsoft ActiveX Data Objects 2.x biblioteca (onde 2.x é 2.1 ou posterior.) Para o fazer, clique em References no menu Ferramentas no Editor do Visual Basic e certifique-se que a caixa de verificação Microsoft ActiveX Data Objects 2.x biblioteca está seleccionada.

A Microsoft fornece exemplos de programação apenas, para fins sem garantia expressa ou implícita. Isto inclui, mas não está limitado a, as garantias implícitas de comercialização ou adequação a um fim específico. Este artigo pressupõe que está familiarizado com a linguagem de programação apresentada e as ferramentas que são utilizadas para criar e depurar procedimentos. Os técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às necessidades específicas do utilizador.
  1. Abra um projecto do Access que está ligado à base de dados utilizador que contém o procedimento armazenado que pretende examinar. Se pretender testar um procedimento armazenado do sistema, abra qualquer projecto do Access ligado a uma base de dados do utilizador.
  2. Crie um módulo e escreva a linha seguinte na secção Declarations, caso ainda não estiver escrito:
    Option Explicit
    					
  3. Escreva 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 escreva a seguinte linha de código, substituindo StoredProcName com o nome do procedimento armazenado que pretende examinar:
    Call Checkoutput("StoredProcName")
    					
    prima ENTER.

Passos para reproduzir o comportamento

  1. Abrir um projecto do Access ligado à base de dados exemplo NorthwindCS.adp.
  2. Utilizar o seguinte SQL para criar um novo procedimento armazenado:
       CREATE PROCEDURE "TestSProc"
       AS
       EXEC sp_help 'Customers'
    					
    guardar o procedimento armazenado.

  3. Execute o procedimento armazenado e tenha em atenção que uma linha é devolvida na vista de folha de dados.
  4. Abrir o SQL Server Query Analyzer, ligar a base de dados AdamastorCS no SQL Server e execute o seguinte código:
    EXEC TestSproc
    					
Tenha em atenção que aproximadamente 23 linhas são devolvidas.

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 transferência a partir do seguinte Web 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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/ )