Visual Basic Foro
Programación => Bases de Datos => Mensaje iniciado por: wolf_kof en Febrero 19, 2012, 12:32:40 pm
-
Muy buenos días a todos, tengo un grave problema con el llenado de datos de un listview aparentemente cuando cargo los datos de esta forma
Sub RellenarNotas()
On Error Resume Next
ListView1.ColumnHeaders.Clear
ListView1.ListItems.Clear
ListView1.ColumnHeaders.Add 1, , "Carnet", 1320
ListView1.ColumnHeaders.Add 2, , "Apellidos y Nombre", 4000
ListView1.ColumnHeaders.Add 3, , "Nota", 700
ListView1.ColumnHeaders(3).Alignment = lvwColumnRight
Do Until Notas.EOF
ListView1.ListItems.Add 1, , Notas!carnet
ListView1.ListItems(1).ListSubItems.Add 1, , Notas!ape_nom
ListView1.ListItems(1).ListSubItems.Add 2, , Notas.Fields("PUN" & Val(t(0).Text))
' Debug.Print Notas.Fields("PUN" & Val(t(0).Text))
Notas.MoveNext
Loop
End Sub
Esta es la sección de codigo que no me funciona muy bien en el listview Notas.Fields("PUN" & Val(t(0).Text)) aparentemente en el Debug.Print todo bien carga los datos y los monta a una caja de texto si deseo, pero en el listview solamente me da un dato en el primer registro del listivew y los demas los deja en blanco.
La tabla tiene campos como PUN1, PUN2, PUN3 y según una caja de texto quiero guardar en esos campos con esa distinción para el llenado de registros
-
Doc, en esta parte:
ListView1.ListItems(1).ListSubItems.Add 2, , Notas.Fields("PUN" & Val(t(0).Text))
Si t(0).Text tiene el valor 15 entonces se traduciría la búsqueda en
ListView1.ListItems(1).ListSubItems.Add 2, , Notas.Fields("PUN15")
y no hay PUN15 pq dices que es hasta 3
-
Simon eso ya esta parametrizado t(0) no puede tener un numero superior a 3. el problema no es hay es en el listview
-
Ah, ok doc, tonses por mi parte no te puedo ayudar mas porque no trabajo con listview, ahorita se aparece algun tigre y te hecha la mano. Suerte.
-
Saludos a Yvan y Wolf_kof !!! ;D
No se wolf. pero ahí algo en el "loop" que no termina de convencerme, pero te dejo la que utilizo para cargar un ListView (que usado bastante, pero estamos en trámites de separación, porque me voy a fugar con MSHFlexGrid, Je, Je ;D). En fin he aquí el código:
Option Explicit
Private lstLi As ListItem
Private Sub Form_Load()
Dim sql As String
Dim rcs As New ADODB.Recordset
'//
With lvwListado
.View = lvwReport
.FullRowSelect = False
.GridLines = True
.LabelEdit = lvwManual
.ColumnHeaders.Add , , "Código", 1100
.ColumnHeaders.Add , , "Artículo", 4440, lvwColumnLeft
.ColumnHeaders.Add , , "Precio Unitario", 1600, lvwColumnRight
.ColumnHeaders.Add , , "Existencia", 1200, lvwColumnRight
.ListItems.Clear
End With
'//
sql = "SELECT * FROM Stock_Articulos"
With rcs
.Open sql, adoConex, 1, 4
Do While Not .EOF
Set lstLi = lvwListado.ListItems.Add(, , Format(.Fields!Codigo, "00000") & "")
lstLi.SubItems(1) = .Fields!articulo & ""
lstLi.SubItems(2) = Format(.Fields!precio, "##,##0.00") & ""
lstLi.SubItems(3) = Format(.Fields!Cantidad, "00")
.MoveNext
Loop
.Close
End With
Set rcs = Nothing
End Sub
Quizás te pueda servir el modelo, a mi me ha servido para todo y también en consultas filtradas.
Saludos !!! ;D
Manuel F. Borrego S. 8)
Barcelona, Venezuela.
-
yo no veo bien la forma en que carga al listview, la forma que se debe cargar es esta:
Dim SItem As ListItem
Dim i As Integer
For i = 1 To 50
Set SItem = ListView1.ListItems.Add(, , "Elemento" & i)
SItem.SubItems(1) = "Subitem " & i
SItem.SubItems(2) = "Subitem " & i
Next
Set SItem = Nothing
veo una mezcla de formas en obtener los valores de los campos del recordset, no uses el .Fields(), ni el famoso "!" (que personalmente odio), el mas simple y suficiente es Notas("tucampo"). tampoco hace falta poner a lo ultimo .Value
PD: agarrense que hoy publico el post que habia prometido hace unos meses, un AMB simple explicado a fondo usando ADO + SQL puro.
saludos.
-
Bueno, dale duro Sebas !!! estaremos esperando tu post para "devorar" más conocimientos, Je, Je ;D !!!
Saludos !!!
-
Excelente............ Gracias Seba yo tambien estoy esprando Seba.
-
Yo lo Hago Asi:
rsADO.Open StrSQL, cnADO, adOpenStatic, adLockOptimistic, adCmdText
Do Until rsADO.EOF
Set Lv = LReportes.ListItems.Add()
With rsADO
Lv.Text = .Fields("codigo")
Lv.SubItems(1) = .Fields("cedula") & ""
Lv.SubItems(2) = .Fields("ruc") & ""
Lv.SubItems(3) = .Fields("empresa") & ""
Lv.SubItems(4) = .Fields("telefono1") & ""
rsADO.MoveNext
End With
Loop