Ricerca di una riga specifica di pannello
copia linkRisposta
Per selezionare la riga di un pannello che corrisponde a determinati criteri è possibile utilizzare la procedura FindRecord, che permette di posizionarsi su una determinata riga cercandola con la coppia campo=valore.
Esempio di codice
// **********************************************
// Posiziona il pannello sulla categoria con ID=7
// **********************************************
public void Categorie.Categoria7()
{
// Cerco la categoria con ID uguale a 7
Categorie.FindRecord(Categorie.Idcategoria.Me(), C7, ??, ??, ??, ??,
??, ??, ??, ??)
}
// Posiziona il pannello sulla categoria con ID=7
// **********************************************
public void Categorie.Categoria7()
{
// Cerco la categoria con ID uguale a 7
Categorie.FindRecord(Categorie.Idcategoria.Me(), C7, ??, ??, ??, ??,
??, ??, ??, ??)
}
Limitazioni
In alcuni casi la FindRecord non è sufficiente, ad esempio se occorre posizionarsi sulla prima riga per la quale Campo1 < Campo2. In questi casi è possibile utilizzare la sequenza di statement riportata sotto.
- Creare una variabile intera in cui memorizzare il numero di riga.
-
Fare un Foreach sulle righe di pannello (tirando il pannello sul Visual Code Editor), e ad ogni ciclo incrementare di uno la variabile che memorizza il numero di riga; poi verificare se i criteri combaciano con quelli desiderati.
Se i criteri combaciano con quelli desiderati uscire dal ciclo con un break. - Alla fine del ciclo assegnare il valore della variabile alla proprietà ActualPosition del pannello.
Esempio di codice
// *****************************************************
// Posiziona il pannello sulla riga in cui NomeCategoria<NuovaEspressione
// *****************************************************
public void Categorie.Posiziona(
int ID //
)
{
int Nriga := 0 // Assegnazione iniziale
boolean found := False // Riga trovata
//
for each row (Categorie)
{
record Categorie
int Idcategoria //
string NomeCategoria //
string NuovaEspressione //
//
Nriga := Nriga + 1
//
// Verifico i criteri
if Categorie.NomeCategoria < NuovaEspressione
{
found := True
//
// Ho trovato il record giusto, esco
break
}
}
//
// Se ho trovato la riga la assegno
if found
{
Categorie.ActualPosition := Nriga
}
}
// Posiziona il pannello sulla riga in cui NomeCategoria<NuovaEspressione
// *****************************************************
public void Categorie.Posiziona(
int ID //
)
{
int Nriga := 0 // Assegnazione iniziale
boolean found := False // Riga trovata
//
for each row (Categorie)
{
record Categorie
int Idcategoria //
string NomeCategoria //
string NuovaEspressione //
//
Nriga := Nriga + 1
//
// Verifico i criteri
if Categorie.NomeCategoria < NuovaEspressione
{
found := True
//
// Ho trovato il record giusto, esco
break
}
}
//
// Se ho trovato la riga la assegno
if found
{
Categorie.ActualPosition := Nriga
}
}
Attenzione, questo articolo è stato dichiarato obsoleto! Ultima modifica: 22/11/2013 / Validità: da 8.1.3650