Ciao a tutti, piccolo quesito a cui non riesco a dare una risposta, popolo una CustomListView con un ciclo, i dati da visualizzare sono contenuti nelle label, tutto ok fino a quando le label sono tutte riempite con i dati, nel momento in cui una label di una riga non contiene dati string="" l'app va in crash e si chiude, se invece eseguo il codice passo passo con F8 non succede nulla e funziona tutto, sembra un problema di tempi di popolamento.
Idee grazie
Chiaramente, detta così non può che sembrare incredibile (se una label non contiene testo, non c'è motivo per il quale l'app debba andare in crash).
Se non ci fai vedere il sorgente, sarà impossibile aiutarti.
Dato ciò che dici riguardo la modalità debug e passo-passo, prova a mettere Sleep(0) ma temo che potresti avere altri problemi, facendolo (ovvero dovresti essere in grado di attendere il completamento del caricamento).
Intanto ho una domanda...
Che differenza c'è tra campo testo "" oppure null
Dom x as string
X=""
X= null
Non è uguale?
Va in errore quando label.text=X (null) nel ciclo però e non in debug passo passo, secondo me segna l'errore lì ma è da qualche altra parte
Sempre meglio usare delle variabili, non direttamente una view (a Label).
Sempre meglio usare il nome del campo, quindi GetString e non GetString2 - anche se a volte, per lavori particolari...!
Quindi prova:
B4X:
Dim Cognome As String ' non so che campo di db sia, faccio un esempio
Cognome = recordset.GetString("Cognome") ' <--- ovviamente nome del tuo campo
If Cognome = Null Then
Cognome = ""
End If
lblCognome.Text = Cognome
Dim Cognome As String ' non so che campo di db sia, faccio un esempio
Cognome = SvuotaSeNull(recordset.GetString("Cognome")) ' <--- ovviamente nome del tuo campo
lblCognome.Text = Cognome
Sub SvuotaSeNull(Var As String) As String
If Var = Null Then
Return ""
Else
Return Var
End If
End Sub
Così puoi applicarlo a qualunque campo stringa, più facilmente.
sub (strTimeTablesId as string ) as string
Dim ReturnValue As StringBuilder
Dim TimeTables As ResultSet
ReturnValue.Initialize
If strTimeTablesId = "" Or strTimeTablesId = Null Then 'qui crashava
ReturnValue.Append(" ")
Else
.....
end if
Return ReturnValue
end sub
con append vuole lo spazio tra le virgolette altrimenti si incazza… Booooooooo
Oggi provo... Prima di passare il dato alla funzione che restituisce il valore alla label intercetto il null del campo del record e non entro nella funzione scrivendo direttamente label.text = '"