English
Instant Developer Foundation Documentazione
  • Tips & Tricks

Ricerca di una riga specifica di pannello

copia link

Risposta

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, ??, ??, ??, ??,
    ??, ??, ??, ??)
}

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
  }
}

Attenzione, questo articolo è stato dichiarato obsoleto! Ultima modifica: 22/11/2013 / Validità: da 8.1.3650

Vedi anche

  • Actual Position (proprietà)
  • Find Record (funzione)