Italian Un pò deluso da b4a... aiuto!

mauri74doc

Member
Licensed User
Longtime User
Ciao a tutti. Scusatemi se posto il mio sfogo, però ho bisogno di scaricare la mia rabbia e delusione! Dopo ore dedicate a lavorare ad un progetto (neppure troppo ambizioso) e relativamente semplice, mi scontro sempre con lo stesso problema legato al riconoscimento di un database necassario alla causa. Nello specifico, usavo un db di nome "contenuti" che conteneva dati di prova. E tutto girava abbastanza bene. Allora ho deciso di immettere i dati utili all'app, e ho cambiato il nome del db denominandolo "maurizio". Ho modificato chiaramente i codici, ed ero sicuro che funzionasse. Ma purtroppo non era così. L'app, con le modifiche del caso, sembrava nn roconoscere più il db. e non è la prima volta che capita. Ogni volta, anche nella fasi di prova, che modificavo qualcosa all'interno del db, dopo il debug, il db stesso non viene più riconosciuto. Non è possibile! Da qui deriva la mia delusione!! Allego ui il file zippato del mio progettino, che sto meidtando di lasciare, insieme a b4a. Qualcuno può aiutarmi?? Grazie sin d'ora!
 

arenaluigi

Well-Known Member
Licensed User
Longtime User
Ciao Maury,
ti ho inviato il progetto modificato via email, il coniglio di Maxware è corretto.
Ma non scoraggiarti per così poco, secondo me dovresti leggerti le guide (purtroppo in inglese) messe sul sito di Basic4Android.
Quando progetti ti scontrerai con situazioni più complesse, ma non per questo devi comportarti alla Schettino :p non abbandonare la nave ma governala :D

A parte tutto, ma secondo te se ci fossero dei problemi del genere eravamo qua
a parlarne ?

:sign0098:
 

mauri74doc

Member
Licensed User
Longtime User
Grazie ad entrambi per il preziosissimo aiuto!!

Gentilissimo Maxware, siamo ancora qui a disturbarti. Ti chiedo se puoi verificare il file, poichè ovviamente abbiamo inconrteato un'alttra difficoltà o priblema --> la funzione "home" ci porta fino all'utlima pagina dell'app e fin qui tt ok, ma quando voglio tornare indietro nei menù precedenti le query nn legge più i dati, come se la query stessa fisse vuota (cosa che nn è).
questo è il codica che ho scritto.
Sub cmdback_Click
liv = liv -1
Activity.RemoveAllViews
home(btn.Text)
End Sub


cmq allego il file zippato. Grazie ancora e porta pazienza!!
 

Attachments

  • B4a.zip
    7.8 KB · Views: 172

arenaluigi

Well-Known Member
Licensed User
Longtime User
Ciao,
non può funzionare così:
B4X:
Sub cmdback_Click
liv = liv -1
Activity.RemoveAllViews[COLOR="Red"] 'Questa ti cancella tutto, poi devi ridisegnare quelli precedenti.[/COLOR]
home(btn.Text) 'QUi gli passi "PENTOLE" perciò ti ridisegna la schermata con i dettagli dele pentole.
End Sub
Dovresti memorizzarti il percorso contrario insieme al livello così una volta che hai il livello, richiamo anche il testo.
Spero di essermi spiegato bene.:sign0098:
 

maxware

Well-Known Member
Licensed User
Longtime User
Ciao raga
Se analizza il contenuto del Db quando fai back gli passi "pentole" invece del dato vecchio
Altra cosetta ( almeno a mio giudizio ) non aprire 100 volte il db. aprilo in testa e basta. Almeno io faccio cosi
Eccoti il codice per tornare indietro ( o almeno il primo pezzo ) e "pulito" per le aperture del db
ciaoooooo
Mamo

'Activity module
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
'Dim DBCursor As Cursor
Dim DBCursor As Cursor
Dim DBSql As SQL
End Sub

Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Dim liv As Int = 0
Dim risultato As String
Dim risultato_old As String
Dim cmdimg As Button
Dim cmdvideo As Button
Dim lbltitolo As Label
Dim lbltesto As Label
Dim btn As Button 'dichiaro variabile di tipo button
End Sub

Sub Activity_Create(FirstTime As Boolean)
'Do not forget to load the layout file created with the visual designer. For example:
'Activity.LoadLayout("Layout1")
Activity.LoadLayout("paginaprincipale")
If FirstTime Then
'tDir=dtbs.CopyDBFromAssets("datab","","datab",False)
File.Copy(File.DirAssets, "contenuti", File.DirInternal, "contenuti") 'MODIFICATO LUIGI

End If
If DBSql.IsInitialized=False Then
DBSql.Initialize(File.DirInternal,"contenuti",True)
End If
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub cmd_entra_Click
home (Null)
End Sub

Sub home (campo As String)

Dim copia As String
risultato = campo


Select Case liv
Case 0
DBCursor = DBSql.ExecQuery("SELECT DISTINCT categoria FROM argomenti")
copia = "categoria"
liv = liv+1
risultato_old=risultato
Case 1
DBCursor = DBSql.ExecQuery("SELECT DISTINCT menu FROM argomenti WHERE categoria = '" & risultato & "'")
copia = "menu"
liv = liv+1
risultato_old=risultato
Case 2
DBCursor = DBSql.ExecQuery("SELECT DISTINCT sottomenu FROM argomenti WHERE menu = '" & risultato & "'")
copia = "sottomenu"
liv = liv+1
risultato_old=risultato
Case 3
DBCursor = DBSql.ExecQuery("SELECT titolo FROM argomenti WHERE sottomenu = '" & risultato & "'")
risultato_old=risultato
copia = "titolo"
liv = liv +1
End Select

If DBCursor.RowCount > 0 Then

Dim elenco(DBCursor.RowCount) As String
For x=0 To DBCursor.RowCount - 1
DBCursor.Position=x
elenco(x)= DBCursor.GetString(copia.Trim)

Next
Dim punto As Int = 50
Dim btnhome(DBCursor.RowCount) As Button

Activity.RemoveAllViews
'Dim bdw As BitmapDrawable
For i = 0 To elenco.Length - 1
btnhome(i).Initialize("bnthome")
Activity.AddView(btnhome(i), 45, punto, Activity.Width/2, 60dip)
btnhome(i).Text = elenco(i)
btnhome(i).Tag = i
punto = punto+80
elenco(i)= ""
'di seguito il codice x le immagini di sfondo dei bottoni


' bdw.Bitmap = LoadBitmap(Activity.SetBackgroundImage ("palloni.jpg"))
' btnhome(i).Background = bdw
Next
Dim back As Button
back.Initialize("indietro")
If liv > 1 Then
Activity.AddView(back, 45, 600, (Activity.Width/4)+30, 50dip) 'pulsante indietro
back.Text= "Indietro"
End If
End If

DBCursor.Close
'DBSql.Close
End Sub

Sub bnthome_Click
'evento

btn = Sender 'gli passo il sender dell’oggetto che ha scatenato l’evento

If liv = 4 Then
'Dim DBCursor As Cursor
'Dim DBSql As SQL
'If DBSql.IsInitialized=False Then
' DBSql.Initialize(File.DirInternal,"contenuti",True)
'End If
DBCursor = DBSql.ExecQuery("SELECT * FROM argomenti WHERE titolo = '" & btn.Text & "'")
Activity.RemoveAllViews
Activity.LoadLayout("schermata")
If DBCursor.RowCount > 0 Then
DBCursor.Position = 0
lbltitolo.Text = DBCursor.GetString("titolo")
lbltesto.Text = DBCursor.GetString("testo")
End If
DBCursor.Close
'DBSql.Close
Else
home (btn.text)
End If
End Sub

Sub cmdvideo_Click

End Sub
Sub cmdimg_Click

End Sub
Sub cmdback_Click
liv = liv -1
Activity.RemoveAllViews
home(risultato_old)
End Sub
 

maxware

Well-Known Member
Licensed User
Longtime User
Ho rivisto il tutto perche' mi mancava qualcosa. Non mi compariva il pulsante indietro nei primi meno quindi non tener conto del codice che ho postato prima. ( non serve a nulla.. )
Ho fatto un po' di prove al volo e' un po' contorto.
Come dice Luigi mi sembra che dovresti salvati la situazione precedente ma a due livelli indietro
 

maxware

Well-Known Member
Licensed User
Longtime User
Prova questo e vedrai che funziona
ciaooooooooooo

'Activity module
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
'Dim DBCursor As Cursor
Dim DBCursor As Cursor
Dim DBSql As SQL
End Sub

Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Dim liv As Int = 0
Dim risultato As String
Dim risultato_old As String
Dim cmdimg As Button
Dim cmdvideo As Button
Dim lbltitolo As Label
Dim lbltesto As Label
Dim btn As Button 'dichiaro variabile di tipo button
Dim back As Button
Dim btnhome As Button
Dim elenco_ritroso(100) As String

End Sub

Sub Activity_Create(FirstTime As Boolean)
'Do not forget to load the layout file created with the visual designer. For example:
'Activity.LoadLayout("Layout1")
Activity.LoadLayout("paginaprincipale")
If FirstTime Then
'tDir=dtbs.CopyDBFromAssets("datab","","datab",False)
File.Copy(File.DirAssets, "contenuti", File.DirInternal, "contenuti") 'MODIFICATO LUIGI

End If
If DBSql.IsInitialized=False Then
DBSql.Initialize(File.DirInternal,"contenuti",True)
End If
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub cmd_entra_Click
home (Null,0)
End Sub

Sub home (campo As String,livello As Int)

Dim copia As String
risultato = campo
liv=livello

Select Case liv
Case 0
DBCursor = DBSql.ExecQuery("SELECT DISTINCT categoria FROM argomenti")
copia = "categoria"
liv = liv+1
Case 1
DBCursor = DBSql.ExecQuery("SELECT DISTINCT menu FROM argomenti WHERE categoria = '" & risultato & "'")
copia = "menu"
liv = liv+1
Case 2
DBCursor = DBSql.ExecQuery("SELECT DISTINCT sottomenu FROM argomenti WHERE menu = '" & risultato & "'")
copia = "sottomenu"
liv = liv+1
Case 3
DBCursor = DBSql.ExecQuery("SELECT titolo FROM argomenti WHERE sottomenu = '" & risultato & "'")
copia = "titolo"
liv = liv +1
End Select

If DBCursor.RowCount > 0 Then

Dim elenco(DBCursor.RowCount) As String
For x=0 To DBCursor.RowCount - 1
DBCursor.Position=x
elenco(x)= DBCursor.GetString(copia.Trim)

Next
Dim punto As Int = 50
elenco_ritroso(liv-1)=risultato

Activity.RemoveAllViews
'Dim bdw As BitmapDrawable
For i = 0 To elenco.Length - 1
btnhome.Initialize("bnthome")
Activity.AddView(btnhome, 45, punto, Activity.Width/2, 60dip)
btnhome.Text = elenco(i)
btnhome.Tag = liv
punto = punto+80
'elenco= ""
'di seguito il codice x le immagini di sfondo dei bottoni

' bdw.Bitmap = LoadBitmap(Activity.SetBackgroundImage ("palloni.jpg"))
' btnhome(i).Background = bdw
Next
'Dim back As Button
back.Initialize("back")
Activity.AddView(back,10,10,150,60) 'pulsante indietro
back.Text= "Indietro"
back.Tag=liv-1
If liv = 1 Then
back.Visible=False
Else
back.Visible=True
End If
End If

DBCursor.Close
'DBSql.Close
End Sub

Sub bnthome_Click
'evento

btn = Sender 'gli passo il sender dell’oggetto che ha scatenato l’evento

If liv = 4 Then
DBCursor = DBSql.ExecQuery("SELECT * FROM argomenti WHERE titolo = '" & btn.Text & "'")
Activity.RemoveAllViews
Activity.LoadLayout("schermata")
If DBCursor.RowCount > 0 Then
DBCursor.Position = 0
lbltitolo.Text = DBCursor.GetString("titolo")
lbltesto.Text = DBCursor.GetString("testo")
End If
DBCursor.Close
'DBSql.Close
Else
home (btn.text,btn.tag )
End If
End Sub

Sub cmdvideo_Click

End Sub
Sub cmdimg_Click

End Sub
Sub cmdback_Click
liv = liv -1
Activity.RemoveAllViews
home( elenco_ritroso(liv-1),liv-1)
End Sub
Sub back_Click
liv=liv-1
Activity.RemoveAllViews
home( elenco_ritroso(liv-1),liv-1)
End Sub
 
Top