Classi e Files
Classi e Files
CLASSI E FILES
A prescindere dal tipo di database utilizzato, uno dei punti di forza di
WinDev è sicuramente l'analisi. L'analisi può essere vista come una mera
descrizione dei files che costituiscono il database (o i database) utilizzati nel
progetto, con i relativi campi che costituiscono i record di ogni files.
Ma nell'analisi è possibile definire anche viste, queries, triggers, constraints,
stored procedure e stored function. Per affrontare questi argomenti
bisognerebbe aprire un discorso troppo lungo, relativo alla programmazione
SQL, pertanto mi soffermo solo sugli aspetti che descrivono la interazione tra i
files del database e le classi.
Lavorando sui database, capita molto spesso di dover caricare più record
alla volta. Ad esempio caricare il gruppo di record che costituiscono le linee di
una fattura. Poniamo di aver definito nell'analisi una query che carica le linee di
una fattura con un determinato ID
HEXECUTE(QRY_CaricaLineeFatt, hQueryDefault, FatturaID)
arrLinee is array of ClassLineaFattura
FileToArray(QRY_CaricaLineeFatt, arrLinee)
Et voilà: tutte le linee di quella fattura sono dentro il nostro array. Ed ogni
elemento dell'array è una classe, con tutti i suoi membri, proprietà e
procedure...
2. Programmazione 3-tier
La programmazione Three-Tier vede una netta separazione tra 3 elementi:
interfaccia (presentazione), elaborazione e accesso ai dati.
1. L'interfaccia non accede ai dati nè dovrebbe elaborarli. Riceve dati dal
secondo livello e li presenta.
2. Il secondo livello esegue l'elaborazione sui dati. Riceve i dati dal terzo
livello, li elabora, li passa al primo livello se serve visualizzarli, li raccoglie
dal primo livello, eventualmente li verifica e li passa al terzo livello per il
salvataggio.
3. Il terzo livello è l'unico che conosce come accedere ai dati. Lui sa come
"parlare" al database, o al sistema di dati da cui leggere / scrivere
(normalmente un database, ma potrebbe essere un webservice, un foglio
di calcolo, un file di testo...)
Ovviamente un sistema 3-tier perfetto nel mondo reale spesso non esiste,
talvolta esigenze elaborative o di performance costringono a mischiare un po' i
levelli e pertanto è possibile incontrare sistemi 3-tier in cui il secondo livello
esegue accessi in sola lettura direttamente ai dati senza passare per il terzo
livello.
ClienteClass is Class
Rec is Cliente
PRIVATE
dbName = "Cliente"
pkIndex is string = "ClienteID" //Primary Key
END