Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Error 2147217904 (80040e10)

Estas en el tema de Error 2147217904 (80040e10) en el foro de Visual Basic clásico en Foros del Web. Buenas, ando complicado con este error.. el tema es que desde vb6 leo un archivo Excel, le saco los datos que necesito y luego quiero ...
  #1 (permalink)  
Antiguo 08/11/2010, 05:01
 
Fecha de Ingreso: junio-2008
Ubicación: Punta Alta, Argentina
Mensajes: 82
Antigüedad: 15 años, 11 meses
Puntos: 0
Error 2147217904 (80040e10)

Buenas, ando complicado con este error.. el tema es que desde vb6 leo un archivo Excel, le saco los datos que necesito y luego quiero actualizarle unos campos... pero me sale el susodicho error...

aca esta la conexion, se utiliza al excel como una tabla

Código:
With cnn
        .Provider = "MSDASQL"
        .ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _
        "DBQ=" & Trim(sFichero) & "; ReadOnly=False;"
        cnn.Open
End With
este es la sensencia donde salta el error

Código:
Dim cmd As New ADODB.Command, sModif As String
sModif = "UPDATE [datos$A1:BH150] SET [F16]=" & (rs(16).Value + 1) & ""
sModif = sModif & " ,[f17]=" & (cbMes.ListIndex + 1) & ""
sModif = sModif & " ,[f18]=" & Int(tbCamp.Text) & ""
sModif = sModif & " ,[f19]=" & (rs(16).Value) + 1 & ""
sModif = sModif & " ,[f20]='" & (chRegistrador(g).Caption) & "'"
sModif = sModif & " ,[f21]=#" & Format(tbFecha(0).Text, "dd/mm/yyyy") & "#"
sModif = sModif & " ,[f22]=#" & Format(tbFecha(1).Text, "dd/mm/yyyy") & "#"
sModif = sModif & " ,[f30]='" & (tbNombre(g).Text) & "'"
sModif = sModif & " WHERE [f0] ='" & (sTexto2) & "'"
MsgBox (sModif)
cmd.CommandType = adCmdText
cmd.CommandText = sModif
cmd.ActiveConnection = cnn
cmd.Execute 'aca salta el error

.
y el error que salta es el Error 2147217904 (80040e10) .... Se esperaba : 9
  #2 (permalink)  
Antiguo 11/11/2010, 05:36
 
Fecha de Ingreso: junio-2008
Ubicación: Punta Alta, Argentina
Mensajes: 82
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Error 2147217904 (80040e10)

nadie para ayudarme?
agrero que con esa conexion puedo leer datos de ese mismo excel.

Última edición por fesero; 11/11/2010 a las 10:03
  #3 (permalink)  
Antiguo 15/11/2010, 07:05
 
Fecha de Ingreso: junio-2008
Ubicación: Punta Alta, Argentina
Mensajes: 82
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Error 2147217904 (80040e10)

vamos gente.. necesito ayuda..
  #4 (permalink)  
Antiguo 15/11/2010, 11:54
Avatar de Gakex  
Fecha de Ingreso: enero-2009
Mensajes: 137
Antigüedad: 15 años, 3 meses
Puntos: 4
Respuesta: Error 2147217904 (80040e10)

Una pregunta

has utilizado la instruccion "On Error Resume Next" antes del error?
  #5 (permalink)  
Antiguo 16/11/2010, 09:58
 
Fecha de Ingreso: junio-2008
Ubicación: Punta Alta, Argentina
Mensajes: 82
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Error 2147217904 (80040e10)

no lo he usado, pero si mal no entiendo, con esa instruccion hago que el proceso siga corriendo, pero no me va a solucionar el problema..
yo lo que quiero es que me guarde los datos que toman de las variables en las celdas respectivas de un excel.
aclaro tambien que al excel lo abro con un recordset
  #6 (permalink)  
Antiguo 16/11/2010, 11:03
Avatar de Gakex  
Fecha de Ingreso: enero-2009
Mensajes: 137
Antigüedad: 15 años, 3 meses
Puntos: 4
Respuesta: Error 2147217904 (80040e10)

