Visual Basic - Como mostrar valores de una tabla de una lista a otra VB 6.0

Life is soft - evento anual de software empresarial
 
Vista:

Como mostrar valores de una tabla de una lista a otra VB 6.0

Publicado por javier (13 intervenciones) el 13/05/2014 12:15:43
Buenas, he estado buscando la respuesta por la web, encontré muchos sitios relacionados, pero ninguno me deja claro como resolver mi duda, veréis, tengo dos listas, me gustaría poder seleccionar un valor de list1 y dándole a un botón, o seleccionando dicho valor en la lista, me haga una consulta con este dato y me muestre el valor recogido en la siguiente lista, un ejemplo para que lo entendáis:

Imaginemos que tengo dos listas list1 y list2 y dos tablas proveedor y artículos, Cuando hago clic en un botón me pinta en list1 los valores recogidos por una consulta que le he puesto (datos de la tabla proveedor), lo único que necesito es poder seleccionar UN valor de list 1(solo uno, no necesito multiselect) y que al seleccionarlo, o seleccionándolo y dándole a un botón y que me pinte en list2 los artículos de el proveedor seleccionado en la list1, es decir coger el dato seleccionado en list1, meter el valor recogido de list1 en una consulta y añadir a list2 el dato recogido.

Espero haberme explicado bien, gracias a todos por vuestro tiempo.
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

Como mostrar valores de una tabla de una lista a otra VB 6.0

Publicado por javier (13 intervenciones) el 16/05/2014 11:13:53
Hola de nuevo, he seguido profundizando en mi problema, y he conseguido acercarme bastante a lo que quiero, el problema es que el botón que he creado no funciona por algún motivo, paso el código con la explicación de este y a ver si alguien puede resolverlo:

Básicamente lo que tendría que hacer este botón es esto:

Utilizo un for para contar cuantos valores tiene mi lista, luego con un if le digo si hay un ítem seleccionado, si lo hay, hago la consulta con el valor del ítem seleccionado en list1 para que me añada a la list 2 el campo deseado gracias a la consulta sino selecciona ningún ítem le digo que me meta en list 2 un mensaje que le pida al usuario seleccionar un ítem de list1.

