Visual Basic - insertar

Life is soft - evento anual de software empresarial
 
Vista:

insertar

Publicado por praetoriano (86 intervenciones) el 26/07/2004 10:23:48
Hola y gracias por su atencion, he acudido a ustedes para a ver si me pueden ayudar, miren tengo un codigo que quiero q me haga los siguiente, que me inserte una una tabla de una base de datos elemenosts de dos listas que tengo en un formulario, mire aqui esta el codigo:

Dim db As Database
Dim rs As Recordset
Dim num_informe As Integer
Set db = OpenDatabase(App.Path & "\buscarinformes.mdb") 'nombre de la base de datos *nombrebasedatos*
Set rs = db.OpenRecordset("informes") 'nombre de la tabla es *nombretabla*
For num_informe = 0 To List2.ListCount - 1
rs.AddNew
rs.Fields("nombreinforme") = List1.List(List1.ListIndex) 'el campo es *basededatos*
rs.Fields("nombrebd") = List2.List(num_informe) 'el campo es *informe*
rs.Update
Next num_informe
rs.Close
db.Close

Pero el problema es que me da un fallo en la linea del update y no se porque, me pueden ayudar??
Me dice que que "no puede ser una cadena de longitud cero"
Por favor, me pueen ayudar. Gracias.
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

RE:insertar

Publicado por Skrank (99 intervenciones) el 26/07/2004 11:32:08
Hola que tal.
Es posible que el error esté en el siguiente código:
rs.Fields("nombreinforme") = List1.List(List1.ListIndex)
para que no de el error que mencionas deve de haber en List1 algún texto seleccionado, si no dará el siguiente error:
El campo 'informes.nombreinforme' no puede ser una cadena de longitud cero'
Teniendo algún ïten seleccionado el código funciona perfectamente, pero todos los registros tendrán en el campo "nombreinforme" el mismo contenido.
Espero que te haya servido de ayuda
Un saludo
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

RE:insertar

Publicado por praetoriano (86 intervenciones) el 26/07/2004 12:02:38
Gracias por tu ayuda, me ha servido y he probado, y si lo seleccion va bien, pero no busco esto exactamente. lo que busco es que los elementos de las dos llistas (todos los elementos, no solo los seleccionados) se introduzcan. Aparte lo que tengo en las listas son bases de datos ( en una lista), y infomres ( en otra lista) estos informes son de las bases de datos y lo que quiero es introducir el nombre del infomre con el nombre de la base de datos al que pertenezca este informe, Me puedes ayudar?? Gracias.
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

RE:insertar

Publicado por POLA (522 intervenciones) el 26/07/2004 15:32:33
Buenas tardes, ya que has creado un bucle porque no aprovechas la variable que recorre el bucle, yo modificaria lo siguiente:

For num_informe = 0 To List2.ListCount - 1
rs.AddNew
rs.Fields("nombreinforme") = List1.List(num_informe) 'el campo es *basededatos*
rs.Fields("nombrebd") = List2.List(num_informe) 'el campo es *informe*
rs.Update
Next num_informe

Creo que el problema esta en el codigo, List1.ListIndex, el código que te he puesto, funcionaria si hay los mismos elementos en los dos ListBox. En el caso contrario que hubiera mas informes que bases de datos, deberás de recorrer tambien el ListBox de la base de datos. Espero haberme explicado.

Si necesitas alguna aclaracion al respecto me lo indicas.

Saludos Pola
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

RE:insertar

Publicado por praetoriano (86 intervenciones) el 26/07/2004 16:07:07
Gracias POLA, si necesito q me aclares otra cosa, y es pq tengo mas elementos en una lista mas que en la otra y no se como iria colocado el otro bucle, mira yo te pongo como lo tengo ok? Gracias, espero que me puedas ayudar. Este es mi codigo:

Dim db As Database
Dim rs As Recordset
Dim num_informe As Integer
Set db = OpenDatabase(App.Path & "\buscarinformes.mdb") 'nombre de la base de datos *nombrebasedatos*
Set rs = db.OpenRecordset("informes") 'nombre de la tabla es *nombretabla*
For num_informe = 0 To List2.ListCount - 1
rs.AddNew
rs.Fields("nombreinforme") = List1.List(num_informe) 'el campo es *basededatos*
rs.Fields("nombrebd") = List2.List(num_informe) 'el campo es *informe*
rs.Update
Next num_informe
rs.Close
db.Close

Me sale el mismo error. como podria hacerlo para que no me saliera. Gracias
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

RE:insertar

Publicado por Skrank (99 intervenciones) el 26/07/2004 16:04:34
Hola.
Lo único que se me ocurre es que introduzcas los registros uno a uno, porque en un principio no se la relación de cada ítem del List1 con cada ítem de List2. Veamos, seleccionas los contenidos en Lis1 y List2 y al pulsar en un botón de comando que haga lo siguiente:
rs.AddNew
rs.Fields("nombreinforme") = List1.List(List1.ListIndex) 'el campo es *basededatos*
rs.Fields("nombrebd") = List2.List(List2.ListIndex) 'el campo es *informe*
rs.Update
De esta forma añadimos un informe y el nombre de la base de datos al que pertenece.
Si el List1 y List2 tienen muchos tienen muchos ítems será muy engorroso.
Un saludo
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

RE:insertar

Publicado por praetoriano (86 intervenciones) el 26/07/2004 16:14:05
Gracias por tu ayuda Skrank, pero asi no me da ningun error pero no me inserta nada. Gracias por tu ayuda. Probare a ver.
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