4M - Appunti di INFORMATICA

Transcript

4M - Appunti di INFORMATICA
brescianet.com
http://lnx.brescianet.com/ScuolaForum2009/
Classe 4M - Modulo 3°
http://lnx.brescianet.com/ScuolaForum2009/viewtopic.php?f=9&t=22
Autore:
Pagina 1 di 2
e01692 [ ven feb 25, 2011 12:49 pm ]
Oggetto del messaggio: Classe 4M - Modulo 3°
Appunti estemporanei redatti durante le lezioni in laboratorio
Autore:
e01692 [ ven mar 11, 2011 2:02 pm ]
Oggetto del messaggio: 1173/2011 . Classe 4M - Modulo 3°
VBA => programmazione ad oggetti dotati di proprietà che sulla base di eventi
eseguono azioni
MASCHERE => consentono un input guidato che facilita gli utenti medio bassi che non
conoscono l'intima essenza di access
3/3/2011 - 4N
IDE = Interfaccia per disegnare le maschere
name => proprietà fondamentale di un oggetto => permette l'identificazione di un
oggetto su una maschera
la parola me nel codice VBA identifica l'oggetto contenitore : nel nostro caso la
maschera
perchè uso inserire nel nome una sigla iniziale associata al tipo ? Spiegato
lbl... => etichetta
txt... => textbox
btn... => bottone
lst... => listbox
cmb... => combobox
Quali vantaggi consente questa regola di naming ? spiegato
METODI => azioni svolte da un oggetto (corrispondono a delle funzioni)
--- 4N 4/3/2011
riprendere dagli eventi
tra function - end function oppure sub e end sub posso scrivere una sequenza di
istruzioni VBA che verranno eseguite assieme
Private Sub btnbottone_Click()
MsgBox "AVE"
Me.btnbottone.ForeColor = vbYellow
Me.btnprova.Enabled = False
End Sub
Private Sub NomeOggetto_NomeEvento(ParametriEvento)
sequenza istruzioni VBA
End Sub
docmd => oggetto VBA equivalente al menu di access
docmd.close => chiude il form corrente
docmd.quit => esce da Access)
Autore:
e01692 [ lun mar 14, 2011 10:02 am ]
Oggetto del messaggio: 14/03/2011 - Classe 4M - Modulo 3°
if => replica la capacità decisionale dell'uomo all'interno di un programma (capacità
selettiva)
For/while => replica la capacità iterativa (ripetere un'operazione) dell'uomo all'interno
di un programma (capacità iterativa)
if condizione then
codice VBA
else
....
codice VBA
....
end if
Variabile => contenitore di un valore che un prg riutilizza per evitare di chiederlo
continuamente
Esempio di uso di variabile - con dim dico che X è una variabile
Dim X
X = InputBox("Dammi X", "0")
If (X = 0) Then
MsgBox "Nullo"
ElseIf (X > 0) Then
MsgBox "Positivo"
Else
MsgBox "Negativo"
End If
MsgBox "Il quadrato è " & (X * X)
ATTENZIONE X non è "X"
msgbox X => visualizza il valore di X
msgbox "X" => visualizza il carattere "X"
sechi="il prof!"
msgbox Sechi => visualizza il valore di Sechi => ovvero "Il prof!"
msgbox "Sechi" => visualizza il carattere "Sechi"
"Mario" + "Rossi" = "Mario" & "Rossi" => "MarioRossi"
"Mario" * "Rossi" => Errore (l'operatore * è errato)
gli operatori matematici => + * - / ^ (potenza)
operatori stringhe => &
operatori BOOLEANI => AND, NOT OR
print 9+9
18
print 9 & 9 = Eequivale a "9" & "9" => la trasformazione del tipo è automatica
99
TEST se in una casella di testo ho qualcosa
Not (IsNull(Me.TxtNominativo) Or Me.TxtNominativo = "")
Me.TxtNominativo = "" => stringa vuota
IsNull(Me.TxtNominativo) => casella mai valorizzata
Nz(me.txtnominativo,"pippo") => se Me.txtnominativo è nullo imposta il valore a
"pippo"
Nz(me.txtnominativo,"")<>""=>alternativa
--4N 10/3/2011
I report vengono trattati come le maschere (form) : unica differenza mancano le
istruzioni
relative all'input
not , or , and => operatori logici
If Not (IsNull(Me.TxtNominativo) Or Me.TxtNominativo = "") Then
MsgBox "Saluta " + Me.TxtNominativo
Else
MsgBox "Digitare il nominativo da salutare", vbInformation, "Avviso"
End If
oppure
If (IsNull(Me.TxtNominativo) Or Me.TxtNominativo = "") Then
MsgBox "Digitare il nominativo da salutare", vbInformation, "Avviso"
Else
MsgBox "Saluta " + Me.TxtNominativo
End If
per costruire le condizioni devo usare gli operatori di confronto
<, <= , >=, >, <>, =
if x> 0 then
msgbox "Positivo"
end if
if x> 0 then
msgbox "Positivo"
else
msgbox "Non Positivo"
end if
Questa sequenza:
if x> 0 then
msgbox "Positivo"
else
if x< 0 then
msgbox "Negativo"
else
msgbox "Zero"
end if
end if
è equivalente a:
if x> 0 then
msgbox "Positivo"
elseif x< 0 then
msgbox "Negativo"
else
msgbox "Zero"
end if
ed anche equivalente a:
If (x=0) then
Msgbox “Nullo”
Elseif (x>0) then
Msgbox “Positivo”
Else
Msgbox “Negativo”
End if
Domanda sull'IF (determinazione del segno sul
If IsNull(TxtValore) Or TxtValore = "" Then
MsgBox "Digita qualcosa nella casella di testo"
ElseIf IsNumeric(TxtValore) Then
If (TxtValore > 0) Then
MsgBox "Positivo"
ElseIf (TxtValore < 0) Then
MsgBox "Negativo"
Else
MsgBox "Nullo"
End If
Else
MsgBox "Non hai digitato un numero"
End If
Studiare gli operatori logici all'interno degli appunti online xor, imp, and not, or ...
(si chiamano mappe della verita)
sub ... sequenza di istruzioni che non restituisce alcun valore
sub OrdinaNominativi(Classe as string)
algoritmo dicotomico in VBA
end sub
function ... sequenza di istruzioni che restituisce al termine un valore
function QuantiStudentiSonoPresenti(Classe as string) as long
algoritmo che effettua l'appello
QuantiStudentiSonoPresenti=<numero assenti>
end function
La funzione restituisce il valore assegnato all'interno del corpo della funzione mediante
un assegnamento del tipo:
NomeFunzione=valore da restituire
Autore:
e01692 [ ven mar 18, 2011 1:59 pm ]
Oggetto del messaggio: 18/03/2011 - Classe 4M - Modulo 3°
le condizioni possono essere combinate mediante operatori logici (and, or , not)
x>10 and x<20 => valuto se x appartiene all'intervallo (10,20) => le () escludono gli
estremi
x<10 or x>20 => valuto se x non appartiene all'intervallo [10,20] => le [] includono
gli estremi
tavole della verità: esempio quella dell'AND
True And True = True
True And False = False
False And True = False
False And False = False
AND ha precedenza sull'OR - Il NOT ha precedenza su tutti
true or false and true <> (true or false) and true
true or false and true equivale a true or (false and true)
not false and true => true (il not viene risolto per primo)
sub EliminaTabella(NomeTabella)
currentdb.execute("DROP TABLE " & nometabella)
end sub
EliminaTabella("Studenti")
Il corpo di una maschera è la zona dove metto i controlli
Dim x as date
x=now();
x="Ciao" => errore
spiegato le variabili
-- 4N => 18/3/2011
è errato scrivere => per maggiore/uguale
riprendere da DIM e TIMER
10 < x < 20 => errato => non segue la sintassi del VBA ma della notazione
matematica
Integer => 2 byte => 16bit =>2^16 combinazioni => tolgo un bit per il segno =>
+/- 2^15
Dim X => dichiaro una variabile X
Option explicit => obbligatorietà della dichiarazione di qualsiasi variabile => se
assegno un valore ad una variabile non
dichiarata l'esecuzione del prg si ferma mostrando un errore di "RUNTIME"
Il VBA consente la creazione automatica delle variabili appena ad una di esse assegno
un valore
L'assegnamento determina la creazione e anche il tipo di dato che quella variabile
gestirà
X=12
Giorno=#03/31/2011#
quindi se successivamente scrivo
Giorno="Ciao" => errore
x=23
Queste variabili vengono create in maniera implicita
Giorno = #3/31/2011#
AAA = 1
UUU = "M;arco"
MsgBox UUU
MsgBox AAA
MsgBox Giorno
Giorno = Giorno + 1
MsgBox Giorno
'AAA = AAA + UUU ' Errore
UUU = UUU + AAA
MsgBox AAA
Queste variabili vengono create in maniera esplicita
Dim Giorno As date
Dim AAA as long
Dim UUU as string
Giorno = #3/31/2011#
AAA = 1
UUU = "M;arco"
La definizione eplicita del tipo mette in evidenza eventuali errori di algoritmo o di input
quando il valore assegnato ad una
var non rientra nel range previsto
una riga che inizia con ' è un commento => serve a spiegare cosa svolge la porzione di
codice associata
Autore:
e01692 [ lun mar 21, 2011 10:02 am ]
Oggetto del messaggio: 21/03/2011 - Classe 4M - Modulo 3°
Dim NomeVariabile as Tipovariabile
La definizione eplicita del tipo mette in evidenza eventuali errori di algoritmo o di input
quando il valore assegnato ad una
var non rientra nel range previsto
Ricordarsi perchè:
E' meglio obbligare la dichiarazione esplicita delle variabili (mediante DIM)
=> Mi metto al riparo da errori di digitazione (esempio pippo e pipo)
E' meglio impostare il tipo di una variabile dichiarata in modo esplicito (mediante AS)
=> mi metto al riparo da errori di
esecuzione o input che generano valori esterni al range ammesso
me.timerinterval = 0 => evento timer disabilitato
s="" => stringa vuota
s="Ciao" => assegno alla var s la stringa "Ciao"
s=s & " Marco" => concateno al contenuto della var s la parola " Marco"
Sub SoluzioneEsercizio1()
Dim NotOK As Boolean
Dim minimo As Double
NotOK = (IsNull(Me.Txt_A) Or Me.Txt_A = "")
NotOK = NotOK Or (Not IsNumeric(Me.Txt_A))
NotOK = NotOK Or (IsNull(Me.Txt_B) Or Me.Txt_B = "")
NotOK = NotOK Or (Not IsNumeric(Me.Txt_B))
NotOK = NotOK Or (IsNull(Me.Txt_C) Or Me.Txt_C = "")
NotOK = NotOK Or (Not IsNumeric(Me.Txt_C))
NotOK = NotOK Or (IsNull(Me.Txt_D) Or Me.Txt_D = "")
NotOK = NotOK Or (Not IsNumeric(Me.Txt_D))
NotOK = NotOK Or (IsNull(Me.Txt_E) Or Me.Txt_E = "")
NotOK = NotOK Or (Not IsNumeric(Me.Txt_E))
If NotOK Then
Me.Testo1 = "Non sono tutti valori numerici"
Else
minimo = Me.Txt_A
If (minimo > Me.Txt_B) Then
minimo = Me.Txt_B
End If
If (minimo > Me.Txt_C) Then
minimo = Me.Txt_C
End If
If (minimo > Me.Txt_D) Then
minimo = Me.Txt_D
End If
If (minimo > Me.Txt_E) Then
minimo = Me.Txt_E
End If
Me.Testo1 = "Il minimo è : " & minimo
End If
End Sub
16 mod 4 = 0 => resto della divisione di 16 per 4
--spiegare rnd()
rowsource => utilizzato anche per contenere un comando sql
me.lstalunni.rowsource="SELECT Matricola, Nominativo FROM Alunni WHERE Classe='"
& me.lstclasse & "'"
listindex => -1 se nessuna riga del combo/list box risulta selezionata
listindex >=0 se ho una riga del combo/list box selezionata
il conteggio inizia da 0 => 0: 1° riga - 1: 2° riga ...
Input/output in un vero prg occupano circa il 70/80% del codice effettivo. Si tratta di
procedure standard che una volta
apprese possono essere replicate con semplicità
x>=asc("A") and x<=asc("Z") => maiuscolo
rnd => [0,1)
rnd*100 => [0,100)
s=format(conta,"00000") => "00010" se conta=10
mid(s,i,1) => i-esimo digit
Autore:
e01692 [ lun mar 28, 2011 9:04 am ]
Oggetto del messaggio: 28/3/2011 - Classe 4M - Modulo 3°
sqr(Numero) => radice quadrata
N=N+1 => incremento N
S=S & "A" => accodo "A" a s
S="A" & S => metto "A" davanti a quello che ho in s
Nei moduli inserisco le variabili/routine[sub/function] che uso in tutto il mio file MDB
(prg). Questo evita di riscrivere la
sub/function all'interno di ogni form
Una funzione/sub con davanti la scritta private è visibile solo nel modulo/maschera
dove è stata definita
Una funzione/sub con davanti la scritta public è visibile ovunque e può essere usata in
qualsiasi maschera
public nomedocente as string => variabile usabile ovunque nel prg
quando nel codice scrivo il nome di un modulo e poi . vedrò tutte le variabili e le
sub/function dichiarate come public
il for è usato per iterare (ripetere) un'operazione
currentdb => è il file MDB stesso
currentdb.name => percorso completo del file mdb
currentdb.TableDefs(6).Name => nome della 7 cartella
currentdb.TableDefs("Studenti").fields(2).Name => nome del 3° campo della tabella
"Studenti"
Mid(s, i, 1) => i-esimo carattere della stringa s
in VBA la sequenza
For i = Len(s) To 1 Step -1
' Mid(s, i, 1) => i-esimo carattere
If Mid(s, i, 1) = "\" Then
Exit For
End If
Next
corrisponde a: beccami la posizione dell'ultimo slash
esempio di funzione
Public Function EstraiNomeDelFileMDB() As String
Dim s As String
s = CurrentDb.Name
' adesso s contiene "C:\Documents and Settings\porf sechi\Desktop\esempioOK.mdb"
For i = Len(s) To 1 Step -1
' Mid(s, i, 1) => i-esimo carattere
If Mid(s, i, 1) = "\" Then
Exit For
End If
Next
EstraiNomeDelFileMDB = Mid(s, i + 1)
End Function
--4N 25/3/2011
saluto agli studenti in posizione pari
For i = 2 To 10 Step 2
MsgBox CStr(i) & "° Saluto"
Next
MsgBox CStr(i) & "° Saluto" => equivale a MsgBox i & "° Saluto" per via della
conversione automatica dei tipi
se il contatore ha già superato il valore finale allora il ciclo for si ferma
immediatamente.
se non viene indicato lo step allora vale 1 - se i >valore finale allore la parte iterativa
(codiceVBA) non verrà eseguita
for i=10 to 1
Codice VBA
next
le sub e le function consentono:
me => oggetto contenitore => corrisponde al form/maschera
currentdb =>
currentdb.TableDefs("Studenti").name
equivale a:
currentdb.TableDefs(6).Name => nome della 7 cartella
me.controls(i) => (i+1)-esimo controllo sul form
db.tabledefs => insieme delle tabelle presenti nel file MDB db
db.tabledefs(i)fields => insieme dei campi della (i+1)esima tabella
db.querydefs => insieme delle query presenti nel file MDB db
count => proprietà di un insieme che indica il nr di oggetti
me.controls.count => nr oggetti sul form
me.controls(i).controltype => identificativo del tipo di controllo sull'(i+1)-esimo
oggetto sul form corrente
Me.TxtOut = ""
For i = 0 To Me.Controls.Count - 1
Me.TxtOut = Me.TxtOut + Me.Controls(i).Name & vbCrLf
Next
METODO TOPDOWN
dato un problema complesso => scomposizione del problema in sottoproblemi +
semplici => ogni sottoproblema può essere risolto
in maniera indipendente e con maggior semplicità
La parola const consente la definizioni di costanti =>
const PIGRECO 3.14
2*r*PIGRECO => circonferenza
const IVA =0.2
Prezzofinale=Prezzo*(1+IVA)
Dim X as object => X è un oggetto dotato di metodi, proprietà e soggetto ad eventi
dim x as control => X è di tipo controllo
dim x as tabledef => X è di tipo tabella
sequenza che stampa il nome di tutte le tabelle
dim x as tabledef
for each x in currentdb.tabledefs
msgbox x.name
Next
Autore:
e01692 [ gio mar 31, 2011 9:59 am ]
Oggetto del messaggio: 31/03/2011 - Classe 4M - Modulo 3°
Elenca tutti i controlli e li visualizza in un textbox
Me.TxtOut = "" ' Azzero il contenuto della casella
For Each X In Me.Controls
Me.TxtOut = Me.TxtOut + X.Name + vbCrLf
Next
elenco dei controlli che iniziano per una determinata lettera A
For Each X In Me.Controls
if left(X.name,1)="A" then
msgbox(x.name)
end if
Next
elenco delle tabelle che iniziano per A o B
For Each X In currentdb.tabledefs
if left(X.name,1)="A" OR left(X.name,1)="B" then
msgbox(x.name)
end if
Next
elenco delle tabelle che iniziano per A e finiscono B
For Each X In currentdb.tabledefs
if left(X.name,1)="A" AND right(X.name,1)="B" then
msgbox(x.name)
end if
Next
crlf => carriage return line feed => invio => 13+10 ascii
Application => access stesso => da questo oggetto si diramano tutti gli oggetti
disponibili nel file MDB
Application.CurrentProject.AllForms => insieme di tutti i forms
Application.CurrentProject.AllForms.count => nr di maschere
Dim X as object => oggetto in generale
Dim X as control => controllo che probabilmente risiede su un form
Dim X as TextBox => controllo di tipo TextBOX che probabilmente risiede su un form
Utilizzando un tipo + preciso ottengo digitando un . un elenco di metodi e proprietà +
corretto
Dim X => Dim X As Variant => tipo variabile => il tipo dipende dal primo
assegnamento che effettuo
E' meglio fornire sempre un tipo preciso alla variabile . in questo modo blindo +
facilmente eventuali errori semantici (di
programmazione)
Attributes => proprietà che definisce il tipo di tabella
le ricerche (le condizioni) su stringhe sono + lente rispetto a quelle numeriche
Modalità for numerica - il campo viene identificato mediante un indice
Set Db = CurrentDb
Set Tbl = Db.TableDefs("TblEsempio")
For i = 0 To Tbl.Fields.Count - 1
msgbox Tbl.Fields(i).name
Next
X=20 => assegnamento per valori standard
set X=oggetto => assegnamento per gli oggetti
set X=Nothing => oggetto vuoto - Una variabile di tipo oggetto è inizializzata a
Nothing
una variabile X di tipo variant a null
Open <NOME FILE> For <METODO> As #<NUMERO>
NUMERO => identifica il file dove operare
METODO DI APERTURA
output => per scrivere su file
input => per leggere su file
print #22, "Ciao" => scrive Ciao in fondo al file 22
Autore:
e01692 [ ven apr 01, 2011 1:02 pm ]
Oggetto del messaggio: 1/4/2011 - Classe 4M - Modulo 3°
errore sintattico => scrivo ifff oppure dimentico il then => sarà access che mi avvisa
dell'errore
ControlType => proprietà che definisce il tipo di controllo
Me.Controls(i) => (i+1)-esimo elemento
me.txtstudente coincide con txtstudente
applicATion.currentdb = currentdb
riprendere dai files
input( X = nr byte da leggere, ID del file) => legge da #ID X byte e restituisce la
parte
letta
-- 4N 31/3/2011
Soluzione IF.11
Dim Conta As Long
Private Sub Form_Load()
Conta = 0
Me.TimerInterval = 100
End Sub
Private Sub Form_Timer()
Conta = Conta + 1
' dim x as string
' x=Format(Conta, "00000")
' con mid(x,i,1) => estraggo l'iesimo char
Me.lblConta.Caption = "Conta KM: " & Format(Conta, "00000")
End Sub
Domanda => sequenza di comandi per salvare il contenuto della casella di testo
TXTpioppo
Open "c:\pippo.txt" For Output As #1
Print #1, Me.TxtPioppo
Print #1, "Ciao" ' questa parte viene accodata al file
Close #1
Domanda => sequenza di comandi per caricare nella casella di testo TXTpioppo il
contenuto del file c:\pippo.txt
Open "c:\pippo.txt" For Input As #1
me.txtPioppo=input(LOF(1),1)
Close #1
LOF(ID numero del file) => nr di byte del file aperto come #ID
LOF(2) => nr byte di #2
input( X = nr byte da leggere, ID del file) => legge da #ID X byte e restituisce la
parte
letta
l'apertura di un file (senza opportune opzioni sulla open) blocca il file e altre
applicazioni potranno accedere ad esso solo in modalità lettura (LOCK DEL FILE)
Il lock nei db è a livello di record e non di files (per loro natura i db devono garantire
l'accesso contemporaneo di + user) (LOCK del RECORD)
CurrentDb.Execute => metodo che consente di eseguire un comando sql di
creazione/modifica
unico comando DROP TABLE <nome tabella>
Sequenza 1,2 ... N
N=InputBox("Dammi N","0")
For i = 1 to N
msgbox i
Next
Sequenza 1, -1,1, -1 ...
Segno=1
N=InputBox("Dammi N","0")
For i = 1 to N
msgbox Segno
segno=-segno
Next
oppure
N=InputBox("Dammi N","0")
For i = 1 to N
if (i mod 2) =0 then
msgbox "-1"
else
msgbox "1"
end if
segno=-segno
Next
Sequenza 1, 2, 0 , 1, 2, 0 ...
N=InputBox("Dammi N","0")
For i = 1 to N
msgbox (i mod 3)
Next
Sequenza A, Z, X , A, Z, X , ...
N=InputBox("Dammi N","0")
For i = 1 to N
if (i mod 3) =0 then
msgbox "X"
elseif (i mod 3) = 1 then
msgbox "A"
else
msgbox "Z"
end if
Next
Determina il minimo di N Numeri
N=InputBox("Dammi quanti valori vuoi insererire","0")
Minimo=InputBox("Dammi il 1° Valore","0")
For i = 2 to N
X=InputBox("Dammi il " & i & "° Valore","0")
if X < minimo then
minimo=X
endif
NEXT
msgbox "Il minimo è: " & minimo
DOMANDA: eliminare le lettere A e B da una stringa
s="Frase storica"
p=""
for i=1 to len(s)
if Not ( mid(s,i,1)="A" or mid(s,i,1)="B") then
p=p + mid(s,i,1)
end if
next
msgbox "Frase senza A o B: " & p
--- 4N 01/04/2011
Schema con i ListBox
Dim N As Long, i As Long
Dim s As String
N = Me.Txt_N
s = ""
For i = 1 To N
s = s & i & ";"
Next
Me.LstElenco.RowSource = s
creare una funzione che elimina le lettere A e B da una stringa s passata come
parametro
Function EliminaAeB(s As String) As String
p = ""
For i = 1 To Len(s)
If Not (Mid(s, i, 1) = "A" Or Mid(s, i, 1) = "B") Then
p = p + Mid(s, i, 1)
End If
Next
EliminaAeB = p
End Function
Private Sub Comando3_Click()
Dim s As String
s = "Frase storica"
p = EliminaAeB(s)
MsgBox "Frase senza A o B: " & p
End Sub
Autore:
e01692 [ lun apr 04, 2011 9:06 am ]
Oggetto del messaggio: 4/4/2011 - Classe 4M - Modulo 3°
Scrittura tabella
da i=1 a N
scrivi riga(i-esima)
ovvero
da i= 1 a N
da j=1 a M
scrivi cella(i-esima, j-esima)
Per applicare un'operazione sulla cella i, j
for i=1 to N
for j=1 to M
operazione(i,j)
next
next
costruire la taBELLA PITAGORICA nXM
Dim s As String
Const m = 10
Const N = 10
s = ""
For i = 1 To N
For j = 1 To m
s = s & Format(i * j, "@@@") & ";"
Next
s = s & vbCrLf
Next
Me.TxtOut = s
fUNZIONE CHE INCREMENTa
FUNCTION iNCREMENTA(X AS LONG)
iNCREMENTA=X+1
END function
function CalcolaMinimo(a, b, c) as long
Dim Minimo as long
minimo=a
if (minimo>b) then minimo=b
if (minimo>c) then minimo=c
CalcolaMinimo = Minimo
end function
function CalcolaMassimo(a, b, c) as long
Dim Massimo as long
massimo=a
if (massimo<b) then massimo=b
if (massimo<c) then massimo=c
CalcolaMassimo = Massimo
end function
scrivere così:
Call CalcolaMinimoMassimo(8, 3, 21, minimo, massimo)
è equivalente a:
CalcolaMinimoMassimo 8, 3, 21, minimo, massimo
parametro byval => la function/sub non modifica il parametro che si dice passato a
valore
parametro byref (default) => la function/sub modifica il parametro che si dice per
riferimento (reference)
per costruire una function / sub che restituisce + di un valore è necessario impostare
un numero di parametri byref pari al
numero di valori restituiti
Sub CalcolaMinimoMassimo(a, b, c, ByRef minimo, ByRef massimo)
minimo = a
If (minimo > b) Then minimo = b
If (minimo > c) Then minimo = c
massimo = a
If (massimo < b) Then massimo = b
If (massimo < c) Then massimo = c
End Sub
Private Sub Comando3_Click()
Dim minimo, massimo
Call CalcolaMinimoMassimo(8, 3, 21, minimo, massimo)
MsgBox "Minimo: " & minimo
MsgBox "Massimo: " & massimo
End Sub
Una funzione di questo tipo
function F_Incrementa(x)
F_Incrementa=x+1
end function
è equivalente a questa
sub S_Incrementa(byref x)
x=x+1
end sub
in generale
y=f(x)
s(x,y) dove y è byref
Divisori di un numero
Dim Divisori As String
Const A = 212
For i = 2 To A - 1
If (A Mod i) = 0 Then
Divisori = Divisori & i & "; "
End If
Next
MsgBox "divisori di " & A & ": " & Divisori
--- 4N 02/04/2011
Variabile locale => è una variabile dichiarata all'interno di una sub/function esiste solo durante l'esecuzione della sub/function qualsiasi assegnamento ad una var locale viene perso al termine dell'esecuzione della
procedura (sub/function) una variabile dichiarata esternamente a qualsiasi
sub/function è visibile in tutte le sub
contenute nello stesso modulo dove viene dichiarata (ad esempio quello associato al
form). Tale variabile vive per tutta la durata di utilizzo del form - viene distrutta
quando il form viene chiuso (unload)
una variabile dichiarata esternamente a qualsiasi sub/function all'interno di un modulo
(codice definito in access nella sezione MODULI) con la parola chiave public è visibile a
tutto il prg (file MDB)
Autore:
e01692 [ gio apr 07, 2011 12:06 pm ]
Oggetto del messaggio: 07/04/2011 - Classe 4M - Modulo 3°
esercitazione FOR pubblicata per 17/4 alle 24.00
verifica III MODULO 29/4/2011
Array
Const N = 3
Dim y(1 To N) As Long
For i = 1 To N
y(i) = InputBox("Dammi il " & i & "° valore: ", "0")
Next
For i = N To 1 Step -1
MsgBox y(i)
Next
dim X(9) => dim(0 to 8) => array di 9 elementi il cui indica varia da 0 a 8
il dimensionamento dell'array deve soddisfare l'esigenza del vs problema
se esco con l'indice dall'array ottengo un errore di "OUT OF RANGE"
dim X(n to m) => array il cui indice varia da n a m => m-n+1 elementi
DOMANDA: sequenza che legge i valori fino a che non si immette 0
x = InputBox("Dammi il valore: ", "0")
While x <> 0
x = InputBox("Dammi il valore: ", "0")
Wend
sia passo >0
for i=valoreiniziale to valorefinale step passo
CodiceVBA
next
equivalenza WHILE
i=valoreiniziale
while (i <= valorefinale)
CodiceVBA
i=i+passo
wend
quindi qualsiasi prg con for può essere riscritto con WHILE
il for è + compatto e quindi + leggibile => usato quando il nr di iterazioni è conosciuto
a
priori
questo esempio non può essere riscritto in for
x = InputBox("Dammi il valore: ", "0")
While x <> 0
x = InputBox("Dammi il valore: ", "0")
Wend
ricordarsi che exit for in un for consente l'uscita prima del termine
nrinterrogati=0
for nrstudenti=1 to TotaleStudenti
if LoStudenteIesimoDeveEssereInterrogato(i) then nrinterrogati=nrinterrogati+1
if nrinterrogati=4 then exit for
next
Questo ESEMPIO
x = InputBox("Dammi il valore: ", "0")
While x <> 0
x = InputBox("Dammi il valore: ", "0")
Wend
è equivalente
do
x = InputBox("Dammi il valore: ", "0")
loop while (x <> 0)
la formulazione do loop while è utile quando almeno una volta viene eseguita la parte
iterativa
codiceVBAAlfa
while condizione
codiceVBAAlfa
wend
equivale a (risparmio la duplicazione delle righe)
do
codiceVBAAlfa
loop while condizione
Pagina 1 di 2
Tutti gli orari sono UTC + 1 ora [ ora legale ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/
brescianet.com
http://lnx.brescianet.com/ScuolaForum2009/
Classe 4M - Modulo 3°
http://lnx.brescianet.com/ScuolaForum2009/viewtopic.php?f=9&t=22
Autore:
e01692 [ ven apr 08, 2011 1:00 pm ]
Oggetto del messaggio: 8/4/2001 -: Classe 4M - Modulo 3°
esercitazione FOR pubblicata per 17/4 alle 24.00
Array
Const N = 3
Dim y(1 To N) As Long
For i = 1 To N
y(i) = InputBox("Dammi il " & i & "° valore: ", "0")
Next
For i = N To 1 Step -1
MsgBox y(i)
Next
dim X(9) => dim(0 to 8) => array di 9 elementi il cui indica varia da 0 a 8
il dimensionamento dell'array deve soddisfare l'esigenza del vs problema
se esco con l'indice dall'array ottengo un errore di "OUT OF RANGE"
dim X(n to m) => array il cui indice varia da n a m => m-n+1 elementi
DOMANDA: sequenza che legge i valori fino a che non si immette 0
x = InputBox("Dammi il valore: ", "0")
While x <> 0
x = InputBox("Dammi il valore: ", "0")
Wend
sia passo >0
for i=valoreiniziale to valorefinale step passo
CodiceVBA
next
equivalenza WHILE
i=valoreiniziale
while (i <= valorefinale)
CodiceVBA
i=i+passo
wend
Pagina 2 di 2
quindi qualsiasi prg con for può essere riscritto con WHILE
il for è + compatto e quindi + leggibile => usato quando il nr di iterazioni è conosciuto
a
priori
questo esempio non può essere riscritto in for
x = InputBox("Dammi il valore: ", "0")
While x <> 0
x = InputBox("Dammi il valore: ", "0")
Wend
ricordarsi che exit for in un for consente l'uscita prima del termine
nrinterrogati=0
for nrstudenti=1 to TotaleStudenti
if LoStudenteIesimoDeveEssereInterrogato(i) then nrinterrogati=nrinterrogati+1
if nrinterrogati=4 then exit for
next
Questo ESEMPIO
x = InputBox("Dammi il valore: ", "0")
While x <> 0
x = InputBox("Dammi il valore: ", "0")
Wend
è equivalente
do
x = InputBox("Dammi il valore: ", "0")
loop while (x <> 0)
la formulazione do loop while è utile quando almeno una volta viene eseguita la parte
iterativa
codiceVBAAlfa
while condizione
codiceVBAAlfa
wend
equivale a (risparmio la duplicazione delle righe)
do
codiceVBAAlfa
loop while condizione
4N - 7/4 ....
4M 7/4 ....
riprendere da qui
Dim Classe(1 to N) as string
Classe(1)="Rossi Maria"
Classe(2)="Bianchi Chiara"
...
Classe(N) ="Neri Bruno"
DOMANDA : Funzione che dato un elenco di valori ricerca la posizione del valore X
se non viene trovato restituisce 0
Function CercaInArray(Elencovalori, X) as long
Posizione=-1
for i=1 to N
if Elencovalori(i)=X then
posizione=i
end if
next
CercaInArray=posizione
End Function
spiegare lettura file con WHILE
fattorizzazione con while
altra soluzione + veloce
Function CercaInArray(Elencovalori, X) as long
CercaInArray=-1
for i=1 to N
if Elencovalori(i)=X then
CercaInArray=i
exit function
end if
next
CercaInArray=posizione
End Function
if CercaInArray(Classe,"Marco Sechi") < 0 then
msgbox "Marco sechi è inesistente"
else
msgbox "Marco sechi è presente"
end if
UBOUND(array) => restituiscono la posizione dell'ultimo elemento
LBOUND(array) => restituiscono la posizione del primo elemento
dim x(-27 to 12)
lbound(x)=-27
ubound(x)=12
EOF(numerofile) => vera se sono alla fine del file
While Not EOF(1) ' fintanto che il file non risulta finito
Input #1, linea ' legge una frase fino al primo invio che incontra
Me.TxtTesto = ""
While Not EOF(1) ' end of file
Input #1, linea ' legge una frase fino al primo invio che incontra
' vbcrlf ==> ascii 13 + asci 10 ==> Carriage return line feed
Me.TxtTesto = Me.TxtTesto + linea + vbCrLf
Wend
domanda: leggi il file pioppo.txt linea per linea
open "pioppo.txt" for input as #1
While Not EOF(1)
input #1, linea
msgbox linea
wend
close #1
and or a bit
000
1 1 2^0
2 10 2^1
3 11 2^1+2^0
4 100 2^2
5 101 2^2+2^0
6 110 2^2+2^1
7 111 2^2+2^1+2^0
8 1000 2^3
9 1001 2^3+2^0
10 1010 2^3+2^1
7 and 5 => 111 and 101
111 and
101
---101 => 5
7 or 5 => 111 or 101
111 or
101
---111 => 7
not 5 => not 101 = 010 => 2
9 and 6 => 1001 and 0110
1001 and
0110
---0000 =>0
1001 or
0110
---1111 => 15
ESEMPIO
000 => non ha superato alcun modulo
010 => ha superato il 2° modulo
if statostudente AND 4 then
msgbox "Ha superato il 2° modulo"
--- 4N 8/4/2011
openrecordset => metodo per agganciare una qry o una tabella ad una variabile di
tipo recordset
EOF => proprietà che diventa vera se sono in fondo ad un recordset
BOF => proprietà che diventa vera se sono all'inizio di un recordset
rs("NomeCampo") => valore del record corrente sul campo "NomeCampo"
un recordset vuoto ha subito BOF e EOF a true
SCORRIMENTO DEL RECORDSET
Esempio 1
Set rs = CurrentDb.OpenRecordset("studenti")
rs.MoveFirst
MsgBox rs("nominativo")
rs.close
Esempio2
Set rs = CurrentDb.OpenRecordset("studenti")
If Not rs.EOF Then
rs.MoveFirst
MsgBox rs("nominativo")
Else
MsgBox "Nessun studente"
End If
Autore:
e01692 [ lun apr 11, 2011 9:01 am ]
Oggetto del messaggio: 11/4/2001 - Classe 4M - Modulo 3°
elenca tutti i valori del record corrente
for i=0 to rs.fields.count-1
msgbox rs(i)
next
movefirst => mi sposto sul 1° record
movelast => mi sposto sull'ultimo record
movenext => mi sposto al record successivo rispetto a quello corrente
moveprevious => mi sposto al record precedente rispetto a quello corrente
NZ(Parametro1,<valore) => se parametro1 è nullo allora uso <valore>
SCORRIMENTO DEL RECORDSET (CRESCENTE)
----------------------------Set rs = CurrentDb.OpenRecordset("studenti")
If Not rs.EOF Then
rs.MoveFirst
While Not rs.EOF
MsgBox rs("Nominativo")
rs.MoveNext
Wend
End If
SCORRIMENTO DEL RECORDSET (DECRESCENTE)
----------------------------Set rs = CurrentDb.OpenRecordset("SELECT Nominativo FROM studenti ORDER BY
Nominativo
DESC")
If Not rs.EOF Then
rs.MoveFirst
While Not rs.EOF
MsgBox rs("Nominativo")
rs.MoveNext
Wend
End If
Questo è quello richiesto
Set rs = CurrentDb.OpenRecordset("studenti")
If Not rs.BOF Then
rs.Movelast
While Not rs.BOF
MsgBox rs("Nominativo")
rs.MovePrevious
Wend
End If
per il 17/4 esercizi sul for
per il giorno prima della verifica scritta pubblicare quelli del WHILE
far vedere top-down
--- 4N 8/4
all'apertura il recordset si posiziona sul 1° record
Elenca i nominativi che hanno la lettera A nel nominativo
Set rs = CurrentDb.OpenRecordset("studenti")
If Not rs.EOF Then
rs.MoveFirst
While Not rs.EOF
if Instr(rs("Nominativo"),"A")>0 then
MsgBox rs("Nominativo")
end if
rs.MoveNext
Wend
End If
ATENZIONE: quando nel codice ho un'istruzione del tipo
p=p & .... => devo inizializzare p
NON RICHIESTO COME ESEMPIO
Set rs = CurrentDb.OpenRecordset("studenti")
s=""
If Not rs.EOF Then
rs.MoveFirst
While Not rs.EOF
if Instr(rs("Nominativo"),"A")>0 then
s=s & rs("Nominativo") & "; "
end if
rs.MoveNext
Wend
End If
------------------------------------------------------OK
Set rs = CurrentDb.OpenRecordset("VOTI")
v=0
n=0
If Not rs.EOF Then
rs.MoveFirst
While Not rs.EOF
if rs("Matricolainterrogato")="001" then
v=v+rs("Voto")
n=n+1
end if
rs.MoveNext
Wend
End If
if N=0 then
msgbox "Rossi (matricola 001) non è mai stato interrogato"
else
msgbox "Rossi ha una media di " & v/n
end if
potenza X^N pow(x,N)
' INPUT
Potenza positiva di X
x=inputbox("Dammi la base: " , "0")
N=inputbox("Dammi l'esponente: " , "0")
' ALGORITMO
P=1
for I=1 to N
P=P*X
next
' OUTPUT
msgbox "X^N=" & P
Somma dei primi N numeri interi
Definizione ricorsiva
S(N)=S(N-1)+N
S(0)=0
Definizione Iterativa
S(N)=1+2+3+...+N
N=inputbox("Dammi N: " , "0")
' ALGORITMO
S=0
for I=1 to N
S=S+i
next
' OUTPUT
msgbox "1+2+...+ N=" & S
Provare a fare il fattoriale
Definizione ricorsiva
N!=N*(N-1)!
0!=1
N!=1*2*3*... *N
Leggere un elenco di numeri terminato con 0 e restituire la media
x = InputBox("Dammi il valore: ", "0")
n=0
s=0
While x <> 0
x = InputBox("Dammi il valore: ", "0")
n=n+1
s=s+x
Wend
if (n=0) then
msgbox "Sequenza vuota"
else
msgbox "Media:" & S/(n-1)
end if
oppure
x = InputBox("Dammi il valore: ", "0")
n=0
s=0
While x <> 0
x = InputBox("Dammi il valore: ", "0")
if (x<>0) then
n=n+1
s=s+x
end if
Wend
if (n=0) then
msgbox "Sequenza vuota"
else
msgbox "Media:" & S/n
end if
Autore:
e01692 [ gio apr 14, 2011 2:34 pm ]
Oggetto del messaggio: 14/04/2001 - Classe 4M - Modulo 3°
Sub SoluzioneEsercizio2()
Dim N As Long, i As Long
Dim x As Double
Dim a As Double, b As Double, m As Double
m = Me.Txt_M
a = Me.Txt_A
b = Me.Txt_B
N = Me.Txt_N
Me.TxtOut = ""
For i = 1 To N
x = InputBox("Dammi un numero : ", "richiesta valore", "0")
If ((x < m * b) And (x > m * a)) Or ((x < b) And (x > a)) Then
Me.TxtOut = Me.TxtOut & "SI: " & m * a & " < " & x & " < " & m * b
Me.TxtOut = Me.TxtOut & " oppure a=" & a & " < " & x & " < " & b & vbCrLf
Else
Me.TxtOut = Me.TxtOut & "NO: m*a=" & m * a & " <= " & x & " <= " & m * b &
"=m*b"
Me.TxtOut = Me.TxtOut & " oppure a=" & a & " < " & x & " < " & b & vbCrLf
End If
Next
MsgBox "Inserire qui la soluzione relativa all'esercizio 2", vbInformation, "Esercizio 2"
End Sub
--------------------------Sub SoluzioneEsercizio6()
Dim x1 As Long, X2 As Long, X3 As Long
Dim i As Long, s As String, N As Long
N = Me.Txt_N
x1 = Me.Txt_A
X2 = Me.Txt_B
s = x1 & ";" & X2 & ";"
For i = 3 To N
X3 = X2 + x1
s = s & X3 & ";"
x1 = X2
X2 = X3
Next
Me.LstElenco.RowSource = s
End Sub
---------------------Sub SoluzioneEsercizio7()
Dim i As Long, N As Long
Dim s As String
N = Me.Txt_N
For i = 1 To N
If (i Mod 5) = 1 Then
s = s & "A;"
ElseIf (i Mod 5) = 2 Then
s = s & "E;"
ElseIf (i Mod 5) = 3 Then
s = s & "I;"
ElseIf (i Mod 5) = 4 Then
s = s & "O;"
ElseIf (i Mod 5) = 0 Then
s = s & "U;"
End If
Next
Me.LstElenco.RowSource = s
End Sub
Sub SoluzioneEsercizio8()
MsgBox "Inserire qui la soluzione relativa all'esercizio 8", vbInformation, "Esercizio 8"
End Sub
--------------------------------Sub SoluzioneEsercizio9()
Dim N As Long
Dim i, j, s As String
Dim primo As Boolean
N = Me.Txt_N
s = ""
For i = 2 To N
primo = True
' Stabilisco se ha un divisore => non primo
For j = 2 To i - 1
If (i Mod j) = 0 Then
primo = False
Exit For
End If
Next
If primo Then
s = s & i & ";"
End If
Next
Me.LstElenco.RowSource = s
End Sub
--eser 1 while
Autore:
e01692 [ lun apr 18, 2011 8:37 am ]
Oggetto del messaggio: 18/04/2011 - Classe 4M - Modulo 3°
Sub SoluzioneEsercizio14()
Const vocali = "aeiuo"
Dim s As String
Dim i As Integer, p As Long
Dim ContaV(1 To 5) As Long
' INIZIALIZZAZIONE
For i = 1 To 5
ContaV(i) = 0
Next
s = Me.Txt_S
Me.EleTabella.RowSource = ""
' ALGORITMO
For i = 1 To Len(s)
p = InStr(vocali, Mid(s, i, 1))
If p > 0 Then
ContaV(p) = ContaV(p) + 1
End If
Next
For i = 1 To 5
Me.EleTabella.AddItem Mid(vocali, i, 1) & ";" & ContaV(i) & ";"
Next
Me.EleTabella.ColumnCount = 2
End Sub
---------------------- SOLUZIONE ALTERNATIVA
Sub SoluzioneEsercizio14()
Const vocali = "aeiuo"
Dim s As String
Dim i As Integer
Me.EleTabella.RowSource = ""
' ALGORITMO
For i = 1 To 5
s = Me.Txt_S
Me.EleTabella.RowSource = Me.EleTabella.RowSource & Mid(vocali, i, 1) & ";" & (Len
(s) - Len(Replace(s, Mid(vocali, i, 1), ""))) & ";"
Next
Me.EleTabella.ColumnCount = 2
End Sub
Sub SoluzioneEsercizio15()
Dim s As String
Dim i As Integer
Dim symb As String
symb = Me.Txt_A & Me.Txt_B & Me.Txt_C
Me.EleTabella.RowSource = ""
' ALGORITMO
For i = 1 To Len(symb)
s = Me.Txt_S
Me.EleTabella.RowSource = Me.EleTabella.RowSource & Mid(symb, i, 1) & ";" & (Len
(s) - Len(Replace(s, Mid(symb, i, 1), ""))) & ";"
Next
Me.EleTabella.ColumnCount = 2
End Sub
ESER WHILE 1
Me.TxtOut = ""
i = InputBox("dammi il valore", "titolardo", "0")
If i <> 0 Then Me.TxtOut = Me.TxtOut & i & vbCrLf
While i <> 0
i = InputBox("dammi il valore", "titolardo", "0")
If i <> 0 Then Me.TxtOut = Me.TxtOut & i & vbCrLf
Wend
ALTERNATIVA
Me.TxtOut = ""
i=1
While i <> 0
i = InputBox("dammi il valore", "titolardo", "0")
If i <> 0 Then
Me.TxtOut = Me.TxtOut & i & vbCrLf
end if
Wend
Autore:
e01692 [ lun mag 02, 2011 9:00 am ]
Oggetto del messaggio: Correzione orali 2/5/2011 - Classe 4M - Modulo 3°
0) Sequenza che ribalta una stringa s
s = "Ciao"
p = ""
For i = Len(s) To 1 Step -1
p = p & Mid(s, i, 1)
Next
MsgBox p
1) Segno di X
if isnull(x) or x="" then
msgbox "NUllo
elseif isnumeric(x) then
If (x=0) then
Msgbox “Nullo”
Elseif (x>0) then
Msgbox “Positivo”
Else
Msgbox “Negativo”
End if
end if
funzione media
msgbox (x+y+z)/3
function Media(a,b,c) as double
Media=(a+b+c)/3
end function
2) funzione ribalta
function Ribalta(s) as string
p = ""
For i = Len(s) To 1 Step -1
p = p & Mid(s, i, 1)
Next
Ribalta=p
end function
7 and 3
111
011
--011 => 3
4 or 6
100
110
---110 => 6
Autore:
e01692 [ ven mag 06, 2011 5:06 pm ]
Oggetto del messaggio: Verifica orale - Classe 4M - Modulo 3°
[2] IF: Data una variabile X valutare se è nulla e se no se è numerica o una data o
altro
[2] FOR: Costruire una sequenza che dato N visualizza la sequenza A,B, 0, A, B, 0 ...
[2] FUNZIONE: Funzione che accetta una stringa e restituisce la stessa priva di a e b
(non è ammesso l’uso di replace)
[1] Spiegare le proprietà forecolor, enabled e caption per l’oggetto etichetta
[1] Cosa è la programmazione ad oggetti ?
[1] Equivalente WHILE di “for i=1 to 100 msgbox “Ciao” next”
[1] Controllo FORUM (indicare se non avete pubblicato l’’esercizio sul FOR)
1)
if (isnull(x) or x="") then
msgbox "Nullo"
elseif (isnumeric(x)) then
msgbox "Numerico"
elseif (isdate(x)) then
msgbox "Data"
else
msgbox "Altro"
end if
2)
for i=1 to N
if (i mod 3)=1 then
msgbox "A"
elseif (i mod 3)=2 then
msgbox "B"
elseif (i mod 3)=0 then
msgbox "0"
end if
next
3)
function EliminaAB(s as string) as string
p=""
for i=1 to len(s)
if Not ( mid(s,i,1)="A" or mid(s,i,1)="B" ) then
p=p & mid(s,i,1)
end if
next
EliminaAB=p
End function
4)
forecolor => colore del testo dell'etichetta
enabled => abilita o disabilita l'etichetta
caption => frase che appare nell'etichetta
5) Equivalente
for i=1 to 100
msgbox "Ciao"
next
i=1
while i<=100
msgbox "Ciao"
i=i+1
wend
6)
programmazione ad oggetti: usa oggetti dotati di proprietà che sulla base di eventi
eseguono azioni (metodi)
-------------------------------[2] IF: Data una variabile X valutare se è un numero e se si indicare positiva negativa
o zero
[2] FOR: Costruire una sequenza che dato N visualizza la sequenza 1,2, 0, 1, 2, 0 ...
[2] FUNZIONE: Funzione che accetta una stringa e restituisce la stessa ribaltata
[1] Spiegare le proprietà rowsource, columncount e boundcolumn per l’oggetto combo
[1] Considerando l’oggetto recordset indicare una proprietà e un metodo spiegandolo
[1] Equivalente WHILE di “for i=100 to 1 step -1 msgbox “Ciao” next”
[1] Controllo FORUM (indicare se non avete pubblicato l’’esercizio sul FOR)
1)
if (isnumeric(x)) then
if (x=0) then
msgbox "Zero"
elseif x >0 then
msgbox "Positivo"
else
msgbox "Negativo"
end if
else
msgbox "NON Numerico"
end if
2)
for i=1 to N
msgbox i mod 3
Next
3)
function Ribalta(s as string) as string
p=""
for i=len(s) to 1 step -1
p=p & mid(s,i,1)
next
Ribalta=p
end function
oppure
function Ribalta(s as string) as string
p=""
for i=1 to len(s)
p=mid(s,i,1) & p
next
Ribalta=p
end function
4)
RowSource => elenco dei valori contenuti nel combo
columncount => nr colonne
boundcolumn => colonna da cui viene estratto il valore da restituire
5)
eof => restituisce true se sono in fondo al file
movefirst => mi sposto all'inizio del recordset
6) Equivalente
for i=100 to 1 step -1
msgbox "Ciao"
next
i=100
while i>=1
msgbox "Ciao"
i=i-1
wend
-------------------------
[2] IF: Dato un punto (X,Y) valutare il quadrante di appartenenza del piano cartesiano
(1° Nord-Est, 2° SudEst – 3° SudOvest – 4° NordOvest
[2] Scorrimento del recordset sul comando SQL SELECT Nome FROM Studenti
[2] FUNZIONE: Funzione che accetta 3 argomenti numerici e restituisce il minimo
[1] Spiegare mid e instr
[1] Considerando l’oggetto combo spiegare listindex, listcount e column
[1] Sintassi del WHILE
[1] Controllo FORUM (indicare se non avete pubblicato l’’esercizio sul FOR)
1)
if (X>0 and Y>0)
msgbox "Quadrante 1°"
elseif (X>0 and Y<0)
msgbox "Quadrante 2°"
elseif (X<0 and Y<0)
msgbox "Quadrante 3°"
elseif (X<0 and Y>0)
msgbox "Quadrante 2°"
else
msgbox "Sugli assi"
end if
2)
set rs=currentdb.openrecordset("SELECT NOME FROM STUDENTI")
if not rs.eof then
rs.movefirst
while not rs.eof
msgbox rs("Nome")
rs.movenext
wend
end if
rs.close
3)
function Minimo(a,b,c) as long
m=a
if m>b then m=b
if m>c then m=c
minimo=c
end function
4)
mid(s, n, i) => estrae dalla stringa s i caratteri partendo dalla posizione n
instr(s,p) => restituisce la posizione di p in s
5)
listindex =>nr riga selezionata
listcount => nr colonne
colum => tabella (righe colonne) contenente i valori del combo
6)
while condizione
IstruzioniVBA
wend
Pagina 2 di 2
Tutti gli orari sono UTC + 1 ora [ ora legale ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/

Documenti analoghi

4N - Appunti di INFORMATICA

4N - Appunti di INFORMATICA 1) quando passo alla modalità di esecuzione e carico il form ACCESS crea lo spazio per le 2 variabili dichiarate esternamente 2) al click sul bottone "BtnClicca" verrà assegnato 10 a x e Vargen 3)...

Dettagli

VBA XLS - Appunti di INFORMATICA

VBA XLS - Appunti di INFORMATICA per VBA double identifica un numero con la virgola Function NomeFunzione(elenco argomenti) as tipo valore restituito Istruzioni in VBA necessarie per il calcolo della soluzione ' restituisco il val...

Dettagli

4M - Appunti di INFORMATICA

4M - Appunti di INFORMATICA End Sub -----------ByVal => passaggio di parametri in questa modalità ==> uso il valore ma non modifico il valore della variabile passata (in access 97 è il comportamento

Dettagli