1. *** New version of B4J is available ***
    B4J v7.8
    Dismiss Notice

Spanish Guardar datos de un listview

Discussion in 'Spanish Forum' started by Mauricio Hamak, Apr 24, 2019.

  1. Mauricio Hamak

    Mauricio Hamak Member Licensed User

    Hola, tengo los datos cargados de un pedido en un listview, como puedo recorrer este mismo para guardarlo en SQL?
    Saludos
     
  2. José J. Aguilar

    José J. Aguilar Well-Known Member Licensed User

    Hola:

    Nos das pocos datos, pero te podría valer algo como

    Code:
    For i = 0 To ListView1.Size -1 
        
    Log(ListView1.GetItem(i))
        
    'Guarda aquí el valor en tu SQL
    Next
     
  3. Mauricio Hamak

    Mauricio Hamak Member Licensed User

    Hola, muchas gracias funciona perfecto! y si tengo un listview con dos filas como extraigo los datos de la segunda?
     
  4. José J. Aguilar

    José J. Aguilar Well-Known Member Licensed User

    Hola Mauricio:

    Me alegro de que funcionase. Como te comenté, si das todos los datos desde el principio, y pones tu código, es más fácil ayudarte, ya que cómo tomar los valores de vuelta, depende de cómo hayas implementado el listview, si con una línea, con dos, si le has añadido una vista compleja. Depende de cada forma, se podrán obtener los datos de una forma u otra.

    Lee el tutorial de ListView
    https://www.b4x.com/android/forum/threads/listview-tutorial.6537/

    Y haz pruebas con la parte que te marco en negrita:
    En definitiva, el listview por defecto pasa el texto almacenado en la primera línea. Tendrías que construirlo con los métodos AddSingleLine2, AddTwoLines2 and AddTwoLinesAndBitmap2, y trabajar con el valor que devuelven.

    Haz pruebas, y con las dudas vemos cosas más concretas (ten en cuenta que yo también tendría que ponerme a probar).

    saludos,
     
  5. Mauricio Hamak

    Mauricio Hamak Member Licensed User

    Hola Jose te agradezco un monton tu ayuda, mira el tema es asi, yo cargo un listview productos de esta manera:

    sql1.OpenConnection("jdbc:jtds:sqlserver://xx.ddns.net/xx;instance_name=SQLSERVER;user=sa;password=oveja10;")
    ' read columns
    Dim res As MSSQLResultSet = sql1.ExecuteQuery("SELECT idProducto, Nombre 'Descripcion', PrecioContado FROM productos")
    Do While res.MoveNext
    lstProductos.AddTwoLines2(res.GetInt(1), res.GetString(2) & " $" & NumberFormat2(res.GetDouble(3), 0, 3, 2, True), res.GetInt(1) & "~" & res.GetString(2) & " $" & NumberFormat2(res.GetDouble(3), 0, 3, 2, True))
    Loop

    y despues mediante un click paso a otro grid con este metodo:
    If Msgbox2("Agregar al pedido? " & CRLF & Value, "NOTICE", "Si", "", "No", Null) = DialogResponse.POSITIVE Then
    If editCantidad.Text<>"" Then
    L1 = L1.SubString2(0, L1.IndexOf("~"))
    'L2 = L2.SubString2(L2.IndexOf("~")+1, L2.IndexOf("$"))
    'L2 = L2.SubString2(0,L2.IndexOf("$"))
    L2=L2.SubString(0)
    subtotal= L2.SubString(L2.IndexOf("$")+1) * editCantidad.Text
    total= total+subtotal
    cantidad= cantidad+editCantidad.Text
    lstPedido.AddTwoLines(L1, editCantidad.Text & " - " & L2) : newlist.Add(L1 & " - " & editCantidad.Text & " " & L2)
    End If
    End If

    Y por ultimo tengo que guardar el listview pedidos y no se como utlizar la segunda linea que tengo otros datos necesarios para guardar,

    Dim idProducto As Int
    For i = 0 To lstPedido.Size -1
    idProducto= lstPedido.GetItem(i)
    'cantidad=segundalinea;
    'preciouni=segundalinea;
    'Log(aff)
    'Guarda aquí el valor en tu SQL
    Next

    Ahi es donde me trabo donde dice segunda linea porque esos dos datos los tengo ahi, se podra extraer de alguna manera?
    Saludos!
     
  6. José J. Aguilar

    José J. Aguilar Well-Known Member Licensed User

    Hola:

    Usa [ CODE] tu código [ /CODE] para que tu código sea más legible (sin espacios tras los corchetes)
    Pues te diría que hagas igual que en el primer listview. En él usas el segundo parámetro (value)
    Code:
    lstProductos.AddTwoLines2(res.GetInt(1), res.GetString(2) & " $" & NumberFormat2(res.GetDouble(3), 032True), res.GetInt(1) & "~" & res.GetString(2) & " $" & NumberFormat2(res.GetDouble(3), 032True))
    En este caso: res.GetInt(1) & "~" & res.GetString(2) & " $" & NumberFormat2(res.GetDouble(3), 0, 3, 2, True) para pasar información a L1
    Por tanto, en lstPedido, en vez de usar AddTwoLines, usa de nuevo AddTwoLines2 y pasa como parámetro lo que quieras.
    Si te fijas en la ayuda que se muestra cuando estás tecleando
    Captura.JPG

    GetItem devuelve value (el segundo parámetro de AddTwoLines2) y si no hay uno, el valor de la primera línea (que es lo que devolvía en el primer ejemplo)

    Es decir, el mismo ejemplo de arriba, sería así para mostrar la segunda línea

    Code:
    Activity.LoadLayout("1")
        
    For i = 0 To 10
            ListView1.AddTwoLines2(
    "Linea 1."&i, "Linea 2."&i, "Linea 1."&i&  " ~Linea 2." &i)
        
    Next
        
    For i = 0 To ListView1.Size -1
            
    Log(ListView1.GetItem(i))
        
    Next
    El log sería:
    Code:
    Linea 1.0 ~Linea 2.0
    ...
    ...
     
  7. Mauricio Hamak

    Mauricio Hamak Member Licensed User

    Mil gracias!!
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice