Lo stesso quesito l’ho postato in inglese, ma sembra che sia venuto molto male e visto che LucaMs ha parecchio inchiostro da consumare (luca …..google ha tradotto cosi) possa sprecare un po di inchiostro qui e farmi capire come poter risolvere il problema.
Premetto che mi sto avvicinando da poco a Basic4 e quindi molte cose sono ancora un mistero, Sto provando ad utilizzare RDC di Erel Remote Database Connector.
Ho messo sul mio server il db, ho cambiato i vari indirizzi e pwd nel file php ed ho iniziato a fare delle prove, richiamando una tabella per riempire uno spinner (chi si è inventato questo nome non ho ancora capito a me piace combo box). Fin qui tutto bene, la routine viene eseguita perfettamente ed ad apertura dell’acitivity (un’altra cosa che mi fa andare in bestia, piu bello form) mi ritrovo il combo box riempito con i relativi dati provenienti dalla tabella.
Qual è il problema vi chiederete.
Semplice: presuppongo (anzi sicuramente) che la funzione inserita da Erel JobDone lavori in background e quindi una volta che i dati sono disponibili, vengono inviati al componente
Nell’inizializzazione del FORM ho la necessità di riempire il combox e prelevando il suo primo item caricare una variabile o un altro componente (non fa alcuna differenza). Il problema è che se mando in esecuzione la seconda Query selezionando i campi tramite l’item del primo combo box va in errore dicendo che l’indice 0 è OutOfBound (giustamente) perche il primo combo box non è stato ancora riempito e quindi la voce ancora non disponibile.
E possibile controllare ed in che modo, quando la funzione JobDone è stata completata avendo la certezza che i componenti sono stati inseriti nel combo box e dopodiche inviare la seconda query selezionando item del combo box.
In poche parole, come faccio a sapere quando JobDone è completo.
Non so se inserire del codice, che poi rispecchia quello messo a disposizione da Erel, cambiando le voci
Presenti in JobDone per adattarlo alle mie esigenze.
Spero di essere stato chiaro, perche sembra che con il mio Inglese, sia un po difficile farmi capire.
P.S.
parlo di 2 combobox (spinner) ma in effetti si tratta di 1 spinner ed una variabile, ma il problema non cambia.
Premetto che mi sto avvicinando da poco a Basic4 e quindi molte cose sono ancora un mistero, Sto provando ad utilizzare RDC di Erel Remote Database Connector.
Ho messo sul mio server il db, ho cambiato i vari indirizzi e pwd nel file php ed ho iniziato a fare delle prove, richiamando una tabella per riempire uno spinner (chi si è inventato questo nome non ho ancora capito a me piace combo box). Fin qui tutto bene, la routine viene eseguita perfettamente ed ad apertura dell’acitivity (un’altra cosa che mi fa andare in bestia, piu bello form) mi ritrovo il combo box riempito con i relativi dati provenienti dalla tabella.
Qual è il problema vi chiederete.
Semplice: presuppongo (anzi sicuramente) che la funzione inserita da Erel JobDone lavori in background e quindi una volta che i dati sono disponibili, vengono inviati al componente
Nell’inizializzazione del FORM ho la necessità di riempire il combox e prelevando il suo primo item caricare una variabile o un altro componente (non fa alcuna differenza). Il problema è che se mando in esecuzione la seconda Query selezionando i campi tramite l’item del primo combo box va in errore dicendo che l’indice 0 è OutOfBound (giustamente) perche il primo combo box non è stato ancora riempito e quindi la voce ancora non disponibile.
E possibile controllare ed in che modo, quando la funzione JobDone è stata completata avendo la certezza che i componenti sono stati inseriti nel combo box e dopodiche inviare la seconda query selezionando item del combo box.
In poche parole, come faccio a sapere quando JobDone è completo.
Non so se inserire del codice, che poi rispecchia quello messo a disposizione da Erel, cambiando le voci
Presenti in JobDone per adattarlo alle mie esigenze.
Spero di essere stato chiaro, perche sembra che con il mio Inglese, sia un po difficile farmi capire.
P.S.
parlo di 2 combobox (spinner) ma in effetti si tratta di 1 spinner ed una variabile, ma il problema non cambia.
B4X:
Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Dim Scroll As ScrollView
Dim CmbRegione As Spinner
Dim cd As ColorDrawable
Dim PanelHeight As Int : PanelHeight=80dip
Dim REGIONE ="Regione", PROVINCIA ="Province", PNL ="Panel", COUNT="Conteggio" As String
Dim prov(20) 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 ("frmricercaview")
Scroll.Initialize (100%x)
Activity.AddView (Scroll, 0, 40dip, 100%x, 100%y)
Scroll.Color =Colors.Black
CmbRegione.Left =Activity.Width /2 - CmbRegione.Width /2
CmbRegione.Prompt ="Regione"
FetchCountriesRegione
CmbRegione.SelectedIndex =0
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub FetchCountriesRegione
'Utilizzato per riempire ilcombox delle regioni
ProgressDialogShow("Sto caricando le informazioni")
'Gets all the available countries
ExecuteRemoteQuery("SELECT Regione FROM regioni ORDER BY Regione", REGIONE)
End Sub
Sub FetchProvince
'Utilizzato per riempire la variabile delle province secondo la regione selezionata
ProgressDialogShow("Sto caricando le informazioni")
'Gets all the available countries
ExecuteRemoteQuery("SELECT Provincia FROM province WHERE Regione ='" & CmbRegione.SelectedItem &"' ORDER BY Provincia", PROVINCIA)
End Sub
Sub ExecuteRemoteQuery(Query As String, JobName As String)
Dim job As HttpJob
job.Initialize(JobName, Me)
job.PostString("http://www.caravan-forum.it/portolano/portolano.php", Query)
End Sub
Sub JobDone(Job As HttpJob)
ProgressDialogHide
If Job.Success Then
Dim res As String
res = Job.GetString
Log("Response from server: " & res)
Dim parser As JSONParser
parser.Initialize(res)
Select Job.JobName
Case REGIONE
Utility.ExecuteSpinner (parser, CmbRegione, "Regione")
Case PROVINCIA
prov(19)=Utility.ExecuteLoadProvince (parser, prov, "Provincia")
End Select
Else
ToastMessageShow("Error: " & Job.ErrorMessage, True)
End If
Job.Release
End Sub