Saltar al contenido

Error 3709


Recommended Posts

publicado

Hola gente soy nuevo y estoy tratando de adaptar un programa vba a mi necesidad pero al momento de ejecutarlo me da el erro 3709

Option Explicit
Public CN As ADODB.Connection
Dim Cod_Prod, Nombre, Existencia
Dim Fila, Final As Integer

Function Connect(Server As String, User As String, Pass As String, Database As String) As Boolean
 
    Set CN = New ADODB.Connection
    On Error Resume Next
 
    With CN
        
        .ConnectionString = "Provider=SQLOLEDB.1;" & _
                            "Password=" & Pass & ";" & _
                            "Persist Security Info=True;" & _
                            "User ID=" & User & ";" & _
                            "Initial Catalog=" & Database & ";" & _
                            "Data Source=" & Server
        
        .Open
    End With
    
    If CN.State = 0 Then
        Connect = False
    Else
        Connect = True
    End If
 
End Function
Function Query()
    Dim SQL As String
    Dim RS As ADODB.Recordset
    Dim Field As ADODB.Field
 
    Dim Col As Long
 
    
    Set RS = New ADODB.Recordset
    
Final = GetUltimoR(Hoja1)

For Fila = 2 To Final
    Cod_Prod = Hoja1.Cells(Fila, 2)
    Nombre = Hoja1.Cells(Fila, 3)
    Existencia = Hoja1.Cells(Fila, 4)

 
    
    SQL = "insert into productos values('" & Cod_Prod & "','" & Nombre & "'," & Existencia & ");"
RS.Open SQL, CN                                           el error me lo marca en esta linea
Next
    
    
    RS.Open "SELECT * FROM PRODUCTOS", CN
 
    If RS.State Then
        Col = 1
    
        For Each Field In RS.Fields
            Cells(1, Col) = Field.Name
            Col = Col + 1
        Next Field
    
        Cells(2, 1).CopyFromRecordset RS
        Set RS = Nothing
    End If

publicado

Contradiciendo un poco al amigo Abraham ?, yo he usado el formato de INSERT que utilizas, es decir, sin utilizar los nombres de las columnas.

Yo me inclino más a creer que el formato de los datos no son los correctos, intuyo, ya que no lo especificas, que las columnas a las que van a parar las variables Cod_Prod, Nombre y Existencia, están definidas en la BD como número, texto y número respectivamente.

Recuerda que las columnas definidas como texto deben ir encerradas entre comillas simples.

Prueba así:

SQL = "insert into productos values('" & Cod_Prod & "',''" & Nombre & "'" & Existencia);"

 

 

 

publicado

Hola

Para nada es contradecir, es más bien corregir una omisión. Gracias. Supongo que por el apuro, asumí que eran solo algunos campos de una tabla, pero es correcto que "Insert Into" funciona de manera correcta solo usando los valores valores a insertar si es que se usan todos los campos de la tabla.

Saludos

Abraham

publicado

revise la taba en el sql server y figuran las columnas cod_prod y nombre de tipo (Varchar)  y existencia de tipo (int) copie lo que envio el maestro Antoni pero sigo sin poder ingresar desde el excel a sql server.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.