bueno pues si, efectivamente, On Error Resume Next no reuelve el problema solo lo ignora y continua con con la siguiente linea, no estoy 100% seguro del porque de estos errores, pero general mente suelen pasar al agregar un registro en la base de datos, lo que creo es que talvez los datos que se van a agregar en la base de datos no estan bien manejados dentro de la cadena SQL.

Nunca he usado Exel como base de datos pero pues trato de ayudar haciedo deducciones.

Este es un error muy oculto, y al checar errores hay que ir desde el inicio.

1 primero checar que se aga la coneccion.
2 luego dices que antes extraes una información?, te da esa informacion?,

si me dices que si hasta este punto esta todo bien.

ahora verifica esto

1 cierras la conección antes de pasar a el sigiente punto que es agregar datos.?
2 aqui hay que checar los tipos de datos que vas a agregar, es decir realmente son numeros, fechas o texto?, si no pero son compatibles combertirlos.

checalo y hablamos...
  #7 (permalink)  
Antiguo 16/11/2010, 23:13
 
Fecha de Ingreso: junio-2008
Mensajes: 343
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: Error 2147217904 (80040e10)

Te sugiero que pruebes actualizando un tabla con 2 campos, quizas vb6 no te acepte la forma en que lo haces.
  #8 (permalink)  
Antiguo 17/11/2010, 05:07
 
Fecha de Ingreso: junio-2008
Ubicación: Punta Alta, Argentina
Mensajes: 82
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Error 2147217904 (80040e10)

Cita:
Iniciado por Gakex Ver Mensaje
1 primero checar que se aga la coneccion.
2 luego dices que antes extraes una información?, te da esa informacion?,
si, la conexion se hace, probe con la que esta mas arriba y con la de microsoft JET, esta ultima tambien sale el mismo error en el mismo lugar pero no especifica que parametro falta..

ahora verifica esto
Cita:
Iniciado por Gakex Ver Mensaje
1 cierras la conección antes de pasar a el sigiente punto que es agregar datos.?
2 aqui hay que checar los tipos de datos que vas a agregar, es decir realmente son numeros, fechas o texto?, si no pero son compatibles combertirlos.

checalo y hablamos...

pongo todo el codigo del sub donde sale el error

Código:
Private Sub cmbComp_Click()


Dim g As Integer, sTexto As String, sArchOrig As String, sArchGuar As String, sADEc As String, iX As Integer, sTexto2 As String
Set cnn = New ADODB.Connection
sFichero = "C:\z Procesador Registradores\programa.xls"
If cnn.State <> 1 Then
    'With cnn
    '    .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & sFichero & "';Extended Properties=Excel 8.0;; " 'HDR=YES;"
    '    .Open
    '    .CursorLocation = adUseClient
    'End With
    With cnn
        .Provider = "MSDASQL"
        .ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _
        "DBQ=" & Trim(sFichero) & "; ReadOnly=False;"
        cnn.Open
    End With
