Please help how can i refresh b4xpage so that it show the current data loaded
this code here opens the required page with the loaded info
below is what is supposed to be displayed every time data is loaded
this code here opens the required page with the loaded info
B4X:
Dim jt As HttpJob
jt.Initialize("", Me)
jt.Download("http://kccug.com/KABOJJAAPPAPI/api/HandlerVBArchivebxV2/GetCustomersJSON?customerid=" & acad)
'jt.GetRequest.Timeout =2000 '10 seconds
'Sleep(0)
Wait For (jt) JobDone(jt As HttpJob)
If jt.Success Then ' if job is success (http status code 200)
Dim RetVal As String
RetVal = jt.GetString
Log(RetVal)
If jt.GetString = "[]" Then
xui.MsgboxAsync("No Past Performance for this Child","SMIS KABOJJA")
ProgressDialogHide
Return
Else
'Expressed, sstscore, sstgrade, engscore, engrade, mathsscore, mathsgrade, sciencescore, sciencegrade, totalscore, totalgrade
Dim jp As JSONParser
jp.Initialize(jt.GetString)
'Log(jp) ' will pr
Log($"Token(${jp})"$)
Dim quotdt As List = jp.NextArray
For Each quotd As Map In quotdt
Log("admno: " & quotd.Get("Account"))
Log("Stream: " & quotd.Get("Stream"))
Log("Names: " & quotd.Get("Names"))
Log("Class: " & quotd.Get("Class"))
Log("Expressed: " & quotd.Get("Expressed"))
Log("sstscore: " & quotd.Get("sstscore"))
Log("sstgrade: " & quotd.Get("sstgrade"))
Log("engscore: " & quotd.Get("engscore"))
Log("engrade: " & quotd.Get("engrade"))
Log("mathsscore: " & quotd.Get("mathsscore"))
Log("mathsgrade: " & quotd.Get("mathsgrade"))
Log("sciencescore: " & quotd.Get("sciencescore"))
Log("sciencegrade: " & quotd.Get("sciencegrade"))
Log("Totalscore: " & quotd.Get("totalscore"))
Log("Totalgrade: " & quotd.Get("Totalgrade"))
Log("Division: " & quotd.Get("Division"))
Log("ire: " & quotd.Get("ire"))
Log("iregrade: " & quotd.Get("iregrade"))
Log("Years: " & quotd.Get("Years"))
Log("atk: " & quotd.Get("atk"))
'query = "CREATE TABLE Academicspastv2 ( Names TEXT, Class TEXT, Stream TEXT, Expressed TEXT, sstscore Text, sstgrade TEXT, engscore Text,engrade Text,mathsscore Text,mathsgrade Text,sciencescore Text,sciencegrade Text,Totalscore Text,Totalgrade TEXT, id INTEGER )"
'SQL1.ExecNonQuery(query)
'Starter.SQL1.ExecNonQuery("INSERT INTO Academics VALUES('" & quotd.Get("Names") & "','" & quotd.Get("class") & "','" & quotd.Get("Stream") & "','" & quotd.Get("Subject") & "','" & quotd.Get("Total") & "','" & quotd.Get("Grade") & "','" & quotd.Get("Mid") & "','" & quotd.Get("Ends") & "','" & quotd.Get("Term") & "','" & quotd.Get("Years") & "','" & quotd.Get("atk") & "')")
B4XPages.MainPage.SQL.ExecNonQuery2("INSERT INTO Academicspastv2 VALUES(?, ?, ?,?, ?, ?,?, ?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object(quotd.Get("Names"), quotd.Get("Class"), quotd.Get("Stream"),quotd.Get("Expressed"),quotd.Get("sstscore") ,quotd.Get("sstgrade"),quotd.Get("engscore"),quotd.Get("engrade"),quotd.Get("mathsscore"),quotd.Get("mathsgrade"),quotd.Get("sciencescore"),quotd.Get("sciencegrade"),quotd.Get("totalscore"),quotd.Get("Totalgrade"),quotd.Get("Division"),quotd.Get("ire"),quotd.Get("iregrade"),quotd.Get("Years"),quotd.Get("Account"),quotd.Get("atk")))
Next
'Return
'ProgressDialogShow2("Processing the Final data...",False)
Sleep(100)
ProgressDialogHide
'StartActivity(Archiveprimary)
End If
End If
End If
jt.Release
If Account.Text="" Then
xui.MsgboxAsync("Select the Student Name from the List Below","SMIS")
Return
Else
'If Spinner1.SelectedItem="Select from the List..." Then
' MsgboxAsync("Select the Various Terms from the List","SMIS")
' Return
' Else
If Classr.Text .Contains("PRE") Then
xui.MsgboxAsync("No Scores for PrePrimary Please","SMIS")
Return
Else
'State.TextUp = Spinner1.SelectedItem
'State.TextDown= Classr.Text
'StartActivity(Archiveprimary)
B4XPages.ShowPage("Archiveprimary")
End If
End If
below is what is supposed to be displayed every time data is loaded
B4X:
Sub Class_Globals
Private Root As B4XView 'ignore
Private xui As XUI 'ignore
Private B4XTable1 As B4XTable
Private xui As XUI
Private CS As CSBuilder
Type StudentData (Studentnamed As String, LblCity As String,Classr As String, Stream As String, Subject As String, Termr As String,City As String, Latitude As Float, Longitude As Float, Altitude As String,Totalmarks As String,English As String,Maths As String,Science As String,Sst As String,ire As String,Lit1 As String,Lit2 As String,Totalgrade As String,Division As String,iregrade As String,sciencegrade As String,sstgrade As String,mathsgrade As String,engrade As String)
Private StudentCount As Int
Private Limit As Int = 2000
'Private Panel1 As B4XView
Private TxtSearchFilter As B4XView
Private showpastrecords As CustomListView
Private Studentnamed, Classr, Stream, LblCity,English, Maths, Science, Sst, Totalgrade,Totalmarks,Termr,Division,ire,iregrade,sciencegrade,sstgrade,engrade,mathsgrade,Lscience,Lsst,label11 As B4XView
Dim LblName ,Label9 As Label
End Sub
'You can add more parameters here.
Public Sub Initialize As Object
Return Me
End Sub
'This event will be called once, before the page becomes visible.
Private Sub B4XPage_Created (Root1 As B4XView)
Root = Root1
'load the layout to Root
Root.LoadLayout("archivedresults")
Sleep(0)
TxtSearchFilter_TextChanged("", "")
Sleep(0)
'Studentname="Makumbi"
B4XTable1.Clear
B4XTable1.AddColumn("Student Names", B4XTable1.COLUMN_TYPE_TEXT).Width=150dip
B4XTable1.AddColumn("Class", B4XTable1.COLUMN_TYPE_TEXT).Width=50dip
'B4XTable1.AddColumn("Stream", B4XTable1.COLUMN_TYPE_TEXT)
B4XTable1.AddColumn("Subject", B4XTable1.COLUMN_TYPE_TEXT)
B4XTable1.AddColumn("Grade", B4XTable1.COLUMN_TYPE_TEXT).Width=40dip
B4XTable1.AddColumn("Total", B4XTable1.COLUMN_TYPE_TEXT).Width=40dip
B4XTable1.AddColumn("Term", B4XTable1.COLUMN_TYPE_TEXT)
Dim Data As List
Data.Initialize
Dim Term As String
'Term = academicextract.State.TextUp
B4XPages.MainPage.SQL.ExecNonQuery("UPDATE Academicspast SET grade ='GR' WHERE grade=:Grade OR grade is null ")
B4XPages.MainPage.SQL.ExecNonQuery("UPDATE Academicspast SET Total ='NIL' WHERE Total=:Total OR Total is null ")
Dim rs As ResultSet = B4XPages.MainPage.SQL.ExecQuery("SELECT Names, Class, Subject,Grade,Total,Term FROM Academicspast WHERE term = '" & Term & "' ORDER BY Grade ASC, Total DESC;" )
Do While rs.NextRow
Dim row(6) As Object
'row(0) = rs.GetDouble("CustomerId")
''row(1) = rs.GetString("FirstName") & " " & rs.GetString("LastName")
'row(2) = rs.GetString("Company")
row(0) = rs.GetString("Names")
row(1) = rs.GetString("Class")
'row(2) = rs.GetString("Stream")
row(2) = rs.GetString("Subject")
row(3) = rs.GetString("Grade")
row(4) = rs.GetString("Total")
row(5) = rs.GetString("Term")
'Some of the fields are Null. We need to convert them to empty strings:
'If row(2) = Null Then row(2) = ""
'row(3) = rs.GetString("Address")
Data.Add(row)
Loop
rs.Close
B4XTable1.SetData(Data)
End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
Sub ShowPastrecords_VisibleRangeChanged (FirstIndex As Int, LastIndex As Int)
Dim ExtraSize As Int = 25 'List size
For i = Max(0, FirstIndex - ExtraSize) To Min(LastIndex + ExtraSize, showpastrecords.Size - 1)
Dim Pnl As B4XView = showpastrecords.GetPanel(i)
If i > FirstIndex - ExtraSize And i < LastIndex + ExtraSize Then
If Pnl.NumberOfViews = 0 Then 'Add each item/layout to the list/main layout
Dim AD As StudentData = showpastrecords.GetValue(i)
Pnl.LoadLayout("Studentinfo2")
'Root.LoadLayout("Studentinfo2")
Dim kclass As String
Classr.Text = AD.Classr
kclass= AD.Classr
Log(kclass)
Log( AD.Termr)
Stream.Text = AD.Stream
LblName.Text = AD.Termr
Label9.Text= AD.Subject
'LblICAO.Text = AD.ICAO
LblCity.Text = AD.Studentnamed
Totalmarks.Text = AD.Totalmarks
English.Text= AD.English
Maths.Text=AD.Maths
Totalgrade.Text=AD.Totalgrade
If kclass="P1" Then
Lsst.Text="LIT1:"
Lscience.Text="LIT2:"
End If
If kclass="P2" Then
Lsst.Text="LIT1:"
Lscience.Text="LIT2:"
End If
If kclass="P3" Then
Lsst.Text="LIT1:"
Lscience.Text="LIT2:"
End If
Sst.Text=AD.Sst
Science.Text=AD.Science
Division.Text=AD.Division
ire.Text=AD.ire
'label12.Text="SUL"
iregrade.Text=AD.iregrade
sciencegrade.Text=AD.sciencegrade
sstgrade.Text=AD.sstgrade
mathsgrade.Text=AD.mathsgrade
engrade.Text=AD.engrade
' Log(AD.Totalgrade)
' English.Text=AD.en
'LblLongitude.Text = AD.Longitude
End If
Else 'Not visible
If Pnl.NumberOfViews > 0 Then
Pnl.RemoveAllViews 'Remove none visable item/layouts from the list/main layout
End If
End If
Next
End Sub
Sub TxtSearchFilter_TextChanged (Old As String, New As String)
If New.Length = 1 Or TxtSearchFilter.Text.Length = 2 Then Return
showpastrecords.Clear
Sleep(0)
Dim SenderFilter As Object
If New.Length = 0 Then
StudentCount = B4XPages.MainPage.SQL.ExecQuerySingleResult("SELECT COUNT(*) FROM `Academicspastv2`;") 'The amuont of airports listed in the database
SenderFilter = B4XPages.MainPage.SQL.ExecQueryAsync("SQL", $"SELECT * FROM `Academicspastv2` ORDER BY `Names` ASC LIMIT ${Limit};"$, Null) 'I NO NOT RECOMMEND that you load the whole database
Else
StudentCount = 0
SenderFilter = B4XPages.MainPage.SQL.ExecQueryAsync("SQL", $"SELECT * FROM `Academicspastv2` WHERE `Years` Like '%${New}%' ORDER BY `Years` ASC LIMIT 500;"$, Null) 'Limited for slower devices
End If
Wait For (SenderFilter) SQL_QueryComplete (Success As Boolean, rs As ResultSet)
If Success Then
Dim StartTime As Long = DateTime.Now
Do While rs.NextRow
Dim AD As StudentData
AD.Initialize
AD.Studentnamed = rs.GetString("Names")
AD.Classr = rs.GetString("Class")
AD.Stream = rs.GetString("Stream")
AD.Termr = rs.GetString("Expressed")
'AD.Subject= rs.GetString("Class")
AD.Totalmarks= rs.GetString("Totalscore")
AD.Totalgrade= rs.GetString("Totalgrade")
AD.English= rs.GetString("engscore")
AD.engrade= rs.GetString("engrade")
AD.Maths= rs.GetString("mathsscore")
AD.mathsgrade= rs.GetString("mathsgrade")
AD.Sst= rs.GetString("sstscore")
AD.Science= rs.GetString("sciencescore")
AD.Division= rs.GetString("Division")
AD.ire= rs.GetString("ire")
AD.iregrade= rs.GetString("iregrade")
AD.sciencegrade=rs.GetString("sciencegrade")
AD.sstgrade=rs.GetString("sstgrade")
Dim Pnl As B4XView = xui.CreatePanel("")
Pnl.SetLayoutAnimated(0, 0, 0, showpastrecords.AsView.Width, 190dip) 'Panel height + 4 for drop shadow
showpastrecords.Add(Pnl, AD)
Loop
rs.Close
Log($"List population time = ${NumberFormat2((DateTime.Now - StartTime) / 1000, 1, 2, 2, False)} seconds to populate ${showpastrecords.Size} Student names"$)
Else
Log(LastException)
End If
'Add an icon to the activity text by using CSBuilder
If StudentCount = 0 Then
B4XPages.SetTitle(Me, CS.Initialize.Typeface(Typeface.FONTAWESOME).Append(Chr(0xF19D)).Append($" ${showpastrecords.Size} Records"$).PopAll) 'Page title
Else
B4XPages.SetTitle(Me,CS.Initialize.Typeface(Typeface.FONTAWESOME).Append(Chr(0xF19D)).Append($" Loaded ${Limit} Pastrecords Loaded from ${StudentCount}"$).PopAll)
End If
End Sub
Sub B4XPage_close
B4XPages.ClosePage(Me)
'B4XPages.ShowPageAndRemovePreviousPages("AcademicExtract")
End Sub