Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315

    [delphi] componente dbgrid

    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

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,324
    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:
    codice:
    ...
      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!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.