Visual Basic para Aplicaciones - Error entre VBA y SQL Server

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 3
Ha aumentado su posición en 10 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Error entre VBA y SQL Server

Publicado por Jaime (2 intervenciones) el 13/10/2019 19:26:10
Buenas tardes, tengo el siguiente código que establezco conexión con una BD SQL Server para actualizar un campo, lo curioso es que a veces me realiza bien el registro y otras me da error y no logro saber en que fallo, el error me lleva a la linea de la sentencia SQL. paso también la imagen del error
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
 
 
    'aqui debe guardar toda la informacion en SQL Server
    Dim conn As ADODB.Connection
    Dim sConnString As String
    Dim SQL_String As String
 
    ' Create the connection string.
    sConnString = "Provider=SQLOLEDB;Data Source=SERVIDOR\SQLCONTROLDOC;Initial Catalog=DB" & Sheets("CONFIGURACION").Range("B2").Value & ";Persist Security Info=True;User ID=sa;Password=Cruceni0098.."
 
    ' Create the Connection and Recordset objects.
    Set conn = New ADODB.Connection
    'Set rs = New ADODB.Recordset
 
    ' Open the connection and execute.
    conn.Open sConnString
 
    If Sheets("PEDIDO").Range("Num_Pedido").Value <> "" Then
 
         SQL_String = "update TBL_Pedidos set  Importe=" & Sheets("PEDIDO").Range("Importe_Pedido").Value & _
                                 " WHERE Num_Pedido=" & Sheets("PEDIDO").Range("Num_Pedido").Value & " AND id_Empresa=" & Sheets("CONFIGURACION").Range("B3").Value & ";"
 
        ' MsgBox (SQL_String)
 
             conn.Execute ("update TBL_Pedidos set  Importe=" & Sheets("PEDIDO").Range("Importe_Pedido").Value & _
                                 " WHERE Num_Pedido=" & Sheets("PEDIDO").Range("Num_Pedido").Value & " AND id_Empresa=" & Sheets("CONFIGURACION").Range("B3").Value & ";")
 
 
    End If
 
    ' Clean up
    If CBool(conn.State And adStateOpen) Then conn.Close
    Set conn = Nothing
 
End Sub


Anotacion-2019-10-13-191550

Que puede ser?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de MIGUEL
Val: 424
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Error entre VBA y SQL Server

Publicado por MIGUEL (121 intervenciones) el 14/10/2019 18:19:20
Buenas jaime

Puedes probar de esta forma

A mi no me da problemas.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
     'aqui debe guardar toda la informacion en SQL Server
    Dim conn As Object
    Dim re As Object
    Dim sConnString As String
    Dim SQL_String As String
    ' Create the Connection and Recordset objects.
    Set conn = CreateObject("ADODB.Connection")
    Set re = CreateObject("ADODB.Recordset")
    sConnString = "Provider=SQLOLEDB;Data Source=SERVIDOR\SQLCONTROLDOC;Initial Catalog=DB" & Sheets("CONFIGURACION").Range("B2").Value & ";Persist Security Info=True;User ID=sa;Password=Cruceni0098.."
    ' Open the connection and execute.
    conn.Open sConnString
    If Sheets("PEDIDO").Range("Num_Pedido").Value <> "" Then
        SQL_String = "update TBL_Pedidos set  Importe=" & Sheets("PEDIDO").Range("Importe_Pedido").Value & _
                     " WHERE Num_Pedido=" & Sheets("PEDIDO").Range("Num_Pedido").Value & " AND id_Empresa=" & Sheets("CONFIGURACION").Range("B3").Value & ";"
        ' MsgBox (SQL_String)
        re.Open SQL_String, conn
    End If
 
    ' Clean up
    If CBool(conn.State And adStateOpen) Then conn.Close'si lo que quieres es cerrar la conexion basta con poner if conn.state then conn.close
    Set conn = Nothing
    Set re = Nothing
 
End Sub

Checa si consulta para editar es correcta, tenias dos y copie la que vez.

Espero te ayude

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de gilman
Val: 138
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Error entre VBA y SQL Server

Publicado por gilman (47 intervenciones) el 15/10/2019 08:28:19
Cuando se produzca el error comprueba el valor de variable SQL_String, si no encuentras el error posteala aquí para ver si podemos ayudarte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 3
Ha aumentado su posición en 10 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Error entre VBA y SQL Server

Publicado por Jaime (2 intervenciones) el 16/10/2019 21:13:08
980F3A44-FCFD-43F8-92EA-8E37C5E1A254

No logro ver el error en la sentencia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Dirk
Val: 50
Ha aumentado 1 puesto en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Error entre VBA y SQL Server

Publicado por Dirk (20 intervenciones) el 16/10/2019 21:47:25
puede ser que la consulta no está actualizando ningún registro.......

Salu2
Dirk
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de gilman
Val: 138
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Error entre VBA y SQL Server

Publicado por gilman (47 intervenciones) el 17/10/2019 08:43:07
Yo tampoco consigo ver el 'Error de sintaxis'
¿Esa ejecución producía el error?
Otra vez que se produzca el error pega la consulta como texto, no como un pantallazo, para que podamos comprobarlo mejor.
En cuanto a que no este actualizando ningún registro, no se produciría un error
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar