CIAO RAGAZZI , ho un piccolo problema che mi fa diventare femmina che sclera, scenario faccio un cavolo di intervallo e ritorno al quesito di ieri delle date e qui va tutto ok, a questo punto ci metto le query per fare la conta degli appuntamenti e chissà perché al primo click mi da dei valori ma al successivi click i valori sballano ma le query sono giuste in questo caso parto dal 29-03-2020 al 04-05-2020.
1) le date vanno liscie e perfette ad ogni click
2) il risultato varia
3) gli appuntamenti sono sempre gli stessi
ACCETTO CRITICHE COSTRUTTIVE MA PREFERISCO CONSIGLI PER OTTIMIZZARE IL TUTTO
y = valore massimo degli appuntamenti
x = numero del giorno
classe utilizzata e xchart per i grafici ( @klaus ) che ad ogni click parto da zero azzerando i valori precedenti, quindi dovrebbe ridarmi la stessa visualizzazione dei dati invece sembra vada a cazzo.
( i Nomi delle variabili sono alla cxxxo perchè prima di montare il tutto nell'app voglio testare bene il cdice)
@dragonblu19 qui puoi prendere degli spunti
1) le date vanno liscie e perfette ad ogni click
2) il risultato varia
3) gli appuntamenti sono sempre gli stessi
ACCETTO CRITICHE COSTRUTTIVE MA PREFERISCO CONSIGLI PER OTTIMIZZARE IL TUTTO
y = valore massimo degli appuntamenti
x = numero del giorno
classe utilizzata e xchart per i grafici ( @klaus ) che ad ogni click parto da zero azzerando i valori precedenti, quindi dovrebbe ridarmi la stessa visualizzazione dei dati invece sembra vada a cazzo.
( i Nomi delle variabili sono alla cxxxo perchè prima di montare il tutto nell'app voglio testare bene il cdice)
@dragonblu19 qui puoi prendere degli spunti
B4X:
#Region Project Attributes
#MainFormWidth: 800
#MainFormHeight: 800
#AdditionalJar: sqlite-jdbc-3.7.2
#End Region
Sub Process_Globals
Private fx As JFX
Private MainForm As Form
Private xui As XUI
Private BarChart1 As xChart
Private BarChart2 As xChart
Private BarChart3 As xChart
Private BarChart4 As xChart
Private BarChart5 As xChart
Private BarChart6 As xChart
Private xChart1 As xChart
Private xChart2 As xChart
Private Button1 As Button
Private Button2 As Button
Private Button3 As Button
Private DatePicker1 As DatePicker
Public usernamelogin As String = Null
Public passwordlogin As String = Null
Public idlogin As String = "20200425171020"
Public phonelogin As String = Null
Public maillogin As String = Null
End Sub
Sub AppStart (Form1 As Form, Args() As String)
MainForm = Form1
MainForm.RootPane.LoadLayout("ChartLayout")
MainForm.Stylesheets.Add(File.GetUri(File.DirAssets,"css-33.css"))
MainForm.Show
DatePicker1.DateFormat="yyyy-MM-dd"
DateTime.DateFormat="yyyy-MM-dd"
End Sub
Sub Application_Error (Error As Exception, StackTrace As String) As Boolean
Return True
End Sub
Sub count_Item_Calendar_For_Month
Dim year, month, day, week, endmonth As Long
DateTime.DateFormat="yyyy-MM-dd"
Dim oggi As String = DateTime.Date(DatePicker1.DateTicks)
Dim iniziosettimanadelmese, giornoinprocessione, testday As String
year = DateTime.GetYear(DateTime.DateParse(oggi))
month = DateTime.GetMonth(DateTime.DateParse(oggi))
day = 1
week = DateTime.GetDayOfWeek(DateTime.DateParse(oggi))
Select month
Case 1
Log("gennaio")
endmonth=31
Case 2
Log("febbraio")
endmonth=28
Case 3
Log("marzo")
endmonth=31
Case 4
Log("aprile")
endmonth=30
Case 5
Log("maggio")
endmonth=31
Case 6
Log("giugno")
endmonth=30
Case 7
Log("luglio")
endmonth=31
Case 8
Log("agosto")
endmonth=31
Case 9
Log("settembre")
endmonth=30
Case 10
Log("ottobre")
endmonth=31
Case 11
Log("novembre")
endmonth=30
Case 12
Log("dicembre")
endmonth=31
End Select
Select week
Case 1
Log("domenica")
week=6
Case 2
Log("lunedì")
week=0
Case 3
Log("martedì")
week=1
Case 4
Log("mercoledì")
week=2
Case 5
Log("giovedì")
week=3
Case 6
Log("venerdì")
week=4
Case 7
Log("sabato")
week=5
End Select
iniziosettimanadelmese = DateTime.Date( DateTime.DateParse(oggi)-(DateTime.TicksPerDay*(week)))
giornoinprocessione= iniziosettimanadelmese
Dim mm, dd As String
If File.Exists(File.DirApp,"lavagna.sqlite") = False Then Return
Dim sqlite As SQL
sqlite.InitializeSQLite(File.DirApp,"lavagna.sqlite", False)
If CreateBarData(xChart1) = True Then
End If
For i = 1 To endmonth
If month < 10 Then
mm="0"& month
Else
mm = month
End If
If i < 10 Then
dd = "0"&i
Else
dd = i
End If
Dim query As String ="select count(*) from calendars where userid='" & idlogin & "' and dateapp='" & year &"-"& mm & "-" & dd & "' ORDER BY dateapp;"
sqliteexecuty(sqlite,query,xChart1,dd)
Next
End Sub
Sub count_Item_Calendar_for_week
Dim year, month, day, week, endmonth As Long
DateTime.DateFormat="yyyy-MM-dd"
Dim oggi As String = "2020-04-01"
Dim iniziosettimanadelmese, giornoinprocessione, testday As String
year = DateTime.GetYear(DateTime.DateParse(oggi))
month = DateTime.GetMonth(DateTime.DateParse(oggi))
day = 1
week = DateTime.GetDayOfWeek(DateTime.DateParse(oggi))
Select month
Case 1
Log("gennaio")
endmonth=31
Case 2
Log("febbraio")
endmonth=28
Case 3
Log("marzo")
endmonth=31
Case 4
Log("aprile")
endmonth=30
Case 5
Log("maggio")
endmonth=31
Case 6
Log("giugno")
endmonth=30
Case 7
Log("luglio")
endmonth=31
Case 8
Log("agosto")
endmonth=31
Case 9
Log("settembre")
endmonth=30
Case 10
Log("ottobre")
endmonth=31
Case 11
Log("novembre")
endmonth=30
Case 12
Log("dicembre")
endmonth=31
End Select
Select week
Case 1
Log("domenica")
week=6
Case 2
Log("lunedì")
week=0
Case 3
Log("martedì")
week=1
Case 4
Log("mercoledì")
week=2
Case 5
Log("giovedì")
week=3
Case 6
Log("venerdì")
week=4
Case 7
Log("sabato")
week=5
End Select
iniziosettimanadelmese = DateTime.Date( DateTime.DateParse(oggi)-(DateTime.TicksPerDay*(week)))
giornoinprocessione= iniziosettimanadelmese
Dim mm, dd As String
If File.Exists(File.DirApp,"lavagna.sqlite") = False Then Return
Dim sqlite As SQL
sqlite.InitializeSQLite(File.DirApp,"lavagna.sqlite", False)
For ss=1 To 5
For i=1 To 7
#region da rivedere
' If ss>=5 Then
' testday = DateTime.Date( DateTime.DateParse(iniziosettimanadelmese)+(DateTime.TicksPerDay*(i)))
' If DateTime.GetMonth(DateTime.DateParse(testday)) > (month) Then
' If DateTime.GetDayOfWeek(DateTime.DateParse(testday)) = 2 Then
' i=7
' Exit
' End If
' End If
' End If
#end region
Dim query As String ="select count(*) from calendars where userid='" & idlogin & "' and dateapp='" & DateTime.Date( DateTime.DateParse(iniziosettimanadelmese)+(DateTime.TicksPerDay*(i))) & "' ORDER BY dateapp;"
Dim dds As Int = DateTime.GetDayOfMonth(DateTime.DateParse(iniziosettimanadelmese)+(DateTime.TicksPerDay*(i)))
If ss= 1 Then
If CreateBarData(BarChart1) = True Then
sqliteexecuty(sqlite,query,BarChart1,dds)
Log(dds)
End If
End If
If ss= 2 Then
If CreateBarData(BarChart2) = True Then
sqliteexecuty(sqlite,query,BarChart2,dds)
Log(dds)
End If
End If
If ss= 3 Then
If CreateBarData(BarChart3) = True Then
sqliteexecuty(sqlite,query,BarChart3,dds)
Log(dds)
End If
End If
If ss= 4 Then
If CreateBarData(BarChart4) = True Then
sqliteexecuty(sqlite,query,BarChart4,dds)
Log(dds)
End If
End If
If ss= 5 Then
If CreateBarData(BarChart5) = True Then
sqliteexecuty(sqlite,query,BarChart5,dds)
Log(dds)
End If
End If
If ss= 6 Then
If CreateBarData(BarChart1) = True Then
sqliteexecuty(sqlite,query,BarChart6,dds)
Log(dds)
End If
End If
Next
iniziosettimanadelmese=DateTime.Date( DateTime.DateParse(iniziosettimanadelmese)+(DateTime.TicksPerDay*(7)))
Next
End Sub
Sub sqliteexecuty(sqlite As SQL, query As String, chart As xChart, dd As String)
Dim rs As ResultSet
Dim SenderFilter As Object = sqlite.ExecQueryAsync("SQL", query, Null)
Wait For (SenderFilter) SQL_QueryComplete (Success As Boolean, rs As ResultSet)
Try
If Success Then
Do While rs.NextRow
Dim value As Double = rs.GetString2(0)
chart.AddBarMultiplePoint(dd, Array As Double(value))
chart.DrawChart
rs.Close
Loop
rs.Close
Else
Log(LastException)
End If
Catch
Log(LastException)
End Try
End Sub
Private Sub CreateBarData(chart As xChart) As Boolean
chart.ClearData
chart.Title= ""
chart.ChartType="BAR"
chart.XAxisName = ""
chart.YAxisName = ""
chart.DrawHorizontalGridLines=False
chart.DrawVerticalGridLines=False
chart.AutomaticScale=True
chart.AutomaticTextSizes=True
chart.ChartBackgroundColor=xui.Color_ARGB(255,50,50,50)
chart.AddBar("", xui.Color_ARGB(255,200,100,0))
chart.XScaleTextOrientation = "HORIZONTAL"
Return True
End Sub
Sub Button3_MouseClicked (EventData As MouseEvent)
count_Item_Calendar_for_week
End Sub
Sub Button2_MouseClicked (EventData As MouseEvent)
count_Item_Calendar_For_Month
End Sub
Sub Button1_MouseClicked (EventData As MouseEvent)
If CreateBarData(xChart2) = True Then
End If
End Sub
Last edited: