Saltar al contenido

como exportar todos los datos de un listbox a una tabla usando SQL


Recommended Posts

Saludos a todos me pudieran ayudar con este codigo el cual pretende como menciona el encabezado pasar los datos de listbox a una tabla usando sentencias SQL lo intente de esta manera:

ABRIR_RS 'Crea el objeto recordset

Sql = "Select*from [productos$]"

Rs.Open Sql, Cnn, 1, 1

With Lista 'listbox

For i = 0 To .ListCount - 1

Rs.AddNew
Rs!ID = .List(i, 0)
Rs!CODIGO = .List(i, 1)
Rs!ARTICULO = .List(i, 2)
Rs!PVP = .List(i, 3)
Rs!IVA = .List(i, 4)
Rs!MEDIDA = ComboBox1.List(ComboBox1.ListIndex, 0)
Rs!CATEGORIA = ComboBox2.List(ComboBox2.ListIndex, 0)
Rs!STOCK_MINIMO = .List(i, 7)
Rs!ESTATUS = .List(i, 8)

Rs.Update

Next i

End With

CERRAR_RS 'cierra el recordset

si alguno sabe como mejorar el codigo para que funcione se los agradeceria mucho

Enlace a comentario
Compartir con otras webs

Hola @nickmartinez,  cual es el mensaje de error que se genera, hay varias posibilidades. Una de ellas es esta :

image.png.098d795d0c10a1537b4261b9761aa550.png

Este error resulta de la mala apertura de la conexión a la base de datos, puedes intentar cambiar Rs.Open Sql, Cnn, 1, 1 por Rs.Open sql, Cnn, 3, 3, adCmdText 

Tambien puede que estes ingresando texto en un campo numerico, tu código esta bien escrito (solo me queda la duda con las columnas MEDIDA y CATEGORIA), por lo que puede que el error sea de formato o bien lo que indique mas arriba.

Saludos.

Enlace a comentario
Compartir con otras webs

@nickmartinez, sucede lo siguiente, cuando cargas el formulario primero ejecutas un procedimiento para ingresar los encabezados de las columnas en el listbox, esos encabezados son básicamente el problema ya que en esta línea For I = 0 To .ListCount - 1, al iniciar desde la fila 0 estas ingresando el encabezado, la columna ID solo admite números pero le estas ingresando la palabra "ID".

Para solucionar esto solo debes modificar la línea así: For I = 1 To .ListCount - 1 , con esto vamos a saltarnos los encabezados.

Por otra parte si vas a manejar los datos directamente en la hoja de excel no veo necesidad de utilizar SQL (dadas sus limitaciones con respecto a Access o SQL Server), por ejemplo puedes sustituir ese código por este:

Private Sub SQL_Registrar()
Dim ult#, I#
With Sheets("Productos")

For I = 1 To Lista.ListCount - 1

ult = .Range("A" & .Rows.Count).End(xlUp).Row + 1

.Cells(ult, "A") = Lista.List(I, 0)
.Cells(ult, "B") = Lista.List(I, 1)
.Cells(ult, "C") = Lista.List(I, 2)
.Cells(ult, "D") = Lista.List(I, 3)
.Cells(ult, "E") = Lista.List(I, 4)
.Cells(ult, "F") = ComboBox1.List(ComboBox1.ListIndex, 0)
.Cells(ult, "G") = ComboBox2.List(ComboBox2.ListIndex, 0)
.Cells(ult, "H") = Lista.List(I, 7)
.Cells(ult, "I") = Lista.List(I, 8)
Next
End With

End Sub

Yo utilizaria SQL solo para realizar consultas, para agregar o modificar datos utilizaria el código nativo de VBA.

Saludos.

Enlace a comentario
Compartir con otras webs

Muchas gracias alexander,me sirvio tu explicacion,por otra parte uso sql y no vba por que a futuro pienso migrar la base de datos a access ya que aun nomanejo otro,por lo tanto me gustaria como saber hacer las cosas con sql para cuando migre  aaccess o otro manejador de datos,tema cerrado gracias ¡ mil GRACIAS !

Enlace a comentario
Compartir con otras webs

Hola nickMartinez y demás,

Le he echado una ojeado a la excel y lo tienes fácil convertir la excel a access. Y das el paso a Access, que te gustará.

Yo creo que para manejo de datos es mejor usar Access.

He hecho en cinco minutos una base de datos con un formulario y una consulta (echale una ojeado para ver como funciona SQL de access) y los wizards de access 2010 y mas te ayudaran en los primeros pasos. Es el primer ladrillo para una casa bien bonita.:rolleyes:

Database1.rar

Enlace a comentario
Compartir con otras webs

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.