Tornando al grafico (che non conosco), aveva una proprietà alla quale passare i dati (gli importi sommati) come List, quindi dovrai recuperare gli importi tramite query e nella jobdone metterli in una lista.
Il punto è che devi anche avere l'asse delle X, che saranno date o mesi; dovrai preparare una lista anche per questi, penso, e passarli ad una proprietà diversa di quella view (?) che stai usando per visualizzare il grafico.
Case containcassopark
ListView3.Clear
Dim macchine As List
Dim formatnumero As Double
macchine= parser.NextArray
For i = 0 To macchine.Size - 1
Dim m As Map
m = macchine.Get(i)
Dim tl As TwoLines
tl.First = m.Get("data")
formatnumero = m.Get("totale")
tl.Second = formatnumero
ListView3.AddTwoLines2(tl.First, tl.Second, tl)
grafico
Next
io quindi faccio la query
Response from server: [{"data":"08\/01\/2018 05:38","totale":"1530"},{"data":"10\/02\/2018 09:12","totale":"988"},{"data":"01\/03\/2018 11:09","totale":"2431"}]
a questo
ExecuteRemoteQuery("SELECT data, SUM(Importo) As totale FROM incassi WHERE n_macchina = " & macchina & " GROUP BY SUBSTRING(Data,4,2)",containcasso)
cosi in containcasso ho tutti i valori degli importi e le date, ora come le metto nella list?
Private Gennaio,Febbraio,Marzo As Int' in sub global
Dim decodifica As JSONParser
decodifica.Initialize(LeggeRec.GetString)
Dim dati As List
dati = decodifica.NextArray
For i = 0 To dati.Size - 1
Dim m As Map
m = dati.Get(i)
data = m.Get("data")' qui hai tutta la stringa con data e orario 08/01/2018 05:38
totale = m.Get("totale")'qui hai tutti i valori dei mesi
Gennaio = m.Get(0)' qui prendi solo quello che interessa cioe' gennaio
Febbraio = m.Get(1)'febbraio
Marzo = m.Get(2)'marzo ecc...
caricagrafico '------> le variabili le passi al grafico ---> sub grafico
Next
End If
mpc1.ChartData = Array As Float(Gennaio, Febbraio, Marzo, 40.0, 30.0, 40.0) 'qui aggiungi le variabili
Private Gennaio,Febbraio,Marzo As Int' in sub global
Dim decodifica As JSONParser
decodifica.Initialize(LeggeRec.GetString)
Dim dati As List
dati = decodifica.NextArray
For i = 0 To dati.Size - 1
Dim m As Map
m = dati.Get(i)
data = m.Get("data")' qui hai tutta la stringa con data e orario 08/01/2018 05:38
totale = m.Get("totale")'qui hai tutti i valori dei mesi
Gennaio = m.Get(0)' qui prendi solo quello che interessa cioe' gennaio
Febbraio = m.Get(1)'febbraio
Marzo = m.Get(2)'marzo ecc...
caricagrafico '------> le variabili le passi al grafico ---> sub grafico
Next
End If
mpc1.ChartData = Array As Float(Gennaio, Febbraio, Marzo, 40.0, 30.0, 40.0) 'qui aggiungi le variabili
non limito cosi l'estrazione? nel db sono presenti tutti i dati sia del 2018 che del 2017.
posso fare in modo che i dati estratti siano esempio gli ultimi 6 ?
io cosi estraggo tutti:
io quindi faccio la query
Response from server: [{"data":"08\/01\/2018 05:38","totale":"1530"},{"data":"10\/02\/2018 09:12","totale":"988"},{"data":"01\/03\/2018 11:09","totale":"2431"}]
a questo
ExecuteRemoteQuery("SELECT data, SUM(Importo) As totale FROM incassi WHERE n_macchina = " & macchina & " GROUP BY SUBSTRING(Data,4,2)",containcasso)
solo che ora vorrei fare in modo di passarli al grafico, limitandoli a 6 per esempio.
il mio codice è solo un esempio.Non devi copiare tutto nel tuo progetto!!
lo devi adattare al tuo
B4X:
Case containcassopark
ListView3.Clear
Dim macchine As List
Dim formatnumero As Double
macchine= parser.NextArray
For i = 0 To macchine.Size - 1
Dim m As Map
m = macchine.Get(i)
Dim tl As TwoLines
tl.First = m.Get("data")
formatnumero = m.Get("totale")
tl.Second = formatnumero
ListView3.AddTwoLines2(tl.First, tl.Second, tl)
grafico
Next
mbc1.LegendText = Array As String("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
mbc1.ChartData = Array As Float ("formatnumero") 'values - it will be converted to %
Case containcasso
ListView3.Clear
Dim macchine As List
Dim formatnumero As Double
macchine= parser.NextArray
For i = 0 To macchine.Size - 1
Dim m As Map
m = macchine.Get(i)
Dim tl As TwoLines
tl.First = m.Get("data")
formatnumero = m.Get("totale")
gennaio = m.Get(0)
febbraio = m.Get(1)
marzo = m.Get(2)
grafico
tl.Second = formatnumero
ListView3.AddTwoLines2(tl.First, tl.Second, tl)
Next
Grafico:
mbc1.LegendText = Array As String("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
mbc1.ChartData = Array As Float (gennaio,febbraio,marzo) 'values - it will be converted to %
e mi da errore
B4X:
main_jobdone (B4A line: 355)
gennaio = m.Get(0)
java.lang.NumberFormatException: For input string: "null"
at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1306)
at java.lang.Double.parseDouble(Double.java:547)
at anywheresoftware.b4a.BA.ObjectToNumber(BA.java:646)
at anywheresoftware.b4a.samples.mysql.main._jobdone(main.java:1918)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:186)
at anywheresoftware.b4a.keywords.Common$11.run(Common.java:1135)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6692)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
java.lang.NumberFormatException: For input string: "null"
Dim MesiValori (12) as Float
For i = 0 To macchine.Size - 1
Dim m As Map
m = macchine.Get(i)
Dim tl As TwoLines
tl.First = m.Get("data")
formatnumero = m.Get("totale")
For mi=0 to 11
MesiValori(mi) = m.Get(mi)
Next
grafico
tl.Second = formatnumero
ListView3.AddTwoLines2(tl.First, tl.Second, tl)
Next