none
listview vb 6.0 RRS feed

  • Pregunta

  • Buenos dias colegas,

    Tengo un listview el cual me trae informacion de una base de datos, tomando en cuenta que el listwiew funciona como una hoja excel, dicha informacion que traigo son nombres y numeros telefonicos, tengo un formulario el cual es para envio de sms, lo que significa que cuando yo quiera enviar un sms en un boton enviar me debe jalar de ese listview solo los datos que yo con el teclado y o mouse haya seleccionado, como haria en ese caso??

    Les muestro el codigo elaborado para mas detalles y sirva para aquellos colegas que necesitan llenar un listview desde una bd y no sepan.

    --llamo el listview desde el formulario
    Private Sub Form_Load()
    Dim rs As New ADODB.Recordset
    Dim sql As String

    ' Eliminar las cabeceras
    Lst_usuarios.ColumnHeaders.Clear
    '
    ' Asignar las cabeceras
    With Lst_usuarios.ColumnHeaders.Add(, , "Nombre", 2400)

    End With
    With Lst_usuarios.ColumnHeaders.Add(, , "Telefono", 2000, lvwColumnRight)

    End With


    TIPO_EVENTO = 1
    --abro bd
    g_db.Open "driver={SQL Server};server=SERVIDOR2;uid=profit;pwd=profit;dat abase=Prueba1"

    '-- llena el combo de Usuarios
    --selecciono la tabla y los campos que deseo se muestren
    sql = "select nombre_persona, numero_persona from persona order by nombre_persona"
    rs.Open sql, g_db
    --recorro el recorset
    Do While Not rs.EOF
    If Not IsNull(rs.Fields.Item(0).Value) Then
    With Lst_usuarios.ListItems.Add(, , rs.Fields.Item(0).Value)
    ' Cada subitem debe corresponder con cada una de las cabeceras
    ' la segunda cabecera es el Subitems(1) y así sucesivamente
    .SubItems(1) = rs.Fields.Item(1).Value
    End With
    End If
    rs.MoveNext
    Loop
    rs.Close

    g_db.Close

    End Sub

    obviamente la sentencia que necesito se debe ejecutar en el comand enviar
    miércoles, 25 de abril de 2012 15:17

Todas las respuestas

  • Hola,

    Para traer los datos del item seleccionado en el listview se usa el siguiente codigo:

    ListView.ListItems.Item(ListView.SelectedItem.index).SubItems(x)

    Para tu caso el telefono lo estas guardando en el subitem 1, por lo tanto para tomar el telefono del item seleccionado en el listview seria:

    Telefono=Lst_usuarios.ListItems.Item(Lst_usuarios.SelectedItem.index).SubItems(1)

    miércoles, 25 de abril de 2012 16:29
  • Hola, yo te recomendaría usar el hierachical flex grid es mas rápido para cargar tu data.

    Pedro Avila

    miércoles, 25 de abril de 2012 21:03
  • gracias por el aporte colegas.

    Nuevamente tengo una duda en el siguiente codigo que les voy anexar estoy intentando guardar los datos que se marquen en el listview en una bd, tengo esto pero obvio no me hace nada

    For i = 1 To Lst_usuarios.ListItems.Count

    nombre = Lst_usuarios.ListItems.Item(Lst_usuarios.SelectedItem.Index).SubItems(i)
    telefono = Lst_usuarios.ListItems.Item(Lst_usuarios.SelectedItem.Index).SubItems(i)
    SQL = "INSERT INTO persona_envios (persona_envio, numero_envio, Texto_mensaje) VALUES ( '" & nombre & "', " & telefono & "','" & txt_mensaje.Text & "' )"
    g_db.Execute SQL
    Next i

    rs.Open SQL, g_db
    rs.Close
    g_db.Close

    La idea seria que los datos que yo marque en el listbox en conjunto con una informacion en el textbox se guarden en la bd, he intentado ya de varias maneras y bueno se imaginaran que soy nueva en esto y estoy algo bastante perdida.

    jueves, 26 de abril de 2012 22:02
  • perdon no es en el litbox ERROR es en el lisview
    jueves, 26 de abril de 2012 22:02
  • Hola,

    Proba con este codigo:

    For i = 1 To Lst_usuarios.ListItems.Count
        If Lst_usuarios.ListItems.Item(i).Selected Then
            nombre = Lst_usuarios.ListItems.Item(i)
            telefono = Lst_usuarios.ListItems.Item(i).SubItems(1)
            SQL = "INSERT INTO persona_envios (persona_envio, numero_envio, Texto_mensaje) VALUES ( '" & nombre & "', " & telefono & "','" & txt_mensaje.Text & "' )"
            g_db.Execute SQL
        End If
    Next i

    Tengo dudas si es:

    nombre = Lst_usuarios.ListItems.Item(i)

    o

    nombre = Lst_usuarios.ListItems.Item(i).SubItems(0)

    viernes, 27 de abril de 2012 18:26
  • es este nombre = Lst_usuarios.ListItems.Item(i)

    ya que 0 vendria siendo la cabecera del list view, ahora ya lo estaba usando asi, pero tengo un problema con el txt no lo guarda, le doy mil vueltas para ver dopnde esta el error, por que no me lo esta tomando y nada, el nombre del txt es tal cual, me guarda los datos de el nombre el telefono mas no de algunos que marco y el texto no me lo guarda me quedo asi

    For i = 1 To Lst_usuarios.ListItems.Count
        If Lst_usuarios.ListItems.Item(i).Selected Then
                nombre = Lst_usuarios.ListItems.Item(i)
            telefono = Lst_usuarios.ListItems.Item(i).SubItems(1)

        SQL = "INSERT INTO persona_enviados (persona_envio, numeros_envio, Texto_envio) VALUES ( '" & nombre & "', '" & telefono & "','" & txt_mensaje.Text & "')"
         
        g_db.Execute SQL
        End If
        Next i

    viernes, 27 de abril de 2012 19:31