Android Question How can i refresh b4xpage to display current loaded data

Makumbi

Well-Known Member
Licensed User
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
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
 

Makumbi

Well-Known Member
Licensed User
B4X:
Private Sub B4XPage_Appear

End Sub
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
    Dim archivesummary As ArchivePrimary
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")
    archivesummary.Initialize
    B4XPages.AddPage("Archiveprimary", archivesummary) 'Add first page

    TxtSearchFilter_TextChanged("", "")
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

Private Sub B4XPage_Appear
    Sleep(0)
    
    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
I have tried to add page appear but it flags this error below
B4X:
Page with this id already exists: archiveprimary!
Error occurred on line: 174 (ArchivePrimary)
java.lang.RuntimeException: Class instance was not initialized (b4xtable)
    at anywheresoftware.b4a.debug.Debug.shouldDelegate(Debug.java:242)
    at b4a.example.b4xtable._clear(b4xtable.java:146)
    at b4a.example.archiveprimary$ResumableSub_B4XPage_Appear.resume(archiveprimary.java:185)
    at anywheresoftware.b4a.shell.DebugResumableSub$DelegatableResumableSub.resumeAsUserSub(DebugResumableSub.java:48)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:732)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:351)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:144)
    at anywheresoftware.b4a.BA.raiseEvent(BA.java:193)
    at anywheresoftware.b4a.shell.DebugResumableSub$DelegatableResumableSub.resume(DebugResumableSub.java:43)
    at anywheresoftware.b4a.keywords.Common$13.run(Common.java:1708)
    at android.os.Handler.handleCallback(Handler.java:873)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6669)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
** Service (starter) Destroy (ignored)**
** Service (httputils2service) Destroy **
** Service (starter) Destroy (ignored)**
** Service (httputils2service) Destroy **
 
Upvote 0

Makumbi

Well-Known Member
Licensed User
In most cases it is a mistake to use B4XPage_Appear to update the layout. This is an old habit from the complex activities model.

If the data was updated in another page then call a sub in the first page that will update the table.
B4X:
B4XPages.MainPage.UpdateTable
i have tried the above and still failed if any one can help with just a simple attachment i would be very greatfull
 
Upvote 0
Top