none
Conexão com SQL Server 2014 - RRS feed

  • Pergunta

    • Boa tarde, colegas
    •  Montei esse projeto porem quando compilo eu não obtenho nenhuma resposta sendo que no meu arquivo eu tenho tenho todo o diretório de conexão com a base de dados e server. 
    • Eu não estou conseguindo identificar dentro desse código o que esta faltando ou esta errado. 
    • Option Explicit

      Const SQLConStr As String = "Provider=SQLOLEDB;Server=); Database=dbo.tbl_teste_vba_inclusao_registro;Trusted_Connection=yes"

      Sub ConnectionSQL()

          Dim RegistroConn As ADODB.Connection
          Dim RegistroConn As ADODB.Command
          Dim rs As New ADODB.Recordset
          Dim sql As String
          Dim r As Range

          Set Registro = New ADODB.Connection
          Set RegistroConn = New ADODB.Command

          RegistroConn.ConnectionString = SQLConStr
          RegistroConn.Open

          RegistroCmd.ActiveConnection = RegistroConn

          RegistroConn.BeginTrans

          For Each r In Range("A2", Range("A4").End(xlDown))

                  On Error GoTo ErrorHandler
                  RegistroCmd.CommandText = _
                   GetInsertTextSQL( _
                     .Offset(0, 2).Value, _
                     .Offset(0, 3).Value, _
                     .Offset(0, 4).Value)
                On Error GoTo 0

                  RegistroCmd.Execute

              Next r

          RegistroConn.CommitTrans
          RegistroConn.Close

          Set RegistroConn = Nothing

          Exit Sub

      ErrorHandler:
          MsgBox "Error number = " & (Err.Number - vbObjectError) & vbNewLine & Err.Description
          RegistroConn.RollbackTrans
          RegistroConn.Close
      End Sub

      Sub Incluir()

       Dim SQLStr As String

      SQLtr = _
          "INSERT INTO dbo.tbl_teste_vba_inclusao_registro (" & _
          "RegistroId, RegistroName, RegistroReleaseDate, Registrodescricao, Registrovalor)" & _
          "VALUES (" & _
          "(SELECT MAX(RegistroId)FROM tbl_teste_vba_inclusao_registro) + 1," & _
          "'" & Replace(RegistroId, "'", "''") & "'," & _
          "'" & Format(RegistroDate, "yyyy-mm-dd") & "'," & _
          CStr(Registrodescricao) & _
          CStr(Registrovalor) & ");"

          If InStr(1, SQLStr, "drop", vbTextCompare) <> 0 Then
              Err.Raise vbObjectError = 100, , "Naughty words used"
           End If

          GetInsertText = SQLtr

      End Sub

                                                                                               

    terça-feira, 28 de junho de 2016 15:26

Respostas

Todas as Respostas

  • Boa Tarde, Caros colegas. 

    Gostaria de saber se existe alguma outra forma de realizar este processo, onde todas as informações que forem adicionadas no Excel atualize no sql, por meio do vba. 

    Teria que criar um metodo de insert, para fazer esse processo e criar um metodo de conexão.

    Desde já agradeço

    terça-feira, 28 de junho de 2016 15:03
  • Ao inserir um código no fórum, utilize blocos de código. Para utilizar essa ferramenta, clique no botão cuja legenda é “Inserir bloco de código” na barra do editor de mensagens do fórum. Uma janela aparecerá onde você deverá colar seu código cru na caixa de texto à esquerda. Então, selecione a opção Vb.Net na caixa de combinação que você verá em cima à esquerda e depois clique no botão Inserir.

    ---

    Em qual linha você obtém erro?


    http://www.ambienteoffice.com.br - http://www.clarian.com.br

    terça-feira, 28 de junho de 2016 16:38
    Moderador
  • Quando compilo o codigo na teoria ele teria que realizar um insert no banco de dados, porem quando executo não acontece nada. 
    terça-feira, 28 de junho de 2016 16:42
  • Quando você compila (Alt, D, Enter) ou quando você executa (F5)?

    Você não escreveu uma instrução que execute a instrução SQL no final, como:

    RegistroConn.Execute SQLtr


    http://www.ambienteoffice.com.br - http://www.clarian.com.br

    terça-feira, 28 de junho de 2016 16:54
    Moderador
  •    Nas declarações da variáveis aparece como duplicada, porem se mudo o nome de uma delas apresenta como variável não definida mesmo alterando os demais campos.

    Essa informação aparece na linha do Set ( Set Registro = New ADODB.Connection)

       Dim RegistroConn As ADODB.Connection
        Dim RegistroConn As ADODB.Command
        Dim rs As New ADODB.Recordset
        Dim sql As String


    • Editado Fernando_Martins terça-feira, 28 de junho de 2016 17:05 Novas informações
    terça-feira, 28 de junho de 2016 17:02
  • Fernando.

    Verifique, primeiramente, se seu código está compilando. Corrija todos os erros e depois volte a postar o código atualizado.

    http://ambienteoffice.com.br/blog/estados-do-vbe/#tempo-de-compilacao


    http://www.ambienteoffice.com.br - http://www.clarian.com.br

    terça-feira, 28 de junho de 2016 17:15
    Moderador