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

ListWiev con RS

Estas en el tema de ListWiev con RS en el foro de Visual Basic clásico en Foros del Web. Hola. Tengo programa en el cual el usuario puede elegir 4 opciones depende de que opcion elija en un listview le muestra un listado de ...
  #1 (permalink)  
Antiguo 08/12/2009, 05:46
 
Fecha de Ingreso: julio-2007
Mensajes: 79
Antigüedad: 16 años, 9 meses
Puntos: 0
ListWiev con RS

Hola. Tengo programa en el cual el usuario puede elegir 4 opciones depende de que opcion elija en un listview le muestra un listado de lo elegido
Antes los datos los caragaba en una sola matriz, si elegia la opcion A cargaba los datos de A en la matriz, si elegia B los de B y asi sucesivamente. Con lo que con un listview en comun solo mostraba la matriz que cargaba segun la seleccion del usuario.

'antes asi esto por que la matriz SeEncontro se armaba segun eleccion del usuario
For tt = 1 To opa
Set UnItem = .ListItems.Add(, , AgregarCero(Str(tt), 4))
.ListItems(tt).SubItems(1) = SeEncontro(tt, 0)
.ListItems(tt).SubItems(2) = AgregarCero(SeEncontro(tt, 1), 2)
.ListItems(tt).SubItems(3) = SeEncontro(tt, 2)
.ListItems(tt).SubItems(4) = SeEncontro(tt, 3)
Next

Estuve aprendiendo ADO y hice 4 tablas que por lo que aprendi se manejan con with. El problema se me produce cuando tengo que mandar al listview los datos elegidos por el usuario osea elige una de las 4 tablas y el programa tiene que mandar el listado al listview


For tt = 1 To opa
With Rstabla1
.Requery 'Actualizar la tabla
.Find "numero='" & SeEncontro(tt, 0) & "'" 'Busqueda
.ListItems(tt).SubItems(1) = !ID
.ListItems(tt).SubItems(2) = !Nombre
.ListItems(tt).SubItems(3) = !Cantidad
.ListItems(tt).SubItems(4) = !Lugar
.UpdateBatch
.Requery
End WithNext
Next

El tema que asi me anda solo para la tabla1 si el usuario elige la 2 tengo que hacer otro listview asi por cuants tablas quiera usar. Como hago para que el With cambie segun la eleccion del usuario. Trate de ser lo mas claro posible pero me parece que no me salio. Gracias.
  #2 (permalink)  
Antiguo 08/12/2009, 09:10
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 7 meses
Puntos: 47
Respuesta: ListWiev con RS

Saludos!!
A ver... intenta esto (ajusta los valores):

Public Conexion As ADODB.Connection

Private Sub Command1_Click()
Conecta
Carga_Listview_ADO
Desconecta
End Sub

Sub Conecta()
Set Conexion = New ADODB.Connection
Conexion.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Microsoft Visual Studio\VB98\NWIND.MDB;Persist Security Info=False"
Conexion.Open
End Sub

Sub Desconecta()
If Conexion.State = 1 Then Conexion.Close
Set Conexion = Nothing
End Sub

Sub Carga_Listview_ADO()
Dim strQuery As String
Dim I As Double, Columna As Double, Campo As Double, FD As Field
Dim rsData As ADODB.Recordset

'QUERY
strQuery = "SELECT ProductID,ProductName,QuantityPerUnit FROM [Catalog]"

'ALGUNAS PROPIEDADES DEL LISTVIEW
ListView.ListItems.Clear
ListView.ColumnHeaders.Clear
ListView.View = lvwReport
ListView.LabelEdit = lvwManual
ListView.FullRowSelect = True

Set rsData = New ADODB.Recordset
rsData.Source = strQuery
rsData.Open , Conexion, adOpenDynamic, adLockBatchOptimistic

If rsData.EOF = False Then
DoEvents

Columna = 0
Campo = 0

'CARGAR LAS COLUMNAS
For Each FD In rsData.Fields
ListView.ColumnHeaders.Add Columna + 1, , rsData.Fields(Campo).Name
Columna = Columna + 1
Campo = Campo + 1
rsData.MoveNext
Next

rsData.MoveFirst

'CARGAR LOS DATOS
Do While Not rsData.EOF
Set lsvItem = ListView.ListItems.Add(, , rsData.Fields(0).Value)
For I = 1 To Columna - 1
lsvItem.SubItems(I) = rsData.Fields(I).Value
Next I
rsData.MoveNext
DoEvents
Loop
Else
ListView.ListItems.Clear
ListView.ColumnHeaders.Clear
End If

DoEvents

ListView.SetFocus

rsData.Close
Set rsData = Nothing
End Sub
  #3 (permalink)  
Antiguo 09/12/2009, 00:24
 
Fecha de Ingreso: julio-2007
Mensajes: 79
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: ListWiev con RS

Gracias por contestar lo probare. Cualquiero dudo te vuelvo a molestar. Gracias.
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 02:58.