Italian List perde i valori

diresc

Member
Licensed User
Longtime User
Salve a tutti di sicuro sbaglio io(senza dubbi)
Sto provando In una classe a caricare un db sqlite per eliminare file di testo
1)copio il db
2)leggo il db
3) aggiungo tutti i record in una list (public)
4)vado ad interrogare alcuni record della lista ma risultano vuoti
dove sbaglio?

Grazie per qualunque risposta
 

diresc

Member
Licensed User
Longtime User
B4X:
Public Sub caricadb
   
   
    Dim DB_NAME As String ="dati.db"
   
    If File.Exists(File.DirInternal,DB_NAME) Then
        SQL1.Initialize(File.DirInternal,DB_NAME,False)
       
    Else
        File.Copy(File.DirAssets,DB_NAME,File.DirInternal,DB_NAME)
        SQL1.Initialize(File.DirInternal,DB_NAME,False)
       
    End If
   
   
    Dim Cursor1 As Cursor
   
    Cursor1 = SQL1.ExecQuery("SELECT * FROM IMPOSTAZIONI ORDER BY ID")
    For i = 0 To Cursor1.RowCount - 1
        Cursor1.Position = i
       
        IMPOSTA.Add(Cursor1.GetString("DATO"))
       
       
        Log("************************")
        Log(Cursor1.GetString("ID"))
        Log(Cursor1.GetString("DATO"))
       
       
    Next
   
    R0=IMPOSTA.Get(0)
    R4=IMPOSTA.Get(4)
End Sub''''''''''''''''fino qui tutto ok'

 Sub LEGGI
sia R0 o R4 VUOTE idem IMPOSTA.Get(0) e IMPOSTA.Get(4)

non voglio passarle alla sub leggi(uno as string , due as string)
perchè devono essere lette in tutte le pagine

R0 e R4 Public
IMPOSTA LIST Public
End sub
 

giannimaione

Well-Known Member
Licensed User
Longtime User
di solito, non è una regola, sarebbe preferibile indicare i campi da leggere
B4X:
IMPOSTA.Clear
Cursor1 = SQL1.ExecQuery("SELECT dato, id, alfa, beta, ecc FROM impostazioni ORDER BY id")
'
Log(Cursor1.RowCount) 'subito dopo la select
'cosa viene visualizzato nel log ?
Log("************************")
Log(Cursor1.GetString("ID"))
Log(Cursor1.GetString("DATO"))
.....................
B4X:
'dopo il next
sql1.Close
'e poi verifica quanti elementi
log(IMPOSTA.Size)
'0=vuoto !!!
'> 0 = ok, ci sono dati

B4X:
'sono errati come logica
 R0=IMPOSTA.Get(0) 
R4=IMPOSTA.Get(4)
'esegui un ciclo for
for i = 0 to imposta.size-1
   log(imposta.get(i))
next
 
Last edited:

diresc

Member
Licensed User
Longtime User
di solito, non è una regola, sarebbe preferibile indicare i campi da leggere
B4X:
IMPOSTA.Clear
Cursor1 = SQL1.ExecQuery("SELECT dato, id, alfa, beta, ecc FROM impostazioni ORDER BY id")
'
Log(Cursor1.RowCount) 'subito dopo la select
'cosa viene visualizzato nel log ?
Log("************************")
Log(Cursor1.GetString("ID"))
Log(Cursor1.GetString("DATO"))
.....................
B4X:
'dopo il next
sql1.Close
'e poi verifica quanti elementi
log(IMPOSTA.Size)
'0=vuoto !!!
'> 0 = ok, ci sono dati
Aggiunto .Clear e il .Close Grazie imposta.size=200 record sino a qui è tutto ok ,ma quando voglio prelevare i dati dalla lista IMPOSTA è vuota
 

giannimaione

Well-Known Member
Licensed User
Longtime User
B4X:
'esegui un ciclo for
for i = 0 to imposta.size-1
   log(imposta.get(i))
next
 

giannimaione

Well-Known Member
Licensed User
Longtime User
scusa dimenticavo da un'altra sub o pagina ????
 

LucaMs

Expert
Licensed User
Longtime User
Non riesco a vedere errori.

E' possibile che, altrove, dichiari nuovamente la List IMPOSTA, dopo il suo caricamento?


[Suggerimento: nel caso in cui il tuo sorgente dovesse essere multipiattaforma, non usare Cursor, che è solo per B4A, ma ResultSet. Anzi, usa ResultSet comunque, così ti abitui e se "un giorno" dovessi sviluppare con B4J o B4i, avresti "esperienza"]
 

diresc

Member
Licensed User
Longtime User
Non riesco a vedere errori.

E' possibile che, altrove, dichiari nuovamente la List IMPOSTA, dopo il suo caricamento?


[Suggerimento: nel caso in cui il tuo sorgente dovesse essere multipiattaforma, non usare Cursor, che è solo per B4A, ma ResultSet. Anzi, usa ResultSet comunque, così ti abitui e se "un giorno" dovessi sviluppare con B4J o B4i, avresti "esperienza"]
si è multi :Grazie per il suggerimento ,dichiarata solo una volta ,io devo solo caricare il db >caricarlo in una lista e poi dalle varie Finestre prendere i dati dalla lista ma non funziona, domanda dove posso dichiarare le mie variabili public per tutto il progetto ?
 

Elric

Well-Known Member
Licensed User
Sarebbe interessante capire come la dichiari e come la richiami tra una page e l'altra.
 

diresc

Member
Licensed User
Longtime User
Sarebbe interessante capire come la dichiari e come la richiami tra una page e l'altra.
adesso ho fatto in questo modo in un (modulo di codice) scrivo public R1,R2 ecc..--- poi carico database in una (modulo classe) dove ho tutte le funzioni(sub) e salvo valori in R0 e R1 ---poi leggo da tutto il progetto le variabili modulodicodice.R0 e modulodicodice.R1 così funziona
 
Top