none
Problema ao tentar inserir dados do VBA em um Banco de Dados no SQL Sever 2018 RRS feed

  • Pergunta

  • Olá, me chamo Alvaro.

    Estou utilizando um windows 10 Home, um MSSQLMS onde dentro dele tem um banco de dados e Excel VBA. No VBA tem as informações já inserida e uma macro onde tem o código da conexão entre o Servidor SQL Sever e o Banco de dados, más ao tentar inserir um grupo de dados por linha de código, não ocorre a inserção levando a um erro e muitas vezes perdendo dados.

    Observação: Os dados estão salvos em um computador diferente do que estou onde eles podem ser acessados pela rede.

    segunda-feira, 27 de junho de 2022 11:26

Todas as Respostas

  • Olá Alvaro, tudo bem?

    Nos dê mais detalhes da implementação, se já funcionava, o erro, se é só quando insere várias linhas ao mesmo tempo e principalmente, o bloco de código que está sendo gerado o erro.

    Abraço!


    Natan

    segunda-feira, 27 de junho de 2022 12:06
  • Bom dia Natan.

    O erro está sendo no momento em que eu tento inserir os dados do vba para o SQL Sever.

    Código do erro -2147217900 (80040 e14): Sintaxe incorreta proxima a 'VALUE'

    Neste ponto eu estou com essa situação tenho a inserção de dados em duas tabelas um com a nomenclatura de cliente e outro para cônjuge, onde na hora que tento compilar passo a passo no vba, não apresenta erro no primeiro ponto de inserção, mais ao chegar ao segundo aparece está mensagem.

    Dim StrRs As String

    Dim obj_Conection As New ADODB.Connection

    Dim obj_RecordSet As New ADODB.Recordset

    StrRs = "INSERT INTO cliente (cpf, nome, status)"

    StrRs = StrRs & "Values ('" & cpf & "'" & nome & "'" & status & "')"

    obj_RecordSet.Open StrRs, str_ConnString

    segunda-feira, 27 de junho de 2022 13:58
  • Certo, faça o seguinte, coloque um breakpoint nessa linha:

    obj_RecordSet.Open StrRs, str_ConnString

    Coloque aqui o que exatamente está e StrRs.

    Provavelmente, algum valor das variáveis está invalidando o comando.


    Natan

    terça-feira, 28 de junho de 2022 00:52
  • Boa tarde Natan, até o momento continua da mesma maneira.
    Uma dúvida, seria um erro por estar usando este código em uma macro.
        Dim obj_Connection As New ADODB.Connection
        Dim obj_RecordSet As New ADODB.Recordset
        Dim str_SQL As String
        Dim str_PlanilhaDestino As String
        Dim str_ConnString As String
        Dim str_LinhaInicial As String

        Dim W As Worksheet
        Dim ln As Long
        Dim coluna As Integer
        Set W = Sheets("Pasta1")
        Set ultimalinha = W.Cells(W.Rows.Count, 1).End(xlUp)

        str_PlanilhaDestino = "CLIENTE"

        str_ConnString = 'Conexão com meu banco de dados no SQL Sever

        str_LinhaInicial = 2

         str_SQL = "INSERT INTO cliente (cpf, nome, status)"

         str_SQL = str_SQL & "Values ('" & cpf & "'" & nome & "'" & status & "')"

         obj_RecordSet.Open str_SQL, str_ConnString

    terça-feira, 28 de junho de 2022 17:05
  • O fato de estar em macro não é o problema e você não postou como está o valor da variável str_SQL para verificarmos o que está sendo enviado para o banco.

    Noto que no seu código, existem variáveis que estão sendo enviadas, cpf, nome e status, quais são seus respectivos valores no momento de criar o comando?


    Natan

    terça-feira, 28 de junho de 2022 19:51