MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Modo correto de executar Store Procedure Sql Server com VBA

    Compartilhe

    Motar
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 143
    Registrado : 03/08/2010

    Modo correto de executar Store Procedure Sql Server com VBA

    Mensagem  Motar em Dom 20 Jul 2014, 12:57

    Utilizo das duas formas abaixo e ambas funcionam, mas qual a diferença e qual a mais correta?

    Opção1:
    Call ConServer
    con.Execute "EXEC ImpExcel12", adExecuteNoRecords
    con.Close

    Opção2:
    Call ConServer
    con.Execute "EXEC ImpExcel12", , adExecuteNoRecords
    con.Close

    Marco Messa
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 283
    Registrado : 28/06/2010

    Re: Modo correto de executar Store Procedure Sql Server com VBA

    Mensagem  Marco Messa em Qui 24 Jul 2014, 20:47

    O Método execute tem os seguintes parâmetros:

    connection.Execute CommandText, RecordsAffected, Options

    Porquê funciona?
    Porque os 2 últimos parâmetros solicitam um valor númerico do tipo Long, como o enumerador que você utilizou retorna um número, então ele pode ser usado tanto no primeiro como no último parâmetro.

    O valor de adExecuteNoRecords é 128. Na primeira situação o valor 128 foi passado pro parâmetro RecordsAffected, e na segunda situação o valor foi passado pro parâmetro Options.
    No VBScript, quando vc usa uma vírgula e empaço em branco no lugar do parâmetro, você está dizendo que aquele parâmetro em branco você não vai informar (Call Método(Parametro1, , Parametro3).
    Obs.: Só funciona com parâmetros opcionais.

    O jeito certo depende do que você precisa, veja os valores que podem ser passados pro parâmetro Options aqui:
    [Você precisa estar registrado e conectado para ver este link.]
    E aqui:
    [Você precisa estar registrado e conectado para ver este link.]

    Esses valores podem ser combinados conforme a documentação do método execute:
    [Você precisa estar registrado e conectado para ver este link.]


    .................................................................................
    Tea with me that I book your face [Você precisa estar registrado e conectado para ver esta imagem.]

    Motar
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 143
    Registrado : 03/08/2010

    Re: Modo correto de executar Store Procedure Sql Server com VBA

    Mensagem  Motar em Sex 25 Jul 2014, 18:59

    Obrigado Marco pela explicação, mas como os artigos estão em inglês fiquei com algumas duvidas.
    Quais os parametros/configuração que você aconselha para as seguintes situações:
    - Quando o store procedure retorna registos
    - Quando o store procedure não retorna registos sendo para aplicar a função delete ou update

    Marco Messa
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 283
    Registrado : 28/06/2010

    Re: Modo correto de executar Store Procedure Sql Server com VBA

    Mensagem  Marco Messa em Sex 25 Jul 2014, 19:14

    Retornando registros apenas diga que é uma SP:
    con.Execute "EXEC ImpExcel12", , adCmdStoredProc

    Apenas insert, update e delete:
    con.Execute "EXEC ImpExcel12", , adCmdStoredProc + adExecuteNoRecords


    .................................................................................
    Tea with me that I book your face [Você precisa estar registrado e conectado para ver esta imagem.]

    Motar
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 143
    Registrado : 03/08/2010

    Re: Modo correto de executar Store Procedure Sql Server com VBA

    Mensagem  Motar em Sex 25 Jul 2014, 19:27

    Marco
    Aplicando dessa forma dá este erro:
    run-time error '-2147217900'
    erro de sintaxe ou violação de acesso

    Porque será que assim dá erro?

    Marco Messa
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 283
    Registrado : 28/06/2010

    Re: Modo correto de executar Store Procedure Sql Server com VBA

    Mensagem  Marco Messa em Sex 25 Jul 2014, 19:43

    Você usou esse?

    con.Execute "EXEC ImpExcel12", , adCmdStoredProc


    .................................................................................
    Tea with me that I book your face [Você precisa estar registrado e conectado para ver esta imagem.]

    Motar
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 143
    Registrado : 03/08/2010

    Re: Modo correto de executar Store Procedure Sql Server com VBA

    Mensagem  Motar em Sex 25 Jul 2014, 19:46

    Sim, este também dá erro

      Data/hora atual: Qua 07 Dez 2016, 20:10