* * * *

Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

Trascinare un file nel programma
DB concetti fondamentali e ZeosLib
Recuperare codice HTML da pagina web
Mandare mail con Lazarus
Stabilire il sistema operativo
Esempio lista in pascal
File INI
Codice di attivazione
Realizzare programmi multilingua
Lavorare con le directory
Utilizzare Unità esterne
TTreeView
TTreeview e Menu
Generare controlli RUN-TIME
LazReport, PDF ed immagini
Intercettare tasti premuti
Ampliare Lazarus
Lazarus e la crittografia
System Tray con Lazarus
UIB: Unified Interbase
Il file: questo sconosciuto
Conferma di chiusura di un applicazione
Liste e puntatori
Overload di funzioni
Funzioni a parametri variabili
Proprietà
Conversione numerica
TImage su Form e Panel
Indy gestiore server FTP lato Client
PopUpMenu sotto Pulsante (TSpeedButton)
Direttiva $macro
Toolbar
Evidenziare voci TreeView
Visualizzare un file Html esterno
StatusBar - aggirare l'errore variabile duplicata
Da DataSource a Excel
Le permutazioni
Brute force
Indy 10 - Invio email con allegati
La gestione degli errori in Lazarus
Pascal Script
Linux + Zeos + Firebird
Dataset virtuale
Overload di operatori
Lavorare con file in formato JSON con Lazarus
Zeos ... dietro le quinte (prima parte)
Disporre le finestre in un blocco unico (come Delphi)
Aspetto retrò (Cmd Line)
Lazarus 1.0
Come interfacciare periferica twain
Ubuntu - aggiornare free pascal e lazarus
fpcup: installazioni parallele di lazarus e fpc
Free Pascal e Lazarus sul Raspberry Pi
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.
Creare un server multithread
guida all'installazione di fpc trunk da subversion in linux gentoo
Indice
DB concetti fondamentali e connessioni standard
Advanced Record Syntax
DB concetti fondamentali e DBGrid
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText
Advanced Record Syntax: un esempio pratico
Superclasse form base per programmi gestionali (e non)
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form
Superclasse form base per programmi gestionali (e non) #4 - wait animation
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog
Installare lazarus su mac osx sierra
immagine docker per lavorare con lazarus e free pascal
TDD o Test-Driven Development
Benvenuto! Effettua l'accesso oppure registrati.
Aprile 16, 2024, 05:45:48 pm

Inserisci il nome utente, la password e la durata della sessione.

75 Visitatori, 1 Utente

22 Feb 2012 - Dataset virtuale

A volte si presenta la necessità di lavorare con dei dataset virtuali ovvero dataset che non fanno riferimento ad una tabella reale.
I casi sono i più disparati, ad esempio per usare i file come se fossero dei database oppure per fare degli esempi che simulino l'uso di un database!

Bene vediamo come funzionano, per prima cosa creiamo un nuovo progetto applicazione e nella form che ci si presenta inseriamo dalla Tab "Data Access" un oggetto DataSource e un oggettoTBufDataSet (che rinomineremo VDset ovvero Virtual DataSet).
Poi ci spostiamo nella Tab "Data Controls" e inseriamo una TDBGrid sulla form, inoltre aggiungiamo anche due nuovi pulsanti che useremo per applicare un filtro ai dati e uno per rimuovere il filtro ai dati.

Bene ora ci troviamo con i seguenti oggetti inseriti
Codice: [Seleziona]

    VDSet: TBufDataset;
    Cmd_Applica_Filtro: TButton;
    Cmd_Elimina_Filtro: TButton;
    Datasource1: TDatasource;
    DBGrid1: TDBGrid;    

Bene ora andiamo nell'evento OnShow della nostra Form (che si chiama Form1) e incolliamo il seguente codice
Codice: [Seleziona]

     {dichiaro la struttura del dataset virtuale}
     VDSet.FieldDefs.Add('Nome',ftString,50);
     VDSet.FieldDefs.Add('Cognome',ftString,50);
     VDSet.CreateDataset;{creo il dataset virtuale con la struttura sopra dichiarata}
     VDSet.Open; {apro la connessione al dataset virtuale}
     VDSet.Append; {dico che voglio accodare dei dati al dataset virtuale}
     VDSet.Fields[0].Value:='Carlo'; {inserisco il campo Nome}
     VDSet.Fields[1].Value:='Verdi'; {inserisco il campo Cognome}
     VDSet.Post; {applico l'accodamento}
     VDSet.Append;{dico che voglio accodare dei dati al dataset virtuale}
     VDSet.Fields[0].Value:='Mario'; {inserisco il campo Nome}
     VDSet.Fields[1].Value:='Rossi'; {inserisco il campo Cognome}
     VDSet.Post; {applico l'accodamento}      

Come potete vedere tale codice è suddiviso in una prima parte dove definiamo la struttura del dataset virtuale e successivamente da una parte in cui inseriamo i dati nel dataset.
Nel nosto esempio abbiamo inserito due campi stringhe di 50 caratteri che hanno i seguenti nomi "Nome" e "Cognome" e poi li abbiamo riempiti con Carlo Verdi e Mario Rossi.
Nel nostro esempio dove c'è scritto ftString va inserita una variabile di tipo TFieldType che può essere valorizzata con uno dei seguenti valori
Codice: [Seleziona]

ftADT;
ftArray;
ftAutoInc;
ftBCD;
ftBlob;
ftBoolean;
ftBytes;
ftCurrency;
ftCursor;
ftDataSet;
ftDate;
ftDateTime;
ftDBaseOle;
ftFixedChar;
ftFixedWideChar;
ftFloat;
ftFMTBcd;
ftFmtMemo;
ftGraphic;
ftGuid;
ftIDispatch;
ftInteger;
ftInterface;
ftLargeint;

Altri valori si possono recuperare semplicemente scrivendo TFieldType. (con il punto dopo TFieldType) allorchè comparirà la lista completa dei possibili valori.
Ora andiamo ad assegnare (dall'object inspector) il DataSet dell'oggetto DataSource1 e lo settiamo con l'unico valore disponibile: VDSet.
Ora andiamo ad assegnare (dall'object inspector) il Datasource dell'oggetto DBGrid1 e lo settiamo con l'unico valore disponibile: Datasource1.

Ora andiamo ad inserire il seguente codice nell'evento OnClick dell'oggetto Cmd_Applica_Filtro      
Codice: [Seleziona]

VDSet.Filter:='Nome="Mario"';
VDSet.Filtered:=TRUE;    

Questo codice applica un filtro che consente di vedere solo i record che hanno il campo Nome valorizzato come Mario.
Ora andiamo ad inserire il seguente codice nell'evento OnClick dell'oggetto Cmd_Elimina_Filtro
Codice: [Seleziona]

VDSet.Filtered:=FALSE;

Questo codice elimina ogni filtro applicato.
Ora compilate e vedrete i vostri dati nella DBGrid e provate anche a cliccare sui pulsanti che applicano ed eliminano il filtro.

Potete scaricare l'esempio completo al seguente link: www.lazaruspascal.it/esempi/BufDataset.zip

Share on Twitter! Digg this story! Del.icio.us Share on Facebook! Technorati Reddit StumbleUpon

Articles in « Lazarus 1.0 »

Comments *

Commenting option has been turned off for this article.

Recenti

How To

Utenti
  • Utenti in totale: 785
  • Latest: gmax
Stats
  • Post in totale: 18769
  • Topic in totale: 2232
  • Online Today: 80
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 1
Guests: 75
Total: 76

Disclaimer:

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.