Italian Wait For (j) JobDone(j As HttpJob) Che palle!!!

Luciano Veneziano

Active Member
Licensed User
Longtime User
Senza alcuna polemica, ma è possibile che non funzioni un modo per inchiodare
l'esecuzione dell'app, fino a quando non mi ritorni il valore della query?
Scusate ma non frustrato dalla stupidità del problema che non riesco a risolvere.


Sub Post(sql As String,id As String) As ResumableSub
Dim text As String = URL&"sql.php"

Log("Query:"&text)

Dim j As HttpJob
j.Initialize("", Me)
j.PostString(text,"q="& sql)
Wait For (j) JobDone(j As HttpJob)
If j.Success Then
sqlResult = refresh(id,j.GetString)
End If
Log("SQLResult:"&sqlResult)
j.Release
End Sub

Sub selDevice()
Dim text As String
text = "SELECT * from users where cf = 300;"
Post(text,"uid") <----------------------------------------- Come lo fermo qui, fino a quando non ho il risultato?
uid = populateU(sqlResult)
End Sub
 

udg

Expert
Licensed User
Longtime User
Dovresti chiamare quel Post con un waitfor complete
 

Xfood

Expert
Licensed User
Senza alcuna polemica, ma è possibile che non funzioni un modo per inchiodare
l'esecuzione dell'app, fino a quando non mi ritorni il valore della query?
Scusate ma non frustrato dalla stupidità del problema che non riesco a risolvere.


Sub Post(sql As String,id As String) As ResumableSub
Dim text As String = URL&"sql.php"

Log("Query:"&text)

Dim j As HttpJob
j.Initialize("", Me)
j.PostString(text,"q="& sql)
Wait For (j) JobDone(j As HttpJob)
If j.Success Then
sqlResult = refresh(id,j.GetString)
End If
Log("SQLResult:"&sqlResult)
j.Release
End Sub

Sub selDevice()
Dim text As String
text = "SELECT * from users where cf = 300;"
Post(text,"uid") <----------------------------------------- Come lo fermo qui, fino a quando non ho il risultato?
uid = populateU(sqlResult)
End Sub
dovresti chiamare la funzione post in questo modo
Wait For (Post(text,"uid")) Complete
 

Xfood

Expert
Licensed User
se non vuoi warning del compilatore e' meglio scrivevere cosi

B4X:
Sub Post(sql As String,id As String) As ResumableSub
Dim text As String = URL&"sql.php"

Log("Query:"&text)

Dim j As HttpJob
j.Initialize("", Me)
j.PostString(text,"q="& sql)
Wait For (j) JobDone(j As HttpJob)
If j.Success Then
sqlResult = refresh(id,j.GetString)
End If
Log("SQLResult:"&sqlResult)
j.Release
return true
End Sub

Sub selDevice()
Dim text As String
text = "SELECT * from users where cf = 300;"
Wait For (Post(text,"uid")) Complete(Finito As Boolean)    '  cosi ritorna  un valore'
'Post(text,"uid") <----------------------------------------- Come lo fermo qui, fino a quando non ho il risultato?
uid = populateU(sqlResult)
End Sub
 

Luciano Veneziano

Active Member
Licensed User
Longtime User
No il contenitore sqlResult rimane vuoto, ovviamente la qury è giusta e verificata...
il risultato non contiene nulla perchè ha già fatto la seconda query che deve essere vuota per forza se non c'è la chiave d ricerca.
 

Attachments

  • image_2022-11-05_185003512.png
    image_2022-11-05_185003512.png
    27.2 KB · Views: 114
Last edited:

Xfood

Expert
Licensed User
hai messo il return true allafine della funzione Post? riga 15 dell'esempio sopra...
 

Luciano Veneziano

Active Member
Licensed User
Longtime User
Questo è il log

Logger connesso a: WIKO PULP 4G
--------- beginning of main
*** Service (starter) Create ***
** Service (starter) Start **
** Activity (main) Create, isFirst = true **
Call B4XPages.GetManager.LogEvents = True to enable logging B4XPages events.
** Activity (main) Resume **
EM2-002:34:81:F4:79:1B:07
sendString: A1
Query:https://www.xxxxx.it/sql.php Prima query... devo avere il risultato per madare il codice A2 invece non aspetta il risultato.
sendString: A2
sending message to waiting queue of uninitialized activity (submitjob) ??? CHE SIGNIFICA
Query:https://www.xxxxx.it/sql.php Seconda query con dati sbagliati
Devicefreqs: SECONDO
Devicefreqs: TERZO
Devicefreqs: PRUIMO
Devicefreqs: SECONDO
Devicefreqs: SECONDO
*** Service (httputils2service) Create ***
(Http client initialized with accept all option.)
** Service (httputils2service) Start **
** Service (httputils2service) Start **
ResponseError. Reason: , Response: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> Questa non la capisco, non ho mandato nessuna richiesta http penso sia la risposta alla prima query
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access this resource.</p>
<p>Additionally, a 403 Forbidden
error was encountered while trying to use an ErrorDocument to handle the request.</p>
</body></html>
SQLResult:
*** Service (starter) Create ***
** Service (starter) Start **
** Activity (main) Create, isFirst = true **
Call B4XPages.GetManager.LogEvents = True to enable logging B4XPages events.
** Activity (main) Resume **
 

sirjo66

Well-Known Member
Licensed User
Longtime User
come già ti hanno detto hai due errori, ti manca un Return alla fine della sub Post e poi la chiamata alla funzione Post (vedi riga 15 e riga 21 del codice di Xfood
 
Top