Written by xinyiman Luglio 17, 2014, 06:30:00 pm20765 ViewsRating: 0 (0 Rates)Print
In questo articolo visioneremo i concetti basilari della programmazione per database con i componenti che permettono la visualizzazione dei contenuti di un campo appartenente al record selezionato di un datasource.
Nell'esempio che andremo a vedere prenderemo in considerazione SQLite come DBMS. La struttura SQL che useremo per il nostro esempio è la seguente.
Lazarus possiede molti package per poter lavorare con i DB, i due sicuramente più usati, mantenuti e testati sono: i componenti standard rilasciati con Lazarus stesso e ZeosLib. Questo articolo prende in considerazione ZeosLib il quale permette un altissimo grado di astrazione del DBMS, cosa estremamente utile per non vincolare l'applicazione al DBMS. L'esempio che andremo a vedere vi permetterà di acquisire i rudimenti per impadronirvi dell'argomento.
Per prima cosa, creiamo una nuova applicazione tenendo in considerazione quanto imparato nei precedenti articoli sui database, quello che segue è il codice del nostro esempio
procedure TForm1.FormCreate(Sender: TObject); begin //svuoto la tabella Self.Q_Inserimento.SQL.Text:='DELETE FROM utenti;'; Self.Q_Inserimento.ExecSQL; Self.ZQuery1.Refresh; end;
function TForm1.GetLastId(): integer; var ret: integer; begin ret:=0; Self.Q_Inserimento.SQL.Text:='select Id as MaxId from utenti group by Id order by Id desc;'; Self.Q_Inserimento.Open; if not Self.Q_Inserimento.EOF then begin Self.Q_Inserimento.First; ret:=Self.Q_Inserimento.FieldByName('MaxId').AsInteger; end; Self.Q_Inserimento.Close; result:=ret; end;
end.
ma prendiamo in considerazione le singole parti
Andiamo a vedere la FormCreate, ovvero le azioni che vengono svolte dal programma alla creazione della form, nel nostro caso specifico la prima procedura che viene eseguita dal programma
procedure TForm1.FormCreate(Sender: TObject); begin //svuoto la tabella Self.Q_Inserimento.SQL.Text:='DELETE FROM utenti;'; Self.Q_Inserimento.ExecSQL; Self.ZQuery1.Refresh; end;
come si può vedere andiamo a cancellare il contenuto della tabella usata nell'esempio.
Poi possiamo notare che abbiamo creato la seguente funzione
function TForm1.GetLastId(): integer; var ret: integer; begin ret:=0; Self.Q_Inserimento.SQL.Text:='select Id as MaxId from utenti group by Id order by Id desc;'; Self.Q_Inserimento.Open; if not Self.Q_Inserimento.EOF then begin Self.Q_Inserimento.First; ret:=Self.Q_Inserimento.FieldByName('MaxId').AsInteger; end; Self.Q_Inserimento.Close; result:=ret; end;
che permette di ottenere l'indice massimo contenuto nella griglia. Nell'evento OnClick del pulsante Button1 andiamo ad inserire il codice che automaticamente aggiunge in maniera incrementale le singole righe della tabella basandosi sul risultato della funzione GetLastId visionata poco sopra.
Poi successivamente andiamo ad impostare la proprietà ReadOnly a True nella DbGrid del nostro esempio in modo da non lasciare modificare i dati all'utente dalla DBGrid stessa. Ora aggiungiamo al seguente esempio 3 componenti
Andiamo ad impostare per il componente DBEdit1 le seguenti proprietà: DataSource: DataSource1 DataField: Nome
Andiamo ad impostare per il componente DBText1 le seguenti proprietà: DataSource: DataSource1 DataField: Cognome
Andiamo ad impostare per il componente DBMemo1 le seguenti proprietà: DataSource: DataSource1 DataField: Citta
Se eseguiamo il programma vedremo che in funzione del record su cui ci spostiamo possiamo visionare ma non modificare il campo Nome, mentre possiamo visionare e modificare i campi Cognome e Citta.
xinyiman registered at Italian community of Lazarus and Free Pascal on Ottobre 14, 2011, 10:56:28 pm and has posted 3270 posts in the boards since then. Last visit was Novembre 08, 2024, 02:51:07 pm.
Questo blog non rappresenta una testata giornalistica poiché viene
aggiornato senza alcuna periodicità. Non può pertanto considerarsi un
prodotto editoriale ai sensi della legge n. 62/2001.
Questo sito utilizza cookie, anche di terze parti, per offriti servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina, cliccando su un link o proseguendo la navigazione in altra maniera, acconsenti all’uso dei cookie.