End If
Set rs = New ADODB.Recordset 'B160049
'sBus = "SELECT * FROM [datos$A1:BH150]" ' ORDER BY COD-OC"
rs.Open "SELECT * FROM [datos$A1:BH150]", cnn, adOpenDynamic, adLockOptimistic, adCmdText
Set xlsApp = CreateObject("Excel.Application")
sArchOrig = "C:\z Procesador Registradores\Orig\Planilla.xls"
sArchGuar = "C:\z Procesador Registradores\Cronograma\ "
Set xlsBook = xlsApp.Workbooks.Open(sArchOrig)
Set xlsSheet = xlsBook.Worksheets(1)
sADEc = sArchGuar & "P" & tbPer.Text & "_" & cbMes.Text & "_C" & tbCamp.Text
xlsBook.SaveAs (sADEc)
For g = 0 To 4
    sTexto = Trim$(QuitaEspacios(tbCodigo(g).Text, True, True))
    If chRegistrador(g).Value = 1 Then
        Select Case g
            Case Is = 0: iX = 0
            Case Is = 1: iX = 12
            Case Is = 2: iX = 12 * 2
            Case Is = 3: iX = 12 * 3
            Case Is = 4: iX = 12 * 4
            Case Is = 5: iX = 12 * 5
        End Select
        sTexto2 = "S032" & sTexto
        sFiltro = "[COD-OC] = '" & sTexto2 & "'"
        rs.Filter = sFiltro
        If rs.RecordCount = 0 Then
            vComprobar(g) = 1
        Else
            If rs(14).Value = "B" Or rs(14).Value = "G" Then
                xlsSheet.Cells(2 + iX, 7) = rs(0).Value 'codigo
                xlsSheet.Cells(3 + iX, 2) = chRegistrador(g).Caption 'Nº Reg
                xlsSheet.Cells(3 + iX, 5) = tbPer.Text 'periodo
                xlsSheet.Cells(3 + iX, 7) = "00" 'remedido
                xlsSheet.Cells(4 + iX, 2) = tbCamp.Text 'campaña
                xlsSheet.Cells(4 + iX, 4) = rs(8).Value 'tarifa
                xlsSheet.Cells(4 + iX, 7) = rs(9).Value 'tension
                xlsSheet.Cells(5 + iX, 2) = rs(6).Value 'nombre
                xlsSheet.Cells(5 + iX, 7) = rs(5).Value 'Nº Socio
                xlsSheet.Cells(6 + iX, 2) = rs(7).Value 'domicilio
                xlsSheet.Cells(6 + iX, 7) = rs(4).Value 'ruta
                xlsSheet.Cells(7 + iX, 3) = Format(tbFecha(0).Text, "dd/mm")  'desde
                xlsSheet.Cells(7 + iX, 7) = rs(15).Value 'sum
                xlsSheet.Cells(10 + iX, 3) = Format(tbFecha(1).Text, "dd/mm")  'hasta
                xlsSheet.Cells(11 + iX, 2) = cbVariables(g).Text 'variables
                xlsSheet.Cells(11 + iX, 7) = "" 'set
                xlsSheet.Cells(12 + iX, 2) = cbPinza(g).Text 'pinza
                xlsSheet.Cells(12 + iX, 4) = rs(3).Value 'punto
                xlsSheet.Cells(12 + iX, 6) = tbNombre(g).Text 'fichero
            ElseIf rs(14).Value = "SE" Then
                xlsSheet.Cells(2 + iX, 7) = rs(0).Value 'codigo
                xlsSheet.Cells(3 + iX, 2) = chRegistrador(g).Caption 'Nº Reg
                xlsSheet.Cells(3 + iX, 5) = tbPer.Text 'periodo
                xlsSheet.Cells(3 + iX, 7) = "00" 'remedido
                xlsSheet.Cells(4 + iX, 2) = tbCamp.Text 'campaña
                xlsSheet.Cells(4 + iX, 4) = rs(10).Value 'potencia
                xlsSheet.Cells(4 + iX, 7) = rs(11).Value 'tipo
                xlsSheet.Cells(5 + iX, 2) = rs(6).Value 'nombre
                xlsSheet.Cells(5 + iX, 7) = "0" 'Nº Socio
                xlsSheet.Cells(6 + iX, 2) = rs(7).Value 'domicilio
                xlsSheet.Cells(6 + iX, 7) = "0" 'ruta
                xlsSheet.Cells(7 + iX, 3) = Format(tbFecha(0).Text, "dd/mm")  'desde
                xlsSheet.Cells(7 + iX, 7) = Mid(rs(6).Value + iX, 9 + iX, 2) 'sum
                xlsSheet.Cells(10 + iX, 3) = Format(tbFecha(1).Text, "dd/mm")  'hasta
                xlsSheet.Cells(11 + iX, 2) = cbVariables(g).Text 'variables
                xlsSheet.Cells(11 + iX, 7) = Mid(rs(6).Value + iX, 9 + iX, 2) 'set
                xlsSheet.Cells(12 + iX, 2) = cbPinza(g).Text 'pinza
                xlsSheet.Cells(12 + iX, 4) = rs(3).Value 'punto
                xlsSheet.Cells(12 + iX, 6) = tbNombre(g).Text 'fichero
            End If
            vComprobar(g) = 2
            If chGrabar.Value = 1 Then
                Dim cmd As New ADODB.Command, sModif As String
                'intento de "actualizar" el unico registro modificado
                sModif = "UPDATE [datos$A1:BH150] SET [F16]=" & (rs(16).Value + 1) & ""
                sModif = sModif & " ,[f17]=" & (cbMes.ListIndex + 1) & ""
                sModif = sModif & " ,[f18]=" & Int(tbCamp.Text) & ""
                sModif = sModif & " ,[f19]=" & (rs(16).Value) + 1 & ""
                sModif = sModif & " ,[f20]='" & (chRegistrador(g).Caption) & "'"
                sModif = sModif & " ,[f21]=" & Format(tbFecha(0).Text, "yyyy-mm-dd") & ""
                sModif = sModif & " ,[f22]=" & Format(tbFecha(1).Text, "yyyy-mm-dd") & ""
                sModif = sModif & " ,[f30]='" & (tbNombre(g).Text) & "'"
                sModif = sModif & " WHERE [f0] LIKE '" & (sTexto2) & "'"
                MsgBox (sModif) ' veo como queda la sentencia sql
                cmd.CommandType = adCmdText
                cmd.CommandText = sModif
                cmd.ActiveConnection = cnn
                'cmd.ActiveConnection.Open
                cmd.Execute
                
                vComprobar(g) = 3
            End If
        End If
    Else
        vComprobar(g) = 0
    End If
    rs.Filter = adFilterNone