Y este es el código (el error es el 3021,el valor de BoF y EoF es true o el actual registro se eliminó y lo marca en el rs.fields("ARTICULOS QUE COMERCIALIZA"):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub Comlista_Click()
Dim i As Integer
For i = 0 To List1.ListCount - 1
If List1.Selected(i) = True Then
rs.Close
rs.Open "select * from PROVEEDORES where PROVEEDOR like '" & List1.ItemData(List1.ListIndex) & "'", db, adOpenDynamic, adLockOptimistic
List2.Clear
 
List2.AddItem (rs.Fields("ARTICULOS QUE COMERCIALIZA"))
 
Else
List2.Clear
List2.AddItem ("seleccione un valor de list1")
 
End If
Next
End Sub

Gracias a todos.
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

Como mostrar valores de una tabla de una lista a otra VB 6.0

Publicado por javier (13 intervenciones) el 26/05/2014 11:22:13
Problema resuelto, solo tuve que indagar y romperme la cabeza un poco mas, veréis hay varias formas de hacer esto, no he escogido la mas óptima, pero funciona a la perfección y sin errores, solo tuve que crear un nuevo cuadro de texto (text3.text) para capturar el valor seleccionado de la list1 y posteriormente hacer una consulta sobre ese text3.text y añadir el articulo a list2.

Dejo el código por si alguien no tiene tiempo para pensar o tiene el mismo problema:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub List1_Click()
Dim i As Integer
List2.Clear
For i = 0 To List1.ListCount - 1
If List1.Selected(i) Then
Text3.Text = List1.Text
rs.Close
rs.Open "select * from PROVEEDORES where PROVEEDOR like '%" & Text3.Text & "%'", db, adOpenDynamic, adLockOptimistic
List2.AddItem (rs.Fields("ARTICULOS QUE COMERCIALIZA"))
 
 
End If
Next i
 
End Sub

Gracias y espero que sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve
Val: 107
Ha disminuido su posición en 2 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Como mostrar valores de una tabla de una lista a otra VB 6.0

Publicado por xve (208 intervenciones) el 26/05/2014 13:45:48
Gracias por compartirlo Javier!!!
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 Wilfredo Patricio Castillo
Val: 8
Ha aumentado su posición en 9 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Como mostrar valores de una tabla de una lista a otra VB 6.0

Publicado por Wilfredo Patricio Castillo (260 intervenciones) el 26/05/2014 21:22:41
Que bueno que hayas solucionado tu problema, pero déjame decirte que lo que aparentemente está resuelto te dará problemas mas adelante, ya que estás invocando un LIKE, lo cual implica que cuando tengas un proveedor con datos muy parecidos y si estás primero que el que seleccionaste te arrojará valores incorrectos.

El asunto es que tienes que indicar que datos exactamente es el que muestras en el List1, si es el IdProveedor, solamente tendrías que hacer el select Where IdProveedor= tu IdProveedor, pero si es el nombre pues con el like que estás haciendo te traerá todos los datos que incluyan lo que estás enviando en el textbox3.

Por otro lado, si solo es cuestión de mostrar datos, pues no te recomiendo que uses un recordset dinámico sino mas bien un estático y que pongas un adLockReadOnly, que con eso si sería lo óptimo.

Otra cosa también, y que pasará cuando tengas 500 o mil proveedores?, te pasarás contando fila por fila como lo estás haciendo en este momento? y te pondrás a bajar fila por fila buscando donde está el que buscas para seleccionarlo?.

No implementes algo pensando el los 3 o 4 registros de pruebas que estás haciendo, sino en la cantidad que puede llegar a tener y eso sería inmanejable como lo estás planteando, hay maneras mas óptimas de hacerlo.

Espero te sirva la recomendación.

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

Como mostrar valores de una tabla de una lista a otra VB 6.0

Publicado por javier (13 intervenciones) el 30/05/2014 10:58:36
Muchas gracias por tu consejo y tu aporte, ahora estoy haciendo el programa con una base de datos pequeña, a lo mejor si lo paso a la grande me da algún error, espero que eso no sea así, por que sino mi trabajo de 2 meses se habrá ido al traste.... empece con esto hace 2 meses, no tenia ni idea de visual y se poco de programar, pero ya termine el programa de consultas, se lo que quieres decirme, pero solo se hacerlo de esta manera, se que hay una forma mas optima pero de momento trabajo con lo que tengo y lo que se. aún así muchas gracias intentare investigar como optimizarlo para proximos proyectos.

Saludos

PD: Si puedes ponerme un link de alguna pagina donde explique lo que dices me haces un gran favor :D
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 Wilfredo Patricio Castillo
Val: 8
Ha aumentado su posición en 9 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Como mostrar valores de una tabla de una lista a otra VB 6.0

Publicado por Wilfredo Patricio Castillo (260 intervenciones) el 30/05/2014 18:07:25
Hola

Pues, si vas a buscar información de VB6.0, ya creo que poca encontrarás, con decirte que ni de VB.NET hay mucha, toda la info casi está centrada en C#.

Pero bueno, muchas veces no se encuentra la respuesta a nuestros problemas pero si las maneras de como abordar un problema.
Para evitar de traerte toda la tabla de proveedores, que como ya te dije puedes ser 10 o pueden ser miles dependiendo del tipo de negocio, entonces lo que puedes hacer es en vez del list1 un datagrid y un textbox.

El textbox te serviría para hacer la búsqueda por nombre

Entonces puedes hacer algo así:

Rst1.Open "Select IdProveedor,NombreProveedor From Proveedores Where NombreProveedor LIKE Aquí pones TextBox.text",blablabla,blalbala
Set datagrid.datasource=Rst1

Eso te traerá solo los 2 o 5 que tengan nombres parecidos y los mostrará en el datagrid.

En el datagrid puedes darle doble clic en el idproveedor y capturar ese idproveedor.

Teniendo el IdProveedor que lo puedes pasar como parámetro al form2 o si no sabes puedes declarar una variable pública (que no es lo recomendado) para ese idproveedor y en el load del form2, harías un Rst2.Open "Select Fecha,NumDocumento From Documentos Where IdProveedor=idProveedor",blablabla

Como en el form2 también tendrás un datagrid, solo te quedaría hacer:
Set datagrid2.datasource=rst2

Con lo cual tendrás los datos de los documentos de ese proveedor y mostrado en un datagrid que se ve mas elegante sobre todo si lo personalizas muy bien y te olvidas del problema que si son 10 a mil y el estar buscando linea por linea cual escoger para seleccionarlo.

Bueno espero que esta idea te sirva para mejorar lo que ya tienes.

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