Falha do Assistente de mala direta com procedimentos armazenados e funções

Support for Office 2003 has ended

Microsoft ended support for Office 2003 on April 8, 2014. This change has affected your software updates and security options. Learn what this means for you and how to stay protected.

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: 295264
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Moderado: Requer básica de macro, codificação e interoperabilidade habilidades.

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

Sintomas
Ao executar o Assistente de mala direta mesclar os resultados de um SQL Server armazenados procedimento ou função com um documento do Microsoft Word, você recebe a seguinte mensagem de erro no Microsoft Word:
<filename><nome_do_arquivo> está bloqueado para edição por 'outro usuário'.
Quando você clica em Cancelar , você recebe a seguinte mensagem de erro no Microsoft Access:
O Word não pôde abrir a fonte de dados.
Quando você clicar em OK duas vezes, continua a mesclagem, mas você não pode ler os dados; ou seja, parece criptografado.
Causa
O Assistente de mala direta usa sintaxe SQL incorreta para recuperar dados de procedimentos armazenados e funções embutidas. O assistente usa uma instrução SQL na forma de "SELECT * FROM NomeDoObjeto". Essa sintaxe Falha ao tentar executar uma função in-line ou procedimento armazenado.
Resolução

Mesclar os resultados de uma função embutida

Para mesclar os resultados de uma função in-line, criar um modo de exibição que seleciona os campos que deseja da função in-line e, em seguida, mesclar o modo de exibição com o Microsoft Word. Para fazer isso, execute estas etapas:

  1. Abra o arquivo de projeto (.adp) no Microsoft Access.
  2. Na janela banco de dados, clique em consultas sob objetos e, em seguida, clique em novo .
  3. Na caixa de diálogo Nova consulta , clique em Modo de design e, em seguida, clique em OK .
  4. Na caixa de diálogo Adicionar tabela , clique na guia de funções .
  5. Selecione sua função in-line, clique em Adicionar e, em seguida, clique em Fechar .
  6. Na lista de campos, clique para selecionar a caixa de seleção ao lado * (todas as colunas) .
  7. No menu Exibir , aponte para Mostrar painéis e, em seguida, clique em SQL . O painel SQL deve conter uma instrução semelhante à seguinte:
    SELECT MyFunction.* FROM MyFunction() MyFunction					
  8. No menu arquivo , clique em Salvar . Digite um nome para o novo modo de exibição e, em seguida, clique em OK .
  9. Feche o modo de exibição.
  10. Use o Assistente de mala direta para mesclar o modo de exibição recém-criado com o Microsoft Word.

Mesclar os resultados de um procedimento armazenado

Infelizmente, não há nenhuma abordagem ideal para mesclar os resultados de um procedimento armazenado com o Microsoft Word. Há várias abordagens que você pode tomar, mas cada um tem suas próprias vantagens e desvantagens.

reescrever o procedimento armazenado como uma função embutida

A primeira abordagem é reescrever o procedimento armazenado como uma função in-line e, em seguida, usar as etapas na seção "Mesclar a resultados de uma função embutida", anteriormente neste artigo para criar um modo de exibição baseada na função para mesclar com o Microsoft Word.

Use uma consulta criar tabela para selecionar os resultados do procedimento armazenado em uma nova tabela

A segunda abordagem é modificar o procedimento armazenado para que seu conjunto de resultados é copiado para uma nova tabela. Por exemplo, se o procedimento armazenado atual sintaxe é semelhante a:
SELECT Customers.* FROM Customers
e você pode alterá-lo para:
SELECT Customers.* INTO tblCustomers FROM Customers
após executar o procedimento armazenado, você pode mesclar a tabela recém-criada com o Microsoft Word.

executar o procedimento armazenado usando uma consulta de passagem ODBC

A terceira abordagem é executar o procedimento armazenado de uma consulta de passagem ODBC em um banco de dados Microsoft Access. Em seguida, você pode mesclar a consulta de passagem de ODBC com o Microsoft Word. Para fazer isso, execute estas etapas:
  1. Abra um arquivo de banco de dados (.mdb) do Microsoft Access.
  2. Na janela banco de dados, clique em consultas sob objetos e, em seguida, clique em novo .
  3. Na caixa de diálogo Nova consulta , clique em Modo de design e, em seguida, clique em OK .
  4. Na caixa de diálogo Adicionar tabela , clique em Fechar sem adicionar qualquer tabelas ou consultas.
  5. No menu consulta , aponte para Específica em SQL e, em seguida, clique em passagem .
  6. Digite a sintaxe SQL adequada para executar o procedimento armazenado, por exemplo:
    EXEC MyStoredProcedure
  7. No menu Exibir , clique em Propriedades .
  8. Na propriedade Seq de conexão ODBC , clique no botão Construir .
  9. Selecione uma fonte de dados ODBC e, em seguida, fazer logon banco de dados SQL Server que contém o procedimento armazenado. Quando você for solicitado, você pode, opcionalmente, optar por incluir a senha na seqüência de conexão.
  10. Defina a propriedade Retorna registros como Sim .
  11. No menu consulta , clique em Executar . Conjunto de resultados do procedimento armazenado deve ser exibido no modo folha de dados.
  12. No menu arquivo , clique em Salvar . Digite um nome para a nova consulta passagem e, em seguida, clique em OK .
  13. Feche a consulta.
  14. Use o Assistente de mala direta para mesclar a consulta passagem recém-criada com o Microsoft Word.
Situação
A Microsoft confirmou que este é um problema no Microsoft Access.
Mais Informações

Passos para reproduzir o problema

  1. Abra o projeto de exemplo NorthwindCS.adp.
  2. Feche o formulário menu de controle principal se ele aparecer.
  3. No menu Exibir , aponte para Objetos de banco de dados e clique em consultas .
  4. Clique no procedimento de Dez produtos mais caros armazenado na janela banco de dados.
  5. No menu Ferramentas , aponte para Vínculos do Office e, em seguida, clique em Mesclar com o Microsoft Word .
  6. Na caixa de diálogo Assistente de mala direta , clique na opção para criar um novo documento e, em seguida, clique em OK .

    Observe que o Microsoft Word inicia e você receber a seguinte mensagem de erro:
    NorthwindCS.adp está bloqueado para edição por 'outro usuário'.
  7. Clique em Cancelar .
  8. Alterne novamente para o Microsoft Access.
Observe que você recebe a seguinte mensagem de erro:
O Word não pôde abrir a fonte de dados.
pra ACC2002

Propriedades

ID do Artigo: 295264 - Última Revisão: 12/06/2015 01:55:03 - Revisão: 4.3

Microsoft Office Access 2003, Microsoft Access 2002 Standard Edition, Microsoft Word 2002 Standard Edition

  • kbnosurvey kbarchive kbmt kbbug kbclientserver kberrmsg kbnofix KB295264 KbMtpt
Comentários
ERROR: at System.Diagnostics.Process.Kill() at Microsoft.Support.SEOInfrastructureService.PhantomJS.PhantomJSRunner.WaitForExit(Process process, Int32 waitTime, StringBuilder dataBuilder, Boolean isTotalProcessTimeout)