PDA

Visualizza la versione completa : [delphi] componente dbgrid


123delphi321
21-02-2004, 15:12
salve,

ho un componente dbgrid in un form, il dbgrid contiene n record.

mi sapete dire come posso scorrere tutti questi record?

ho cercato sulle proprieta componenti quali eof next....ma nn ne ho trovati....

dovrei scrivere un ciclo e leggere i campi di ogni decord:

esempio...rozzo!

go first
foi i = 1 to....eof

variabile1=campo1
variabile2=campo2
variabile3=campo3

move next;

spero di aver reso l'idea...

grazie

alka
22-02-2004, 00:12
La DBGrid, come tutti i controlli data aware, rappresenta una semplice vista sui dati, contenuti generalmente in un DataSet.

Per scorrere i record, non hai bisogno di utilizzare metodi e proprietà forniti dalla griglia, ma puoi agire direttamente sul DataSet al quale essa è collegata.

Sono TDataSet tutti i componenti che discendono da questa classe e rappresentano una tabella dati organizzata in righe e colonne (TTable, IBTable, ecc.).

Tutti i DataSet, in virtù del fatto che discendono dalla classe TDataSet, forniscono una propria implementazione specifica a metodi che sono definiti comunque nella classe TDataSet e che servono per aprirlo, ispezionarlo, scorrerlo e altro ancora.

I metodi Next e Prior permettono di spostarsi al record successivo o al record precedente di un DataSet, mentre con i metodi First e Last è possibile gettarsi direttamente sul primo o sull'ultimo record disponibili.

Per evitare di "uscire dal selciato", è sempre bene ispezionare le proprietà Bof ed Eof, che indicano rispettivamente se è stato raggiunto l'inizio o la fine del set di record.

Segue un esempio di scansione di una tabella:


...
MyQuery.SQL.Text := '...';
MyQuery.Open;
while not MyQuery.Eof do
begin
// fai qualcosa con i campi del record corrente
MyQuery.Next;
end;
MyQuery.Close;
...


Attenzione: se una DBGrid è collegata, tramite un componente TDataSource, al DataSet sul quale si effettuano le operazioni di navigazione e spostamento da un record all'altro, tali operazioni saranno visibili anche su schermo attraverso l'aggiornamento dell'aspetto dei controlli data aware (di cui anche la DBGrid fa parte) che sono collegati al DataSet. E' possibile inibire questo effetto collaterale, che rallenta pure il processo, usando i metodi EnableControls e DisableControls del DataSet, affinchè i controlli data aware non vengano avvertiti degli spostamenti all'interno dei record fino a quando l'elaborazione degli stessi non è giunta al termine.

Io generalmente preferisco crearmi dinamicamente un componente Table o Query appropriato per la piattaforma di accesso ai dati in uso senza collegarlo ad alcun controllo ed eseguire le operazioni necessarie.

Spero di averti fornito indicazioni utili.

Cerco di essere il più discorsivo possibile perchè è importante capire i concetti che governano i gruppi di componenti e controlli che stai sperimentando; per i principi della programmazione orientata agli oggetti, tutti i controlli del "parentado" funzionano in modo analogo.

Ciao! :ciauz:

Loading