Visual Basic
Visual Basic
Il Visual Basic (VB) è un linguaggio di programmazione prodotto dalla Microsoft® che utilizza
un’interfaccia di tipo WUI (Windows User Interface) che ha la caratteristica si essere di semplice
impiego e di utilizzare sintassi e funzionalità di facile apprendimento.
Il Visual Basic deriva dal linguaggio Basic sviluppato per il linguaggio operativo DOS ed è stato
modificato per sfruttare la nuova interfaccia utente utilizzata in ambiente window. La versione è più
recente è la versione 6.0
La Microsoft ha sviluppato anche una versione successiva che pur mantenendo le caratteristiche
della versione 6.0 costituisce però un linguaggio a sé stante e fa parte della piattaforma .NET.
Il software è acquistabile separatamente o all’interno del pacchetto Microsoft Visual Studio 6.0.
L'installazione del pacchetto completo o del singolo software è guidata da una procedura
automatica.
Fausto Maria Ferri, Nuovo Corso di tecnologie e progettazione di sistemi elettrici ed elettronici, Vol. 2, © Ulrico
Hoepli Editore S.p.A., 2023
Interfaccia e ambiente di sviluppo
Lanciata l’esecuzione del VB compare la schermata mostrata in figura 1.
L’utente deve scegliere quale tipo di progetto desidera attivare, per default si attiva un file EXE
standard ovvero un classico progetto VB.
Le altre voci, permettono di attivare applicazioni avanzate. Si procede attivando il comando Apri
per creare un nuovo progetto EXE standard.
Si attiva, quindi, a pieno schermo l'interfaccia completa del programma dell'IDE di sviluppo
mostrata nella figura 2.
Nella finestra principale viene mostrato il Form della nostra applicazione da implementare.
A sinistra una barra verticale, la barra generale dei comandi e a destra altre tre finestre.
La prima, in alto mostra il prospetto del progetto, contenente gli oggetti utilizzabili nel progetto;
quella centrale mostra le caratteristiche del form (complete di commento esplicativo in italiano); e
quella in basso la posizione del Form sullo schermo.
L’esecuzione del programma si attiva e si arresta attivando la freccia orientata presente nella barra
principale in alto.
Di seguito faremo riferimento ad una semplice applicazione; un programma che acquisisce il valore
di due resistenze e che calcola il valore della loro connessione in serie e in parallelo.
Fausto Maria Ferri, Nuovo Corso di tecnologie e progettazione di sistemi elettrici ed elettronici, Vol. 2, © Ulrico
Hoepli Editore S.p.A., 2023
I componenti di un modulo VB: Le form e gli oggetti
Qualsiasi applicazione, sia software di sviluppo o applicazione WUI, si basa su un elemento
principale: la Form
La Form è una classica finestra di Windows come quella di Word o di Explorer. Su questa finestra
vengono posizionati gli elementi che consentono la manipolazione dei dati e la realizzazione di
applicazioni basate su Base di Dati (Data Base)
Gli elementi che desideriamo inserire nel progetto si possono prelevare selezionando l’icona che
caratterizza il comando o il controllo, dalla barra generale (figura 3) a sinistra sullo schermo,
mediante un doppio click del tasto sinistro del mouse o con la tecnica di trascinamento (drag' n'
drop) e, mantenendo il tasto premuto, trascinarlo nella posizione desiderata sul Form.
Ciascun elemento viene descritto nella finestra (Finestra delle Proprietà) a destra da proprietà che
possono essere modificate dall’utente (figura 4).
Fausto Maria Ferri, Nuovo Corso di tecnologie e progettazione di sistemi elettrici ed elettronici, Vol. 2, © Ulrico
Hoepli Editore S.p.A., 2023
Figura 4 – posizionamento degli elementi sul Form
Il nome standard attribuito alla form può essere modificato utilizzando la proprietà Name della
Form, selezionandola e scrivendo una nuova etichetta che richiami la funzionalità dell’applicazione
che si sta implementando, p.e, ‘FormResistenze’. Il primo carattere dopo il suffisso deve essere
maiuscolo. I nomi dovrebbero essere sempre scelti con attenzione, perché in seguito è difficile da
modificare perché è ad esso che tutti i controlli inseriti nella Form fanno riferimento.
La proprietà Caption contiene la scritta che compare sul titolo della Form e quindi caratterizza
l’applicazione che si sta implementando (‘Calcolo Resistenze’).
Iniziamo a sviluppare l’applicazione proposta posizionando sul Form gli elementi necessari: 5
etichette (Label), 2 TextBox e un CommandButton.
I 2 texbotton sono necessari per acquisire i valori delle due resistenze, le etichette per caratterizzare
i dati (Resistenza 1 e Resistenza 2), l’unità di misura (Ohm) e il risultato dell’elaborazione, il
CommandButton per attivare il calcolo dopo l’inserimento dei dati di calcolo.
Nella finestra delle proprietà assegneremo ai vari elementi le seguenti diciture:
Fausto Maria Ferri, Nuovo Corso di tecnologie e progettazione di sistemi elettrici ed elettronici, Vol. 2, © Ulrico
Hoepli Editore S.p.A., 2023
Label5 (Name:lblRisultato, Text: Resistenza serie)
Label6 (Name:lblResPar, Text: nessun testo)
Label7 (Name:lblUnMis3, Text: ohm)
CommandButton (Name:cmdCalcola, Text: Calcola)
Attivando con un click il CommandButton viene eseguito uno script VB si apre una finestra che
contiene già il seguente codice:
end Sub
Fausto Maria Ferri, Nuovo Corso di tecnologie e progettazione di sistemi elettrici ed elettronici, Vol. 2, © Ulrico
Hoepli Editore S.p.A., 2023
Private Sub cmdCalcola_Click();
if [Link] = ″″ Then
[Link] = ″Inserisci un valore″
Else
[Link] = [Link]
end Sub
Premendo il tasto funzione F5 o il tasto con la freccia play sulla barra principale si attiva il
programma che mostrerà prima la frase:
Inserisci un valore
Fausto Maria Ferri, Nuovo Corso di tecnologie e progettazione di sistemi elettrici ed elettronici, Vol. 2, © Ulrico
Hoepli Editore S.p.A., 2023
Figura 7 – Replica del valore digitato
Il programma viene completato aggiungendo il controllo anche per la seconda finestra di editing. I
valori digitati acquisiti come righe di testo, vengono convertiti in numeri, sommati per calcolare la
resistenza serie equivalente. Il risultato viene convertito da numero a stringa e visualizzato
inserendolo nel campo Caption dell’etichetta lblResPar.
Nella figura 8 viene mostrato il listato del programma sorgente.
Fausto Maria Ferri, Nuovo Corso di tecnologie e progettazione di sistemi elettrici ed elettronici, Vol. 2, © Ulrico
Hoepli Editore S.p.A., 2023
Figura 8 - Programma sorgente
L’esecuzione del programma genera la finestra mostrata nella figura 9, che evidenzia sia
l’acquisizione dei valori delle due resistenze sia i risultati dell’elaborazione.
Fausto Maria Ferri, Nuovo Corso di tecnologie e progettazione di sistemi elettrici ed elettronici, Vol. 2, © Ulrico
Hoepli Editore S.p.A., 2023
Figura 9 – Programma Applicativo acquisisce i dati dalle finestre di eding, elabora il calcolo e
visualizza il risultato.
Per poter utilizzare un qualsiasi linguaggio di programmazione bisogna apprendere, per prima cosa
quali sono i suoi elementi fondamentali: variabili, costanti, tipi di dato e operatori.
Le variabili sono aree di memoria virtuali che il programma si riserva nel sistema operativo che lo
esegue. Il contenuto di queste arre può nello svolgimento dell’elaborazione del programma essere
modificato. All’interno del programma ad ogni variabile si attribuisce un’etichetta che la identifica,
la dichiarazione si effettua con la parola chiave Dim.
Le costanti, come le variabili occupano aree virtuali di memoria ma il loro valore attribuito all’atto
della creazione non viene più modificato dall’esecuzione del programma o da eventi esterni. Si
utilizza, per la dichiarazione, la parola chiave Const. Le aree di memoria occupate da una costante
sono inferiori a quelle attribuite ad una variabile, per cui il loro utilizzo rende il programma più
efficiente.
Fausto Maria Ferri, Nuovo Corso di tecnologie e progettazione di sistemi elettrici ed elettronici, Vol. 2, © Ulrico
Hoepli Editore S.p.A., 2023
Le variabili possono assumere differenti valori e occupare aree di memoria di differente estensione
pertanto è utile definire i tipi di dato in modo tale che l’occupazione di memoria e l’elaborazione
successiva sia più efficiente. I dati possono essere del tipo numerico, stringhe, ….
Il contenuto delle variabili e delle costanti vengono utilizzati dal programma per essere elaborati
mediante operazioni di calcolo o di elaborazione delle stringhe.
L’operazione che deve essere eseguita viene indicata per mezzo di operatori, che sono simboli che
vengono utilizzati per effettuare uguaglianze, operazioni matematiche, implementare condizioni
avanzate, ecc...
Option Explicit
Dim Res1 As Integer
Dim Res2 As Integer
Abbiamo introdotto due variabili Res1 e Res2 come variabili di tipo intero. L’opzione Option
Explicit viene utilizzata da VB per sovraccaricare meno, in fase di localizzazione delle variabili, il
buffer del programma interprete.
Fausto Maria Ferri, Nuovo Corso di tecnologie e progettazione di sistemi elettrici ed elettronici, Vol. 2, © Ulrico
Hoepli Editore S.p.A., 2023
Istruzioni condizionali
Si crei un nuovo EXE standard e si assegni alla Form il Name frmVerifRes; si inserisca un
CommandButton e lo si chiami cmdVerifica. Nella parte generale si inserisca il seguente codice:
Option Explicit
Dim Res1 As Integer
Dim Res2 As Integer
Si esegue il programma premendo F5, al click sul CommandButton sullo schermo compare la frase
“Le due resistenze sono uguali”. La frase inserita all’inizio del codice preceduta da un apice è un
commento. Esso non viene elaborato dall’interprete di VB ma rappresenta un commento utilizzato
dal programmatore per titolare o spiegare l’elaborazione implementata dal programma.
Fausto Maria Ferri, Nuovo Corso di tecnologie e progettazione di sistemi elettrici ed elettronici, Vol. 2, © Ulrico
Hoepli Editore S.p.A., 2023
Select Case condizione
Case 0: espressione 0
Case 1: espressione 1
Case 2: espressione 2
Case Else
tutti gli altri casi
End Select
A seconda del valore assunto dalla condizione viene eseguita una espressione differente. Per i
valori fuori campo di variazione, o non definiti, viene eseguita l’espressione dopo Else.
In molte circostanze istruzioni o gruppi di istruzioni devono essere eseguite più volte per un
numero definito di volte o finché una certa condizione non si sia verificata o se presente non sia più
vera. Queste istruzioni sono dette di iterazione (o cicli).
• For - Next
• For Each - Next
• While
• Do While - Loop
Il ciclo For - Next ripete un'istruzione sulla base di una variabile di tipo Integer che parte da un
valore predefinito, in genere zero (0), e si perpetua fino ad un valore maggiore, ad esempio nove (9)
ripetendo quindi il ciclo da 0 a 9 per un totale di 10 ripetizioni. La sintassi base è la seguente:
Si crei un nuovo EXE standard e si inserisca sulla form un bottone di comando a cui assegnare il
nome cmdExampleFor ed una Label di nome lblTesto.
Option Explicit
Dim i As Integer
Fausto Maria Ferri, Nuovo Corso di tecnologie e progettazione di sistemi elettrici ed elettronici, Vol. 2, © Ulrico
Hoepli Editore S.p.A., 2023
Next
End Sub
0
1
2
3
4
5
6
7
8
9
Il ciclo For Each - Next si differenzia da For - Next per il motivo che il primo ricerca ogni
occorrenza di un elemento in un elemento madre.
La sintassi base è la seguente:
Il ciclo While esegue un'istruzione (o un'espressione) fin quando una condizione è vera.
La sintassi base è la seguente:
While condizione
espressione
Wend
Il ciclo Do While - Loop esegue un'istruzione (o un'espressione) fin quando una condizione è vera.
La sintassi di base è:
Do While condizione
espressione
Loop
Gli Array
Fausto Maria Ferri, Nuovo Corso di tecnologie e progettazione di sistemi elettrici ed elettronici, Vol. 2, © Ulrico
Hoepli Editore S.p.A., 2023
Le variabili utilizzate nei programmi possono talvolta essere raggruppate in una variabile speciali
in forma tabellare. Tale agglomerato di dati, statici o dinamici sono definiti Array.
Per esempio possono costituire un Array, i giorni della settimana (lunedì, martedì, …).
La sintassi di base è:
Dim nome_array(numero_elementi)
nome_array(0) = "valore"
nome_array(1) = "valore"
nome_array(2) = "valore"
…….
Si crei un nuovo EXE standard e si inserisca una Label di nome lblResNorm da ingrandire, ed un
bottone di comando da chiamare cmdResNorm. Si inserisca nella porzione generale il seguente
codice
Option Explicit
Dim ResNormal(12) As String
Dim i As Integer
Il ciclo scorre tutti gli elementi dell’array e li visualizza riga per riga. L’istruzione
Ubound(ResNorm) restituisce il numero di elementi che costituiscono l’array.
Fausto Maria Ferri, Nuovo Corso di tecnologie e progettazione di sistemi elettrici ed elettronici, Vol. 2, © Ulrico
Hoepli Editore S.p.A., 2023
Funzioni e Sottoprogrammi
Gli elementi fondamentali di un programma sono le funzioni e i sottoprogrammi (subroutine).
Entrambe sono formate da istruzioni (script): le funzioni elaborano le informazioni e restituiscono
un valore, mentre il sottoprogramma è un programma all’interno di un programma.
Sia le Funzioni che le Sub possono essere pubbliche o private: pubbliche quando sono visibili a
tutto il programma ed a tutte le Form e generalmente vengono inserite in un modulo di classe
esterno; private quando fanno parte della Form in cui nascono, vivono e muoiono.
Le parole chiave Public e Private permettono di definire a quale tipo di funzione o sottoprogramma
ci si riferisce (se omesse VB da per scontato che si tratta di una Funzione o di una Subroutine
privata).
Si crei un nuovo EXE standard e si acceda al codice della Form dal menu Visualizza / Codice
e si inserisca il codice per la seguente Funzione:
Fausto Maria Ferri, Nuovo Corso di tecnologie e progettazione di sistemi elettrici ed elettronici, Vol. 2, © Ulrico
Hoepli Editore S.p.A., 2023
Alla Funzione Messaggio() passo la variabile errore di tipo String che rappresenta il testo del
messaggio da visualizzare. Esso vene concatenato e visualizzato tramite il comando MsgBox che
provvede ad aprire una finestra contenente il messaggio completo (figura 6).
Si acceda poi alla Funzione / evento Form_Load() semplicemente facendo un doppio click in un
punto qualsiasi della Form dalla visualizzazione struttura e si richiami la Funzione Messaggio()
come segue:
L’esempio mostrato nel paragrafo precedente utilizzava l’operatore di concatenazione per creare la
stringa da visualizzare.
Il VB ha già implementate nel linguaggio molte funzioni che possono essere utilizzate per
manipolare le stringhe, come sostituire parti o caratteri di una stringa, selezionare una parte di una
stringa, controllarne la lunghezza, dividere una stringa in più stringhe…
La Funzione Replace() serve a sostituire caratteri all'interno di una stringa.
La sua sintassi è:
Replace (stringa, carattere da sostituire, carattere sostitutivo)
Talvolta una stringa contiene caratteri incompatibili con la sintassi. Tipico è il caso dell’apice.
Utilizzato per caratterizzare le linee di commento e che pertanto devono essere ignorate dal
programma interprete. Ma alcuni cognomi contengono al loro interno l’apice, come, per esempio,
D’Alessandro.
In questo caso il problema si può risolvere mettendo due apici:
Replace("D’Alessandro", "′",""")
Questi controlli sono particolarmente importanti in fase di inserimento e di lettura dei dati in una
Base di Dati (Data Base).
La Funzione Split() divide una stringa in un array di stringa; prendiamo la seguente stringa:
ho una serie di dati separati da un carattere separatore (#) che consente di individuare la singola
informazione e rappresenta un utile riferimento per dividere la stringa.
La sintassi è:
Fausto Maria Ferri, Nuovo Corso di tecnologie e progettazione di sistemi elettrici ed elettronici, Vol. 2, © Ulrico
Hoepli Editore S.p.A., 2023
Si crei un nuovo EXE standard, si inserisca sulla Form una Label di nome lblSepara e si acceda
alla Sub Form_Load(); nella parte generale si inserisca il seguente codice:
Option Explicit
Dim stringa As String
Dim s() As String
Dim i As Integer
dove s() è una stringa di tipo Array che utilizzerò per lo Split(). Nel sottoprogramma, invece, si
inserisce il seguente codice:
Resistore
100ohm
a_filo
Ricordo che, come un Array, il conteggio degli item parte da zero (0) fino ad N.
Per controllare la lunghezza di una stringa si utilizza la funzione Len() che restituisce il numero di
caratteri che compongono una stringa. Siccome la numerazione degli indici dell’array inizia da zero
un eventuale ciclo per scorrere l’intero array deve essere scritto in questo modo
For i = 0 To Len(s) - 1
[Link] = [Link] & s(i) & vbCrLf
Next
che accetta come parametro la stringa di cui, appunto, si vuole controllare la lunghezza.
La sintassi è la seguente:
Len(stringa)
restituisce 9.
Fausto Maria Ferri, Nuovo Corso di tecnologie e progettazione di sistemi elettrici ed elettronici, Vol. 2, © Ulrico
Hoepli Editore S.p.A., 2023
Talvolta in una stringa è necessario eliminare spazi superflui. È possibile eliminare gli spazi
superflui sulla sinistra, sulla destra o sia sulla sinistra che sulla destra di una stringa. Le Funzioni
sono rispettivamente LTrim() (Left Trim), RTrim() (Right Trim) e Trim().
La sintassi è analoga per tutte e tre le Funzioni
Le Funzioni Left(), Right() e Mid() servono rispettivamente ad isolare da una stringa un certo
numero di caratteri specificati.
Fausto Maria Ferri, Nuovo Corso di tecnologie e progettazione di sistemi elettrici ed elettronici, Vol. 2, © Ulrico
Hoepli Editore S.p.A., 2023
• Second - restituisce i secondi accettando un oggetto Time (12)
I dati vengono acquisiti in genere in formato di stringa, ma poi da questi bisogna, talvolta, estrarre
valori numerici e poi, dopo l’elaborazione, bisogna realizzare la funzione inversa trasformare i
valori numerici in stringhe per poterli visualizzare.
Le Funzioni di conversione più utili sono CInt() e CStr() che convertono un dato rispettivamente in
formato Integer ed in formato String.
La sintassi è la seguente
Dim numero As String
Dim valore As Integer
numero = "4" ' è un numero in formato stringa
valore=CInt(numero) ' attribuisce a valore 4
Uno degli scopi per cui è stato sviluppato il Visual Basic è stato la creazione di potenti interfacce
che permettono la gestione locale o via rete (NON Internet) di dati residenti su una fonte di dati
quale un database.
Il VB lavora in modo ottimale con i prodotti sviluppati dalla Microsof (DBMS, ovvero gestori di
database) come Access e SQL Server, ma lavora correttamente anche con DBMS di case differenti
come Oracle.
Gli esempi proposti si riferiscono a interazioni con DB creati con Access, preferibilmente versione
2000 e, per alcuni approfondimenti, se necessario sul linguaggio SQL a cui si fa riferimento si
consigli la lettura del capitolo, allegato al testo, scaricabile da Internet.
Fausto Maria Ferri, Nuovo Corso di tecnologie e progettazione di sistemi elettrici ed elettronici, Vol. 2, © Ulrico
Hoepli Editore S.p.A., 2023
VB utilizza per la connessione con una fonte di dati e la gestione dei dati ivi residenti: l'oggetto
ADO (ActiveX Data Object) per l'interfacciamento tra il programma e la fonte di dati stessa.
ADO mette a disposizione, tra l'altro, due oggetti, ovvero Connection per la gestione della
connessione ed altre utility, e Recordset per la gestione fisica dei dati.
Progettiamo ora una form che ci consenta di registrare in un Data Base creato con Access, alcuni
dati come: cognome e nome, codice fiscale
per l'importazione dei riferimenti ad ADO, selezionando le voci mostrate nella figura 7.
Si nomini la Form frmGestioneDati, si inseriscano tre Label con Caption Nome, Cognome Codice
Fiscale e tre TextBox in cui svuotare la proprietà Text e modificare i nome come txtNome,
txtCognome e txtCodiceFiscale. La figura 8 mostra l’aspetto finale della Form.
Si aggiunga poi un CommandButton da nominare cmdAcquisisci e modificare la Caption in
Registra.
Salviamo utilizzando i comandi File / Salva progetto con nome... salviamo il progetto
Codice_Fiscale in una cartella creata in precedenza, p.e. ProvaDB.
All’interno di questa cartella vengono memorizzati i sei file di progetto creati automaticamente da
VB.
Si apre il programma Access e si crea memorizzandolo sempre nella cartella ProvaDB il file Access
[Link] al cui interno verrà creata la tabella utenti in cui inserire i campi id (Contatore),
nome (Testo), cognome (Testo) codice fiscale (Testo).
Completata la creazione del file acces si torna sul Form e si apre visualizzazione struttura, si accede
al codice della Form ed si inserisce queste righe di codice nella parte generale:
Option Explicit
Dim cn As [Link]
Dim rs As [Link]
Dim stringa As String
Attiviamo ora con un doppio click sul CommandButto il sottoprogramma in cui inserire il seguente
codice:
Private Sub cmdRegistra_Click()
If Len(Trim([Link])) = 0 Then
MsgBox "Inserire il nome", vbCritical, "ERRORE"
[Link]
Exit Sub
End If
If Len(Trim([Link])) = 0 Then
MsgBox "Inserire il cognome", vbCritical, "ERRORE"
Fausto Maria Ferri, Nuovo Corso di tecnologie e progettazione di sistemi elettrici ed elettronici, Vol. 2, © Ulrico
Hoepli Editore S.p.A., 2023
[Link]
Exit Sub
End If
If Len(Trim([Link])) = 0 Then
MsgBox "Inserire il codice sfiscale", vbCritical, "ERRORE"
[Link]
Exit Sub
End If
Il sottoprogramma compiendo tre test per verificare che i tre campi siano stati compilati
correttamente, utilizzando l'espressione Exit Sub per uscire dalla Sub qualora le condizioni non
siano state soddisfatte e non si vuol permettere la continuazione della routine:
A condizioni soddisfatte si crea la stringa di connessione al database e la si memorizza nella
variabile stringa:
stringa = "Provider=[Link].4.0;Data Source="
stringa = stringa & "C:\provaDB\[Link]"
Con la clausola Set si impostano le variabili cn ed rs come nuove istanze degli oggetti Connection e
Recordset:
Si utilizzano i metodi AddNew ed Update per aggiungere un nuovo record alla tabella e per
aggiornarlo; passo poi al Recordset i campi della tabella e assegno loro il valore con le variabili
contenenti i dati corrispondenti:
[Link]
Fausto Maria Ferri, Nuovo Corso di tecnologie e progettazione di sistemi elettrici ed elettronici, Vol. 2, © Ulrico
Hoepli Editore S.p.A., 2023
rs("nome") = [Link]
rs("cognome") = [Link]
rs("codice fiscale") = [Link]
[Link]
Si pulisce la memoria del buffer dalle variabili contenenti la connessione ed il recordset, settandole
sul valore speciale di VB Nothing:
Set cn = Nothing
Set rs = Nothing
Infine, a conferma del buon esito della registrazione, si visualizza un messaggio di conferma:
Option Explicit
Dim cn As [Link]
Dim rs As [Link]
Dim stringa As String
Fausto Maria Ferri, Nuovo Corso di tecnologie e progettazione di sistemi elettrici ed elettronici, Vol. 2, © Ulrico
Hoepli Editore S.p.A., 2023
Set rs = Nothing
End Sub
La sequenza delle operazioni è simile a quella già descritta per l'inserimento: la stringa di
connessione al database è la stessa, è necessario settare ed aprire, ed in fine svuotare, gli oggetti
Connection e Recordset. Concentriamoci sulla lettura dei dati:
If [Link] Then
[Link] = "Nessun dato"
Else
While [Link] = False
[Link] = [Link] _
& rs("nome") & " " _
& rs("cognome") & " " _
&rs(codice fiscale) & vbCrLf
[Link]
Wend
End If
Se non ci sono dati nella tabella, ovvero se la lettura del Recordset arriva alla fine della tabella
(EOF - End Of File) si genera un messaggio che avvisa che non sono stati trovati dati; in caso
contrario si esegue un ciclo e si visualizza Label tutti i record estratti dalla stringa SQL
Fausto Maria Ferri, Nuovo Corso di tecnologie e progettazione di sistemi elettrici ed elettronici, Vol. 2, © Ulrico
Hoepli Editore S.p.A., 2023