Next
Dim y As Integer
For y = 0 To 4
    If vComprobar(y) = 0 Then
        shCuad(y).BackColor = &HFF0000
    ElseIf vComprobar(y) = 1 Then
        shCuad(y).BackColor = &HFF&
    ElseIf vComprobar(y) = 3 Then
        shCuad(y).BackColor = &H800080
    Else
        shCuad(y).BackColor = &HC000&
    End If
    shCuad(y).BackStyle = 1
Next
xlsBook.Save
xlsBook.Close



End Sub
  #9 (permalink)  
Antiguo 23/11/2010, 04:24
 
Fecha de Ingreso: junio-2008
Ubicación: Punta Alta, Argentina
Mensajes: 82
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Error 2147217904 (80040e10)

nadie quiere ayudaar?
  #10 (permalink)  
Antiguo 23/11/2010, 06:21
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Error 2147217904 (80040e10)

No es que yo entienda, pero dado que nadie te lo soluciona intentaré buscar algo simple que te pueda fallar:
No te faltan comillas simples aqui?
'" & (cbMes.ListIndex + 1) & "'"
si es un combo devolverá un string

sModif = "UPDATE [datos$A1:BH150] SET [F16]=" & (rs(16).Value + 1)
sModif = sModif & " ,[f17]='" & (cbMes.ListIndex + 1) & "'"
sModif = sModif & " ,[f18]=" & Int(tbCamp.Text)
sModif = sModif & " ,[f19]=" & (rs(16).Value) + 1
sModif = sModif & " ,[f20]='" & (chRegistrador(g).Caption) & "'"
sModif = sModif & " ,[f21]=#" & Format(tbFecha(0).Text, "dd/mm/yyyy") & "#"
sModif = sModif & " ,[f22]=#" & Format(tbFecha(1).Text, "dd/mm/yyyy") & "#"
sModif = sModif & " ,[f30]='" & (tbNombre(g).Text) & "'"
sModif = sModif & " WHERE [f0] ='" & (sTexto2) & "'"

MsgBox (sModif)

Saludos
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!

Última edición por pkj; 27/11/2010 a las 09:42

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:25.