Italian caricare su un database sqlite delle edittex e due listview

fifiddu70

Well-Known Member
Licensed User
Longtime User
Ciao a tutti, ho difficoltà a caricare in un database dei dati di alcune edittext e di due listview, nel caricare mi dice che sono state aggiunte, ma appena fa la lettura questi mi da errore.

1
main_read_click (java line: 4986)
java.lang.IllegalArgumentException: column '' does not exist
at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:333)
at anywheresoftware.b4a.sql.SQL$CursorWrapper.GetString(SQL.java:355)
at com.partannasoftware.comande.main._read_click(main.java:4986)
at com.partannasoftware.comande.main._add_click(main.java:1212)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:179)
at anywheresoftware.b4a.BA$1.run(BA.java:303)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5728)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
questo è il codice che uso:
B4X:
Sub add_Click
  
    mp1.Load(File.DirAssets,"click.wav")
    mp1.Play
    If txttavolo.Text="" Then
        mp1.Load(File.DirAssets,"alert.wav")
        mp1.Play
        Msgbox("Per favore inserisci il prodotto","ATTENZIONE")
      
    Else
        Dim NewID As Int
        Try
            NewID = SQL1.ExecQuerySingleResult("SELECT max(id) FROM listview ") + 1
        Catch
            NewID = 1
        End Try
  
        Dim qry As String
        Dim MyFields() As Object
        MyFields=Array As Object(lswordine,lswordine2,txtzona.Text,txtoperatore.Text,txteuro.Text,txttotaleeuro.Text,txtnote.Text,NewID)   'rest of edittext boxes
        qry = "INSERT INTO listview VALUES (?,?,?,?,?,?,?,?)"   'Account for all fields
        SQL1.ExecNonQuery2(qry,MyFields)
        lswordine.Clear
        lswordine2.Clear
        txtzona.Text=""
        txteuro.Text=""
        txttotaleeuro.Text=""
        txtnote.Text=""
      
        Msgbox("prodotti aggiunti nel database","ESEGUITO")
    End If
    read_Click
End Sub


Sub read_Click
    If File.Exists(File.DirInternal,"listview.db") = True Then
      
        mp1.Load(File.DirAssets,"click.wav")
        mp1.Play
        pnlbase.Visible=False
        pnlsetup.Visible=False
        pnlaiuto.Visible=False
        pnltecnico.Visible=False
        pnlresoconto.Visible=False
        pnldata.Visible=False
        pnloperatore.Visible=False
        pnlsetup2.Visible=False
        pnlblocco.Visible=False
        pnllist.Visible=True
        lvdb.Clear
        cursor1 = SQL1.ExecQuery("SELECT * FROM listview")
        Log(cursor1.RowCount)
        For i = 0 To cursor1.RowCount - 1
            cursor1.Position = i
            lvdb.AddSingleLine(cursor1.GetString("id")& " : " & cursor1.GetString(txtprodotto.Text))
        Next
        cursor1.Close
    Else
  
        Msgbox("Nessun database presente, Prego riavvia il programma","AVVISO !!")
  
    End If
End Sub
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
risolto il problema, l'errore stava su questa riga:
lvdb.AddSingleLine(cursor1.GetString("id")& " : " & cursor1.GetString(txtprodotto.Text)) ho dovuto togliere txtprodotto.text ed aggiungere il valore assunto nel db.
ma adesso devo risolvere il problema successivo, cioè lswordine ed lswordine2 sono due listview, vorrei memorizzare ciò che appare in queste listview e poi alla lettura visualizzare dinuovo il contenuto, ma invece mi visualizza: anywheresoftware.b4a.objects.listviewwrapper.
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
In sostanza vorrei caricare il contenuto delle due listview e memorizzarle nel database per poi richiamarle e visualizzare dinuovo il contenuto rispettivo dinuovo nelle due listview.
 
Top