4M - Appunti di INFORMATICA

Transcript

4M - Appunti di INFORMATICA
Brescianet.com
Sito didattico - Prof. Sechi Marco
FAQ
Profilo
Cerca
Lista degli utenti
Non ci sono nuovi messaggi
Gruppi utenti
Esci [ e01692 ]
III Modulo - 4M
Indice del forum -> Appunti - Classi 4
Argomento precedente :: Argomento successivo
Autore
e01692
Site Admin
Registrato: 07 Set 2004
Messaggi: 214
Messaggio
Inviato: 12 Gen 2005 08:00 am
Soggetto: III Modulo - 4M
Accoda qui gli appunti
Ultima modifica di e01692 il 25 Giu 2005 12:26 pm, modificato 1 volta in totale
Torna in cima
e01692
Site Admin
Registrato: 07 Set 2004
Messaggi: 214
Inviato: 12 Gen 2005 08:01 am
Soggetto: 4M - 12/01/2005
wsf ==> linguaggio di prg in ambiente windows per costruire dei batch file (comandi
che eseguono delle operazioni di sistema in sequenza: utile per automatizzare
operazioni ripetitive) - E' praticamente identico al vba
proprietà di un oggetto ==> caratteristiche
event driven==> questo tipo di prg si basa su eventi ovvero se accade qualcosa
verrà eseguito lo script associato a quell'evento (sempre che il programmatore l'abbia
previsto)
me ==> in vba è un riferimento all'oggetto contenitore - Nella maschera è un
riferimento alla maschera stessa
Me.BtnChiudi.Visible = False
Esercizio 1
Costruire una maschera con due bottoni btn1 e btn2 e un textbox (txtfrase) - Le
operazioni supportate devono essere le seguenti
btn1 ==> cliccando deve visualizzare il messaggio (msgbox "frase") contenuto in
txtfrase
txtFrase==> su uscita deve cambiare l'etichetta di btn1 in "Chiudi la
maschera" (me.btn1.caption)
btn2==> su click deve chiudere la maschera ==> docmd.close
Torna in cima
e01692
Site Admin
Registrato: 07 Set 2004
Messaggi: 214
Inviato: 15 Gen 2005 10:00 am
Soggetto: 15/01/2005 - 4M
If Me.lbltesto.ForeColor = vbBlack Then
Me.lbltesto.ForeColor = vbRed
Me.lbltesto.BackColor = vbBlack
Else
Me.lbltesto.ForeColor = vbBlack
Me.lbltesto.BackColor = vbRed
End If
Dovete sapere i nomi in inglese delle proprietà illustrate - usare F1 per ricercarli
-------------Sub lbltesto_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As
Single)
Me.lbltesto.Caption = "x:" + CStr(X) + " - y:" + CStr(Y)
End Sub
Sub lbltesto_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Me.lbltesto.Caption = "x:" + CStr(X) + " - y:" + CStr(Y)
End Sub
--Fino al seconda lezione
Torna in cima
e01692
Site Admin
Registrato: 07 Set 2004
Messaggi: 214
Inviato: 17 Gen 2005 11:50 am
Soggetto: 17/01/2005 - 4M
le variabili sono zone di memoria dove posso parcheggiare dei valori
che acquisisco durante l'elaborazione
spiegata la visibilità e option explicit
L'oggetto docmd equivale al menu di access (a grandi linee)
Fatto variabili globali - msgbox e clng - breakpoint e debug
Il breakpoint serve a bloccare l'esecuzione di un prg in un punto preciso - Obbiettivo
del debug è localizzare errori semantici presenti nel vs algoritmo
Private Sub btnesegui_Click()
Dim s As String
s = "ciao studente modello"
Me.txtfrase = s
End Sub
------Option Compare Database
Option Explicit
Dim z As Long
Private Sub btnesegui_Click()
Dim x As Long, y As Long
x = Me.txta
y = Me.txtb
z = y + x * 3 + 2 * (x + y)
Me.txtfrase = "il risultato è " + CStr(z)
End Sub
Private Sub btnvedi_Click()
MsgBox "il risultato è " + CStr(z)
End Sub
-------Apre una nuova maschera e chiude la maschera corrente
-----------Private Sub BtnApriEs1_Click()
DoCmd.OpenForm "Esempio1"
DoCmd.Close acForm, Me.Name
' DoCmd.Close acForm, "Maschera2"
End Sub
----Torna in cima
e01692
Site Admin
Registrato: 07 Set 2004
Messaggi: 214
Inviato: 19 Gen 2005 08:01 am
Soggetto: 19/01/2005 - 4M
Private ==> indica una routine o una variabile visibile solo all'interno del modulo che
la cointiene
Public ==> una procedura visibile ovunque nell'MDB
le variabili dichiarate all'interno di una sub sono visibili solo all'interno di quella
variabile
Sub Somma(x As Long, y As Long)
MsgBox CStr(y) + " + " + CStr(x) + " = " + CStr(x + y)
End Sub
per richiamare la funzione somma posso scrivere cosi
Call Somma(3, 8)
oppure
Somma 3, 8
' ----------------Public Sub pippo()
Dim x As Long, y As Long
x = InputBox("Dammi x", "Inserisci primo parametro", 0)
y = InputBox("Dammi y", "Inserisci primo parametro", 0)
Somma x, y
End Sub
Le function sono delle sub che restituiscono un valore il cui tipo è dichiarato
nell'intestazione della funzione stessa
'-----------------------Public Sub pippo()
Dim x As Long, y As Long, z As Long
x = InputBox("Dammi x", "Inserisci primo parametro", 0)
y = InputBox("Dammi y", "Inserisci primo parametro", 0)
z = SommaFunct(x, y)
MsgBox CStr(y) + " + " + CStr(x) + " = " + CStr(z)
End Sub
Function SommaFunct(x As Long, y As Long) As Long
SommaFunct = x + y
End Function
Torna in cima
e01692
Site Admin
Registrato: 07 Set 2004
Messaggi: 214
Inviato: 22 Gen 2005 11:02 am
Soggetto: 22/1/2005 - 4M
La function esegue una serie di istruzioni e restituisce un valore che viene specificato
con una istruzione di questo tipo:
NomeFunzione=ValoreRestituito
----------Sub Potenza(x As Long, y As Long)
Me.lblpotenza.Caption = CStr(x ^ y)
End Sub
Function PotenzaF(x As Long, y As Long) As String
PotenzaF = CStr(x ^ y)
End Function
Private Sub Form_Load()
Call Potenza(3, 2)
Me.lblpotenzaf.Caption = PotenzaF(5, 3)
End Sub
------------Sub Incrementa(y As Long)
y=y+1
End Sub
Sub Decrementa(ByRef y As Long)
y=y-1
End Sub
Private Sub Form_Load()
Dim x As Long
x=1
Incrementa (x)
Debug.Print "Dopo incrementa: " + CStr(x) '1
Decrementa (x)
Debug.Print "Dopo decrementa: " + CStr(x) '0
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
predefinito)
ByRef => passaggio di parametri per indirizzo. in questa modalità ==> uso il valore
e modifico il valore della variabile passata (in access XP è il comportamento
predefinito)
-----------Sub Potenza(ByVal b As Long, ByVal n As Long, ByVal r As Long)
r=b^n
End Sub
Sub PotenzaCorretta(ByVal b As Long, ByVal n As Long, ByRef r As Long)
r=b^n
End Sub
Private Sub Form_Load()
Dim x As Long, y As Long, z As Long
x=3
y=2
Call Potenza(x, y, z)
Debug.Print "Dopo Potenza (senza byref): " + CStr(z) '0
Call PotenzaCorretta(x, y, z)
Debug.Print "Dopo PotenzaCorretta (senza byref): " + CStr(z) 'x^y
End Sub
-----------Option Compare Database
Function PotenzaF(ByVal b As Long, ByVal n As Long) As Long
PotenzaF = b ^ n
End Function
Sub Potenza(ByVal b As Long, ByVal n As Long, ByRef r As Long)
r=b^n
End Sub
Private Sub Form_Load()
Dim x As Long, y As Long, z As Long
x=3
y=2
Call Potenza(x, y, z)
Debug.Print "Dopo Potenza (senza byref): " + CStr(z) 'x^9
z = PotenzaF(x, y)
Debug.Print "Dopo PotenzaCorretta (senza byref): " + CStr(z) 'x^y
End Sub
---------------
In html posso scrivere codice VB
<HTML>
<SCRIPT LANGUAGE=VBSCRIPT>
sub Saluta
msgbox "Ciao"
end sub
</SCRIPT>
<BODY onLoad="Saluta()">
</BODY>
------------Torna in cima
e01692
Site Admin
Registrato: 07 Set 2004
Messaggi: 214
Inviato: 24 Gen 2005 07:59 am
Soggetto: 24/01/2005 - 4M
forme immediate
if condA then Istruz
if condA then Istruz1:Istruz2
if x>0 then x=1 : exit sub
Posso usare una forma immediata per l'if
iif(cond,A,B)
esempio
Dim votofinale as string
votofinale=iif(voto>5.5,"suff.","insuff.")
in alternativa alla forma estesa
if (x > 5.5) then
VotoFinale="Suff."
else
VotoFinale="Insuff."
end if
Isnull, isnumeric
La finestra immediata può essere usata per testare dei valori o delle funzioni
es.
print <nomevariabile>
print <nomefunzione>
es.
print currentdb.name
mid, left, right, len
---------For i=<Valore iniziale> To <ValoreFinale> step <passo>
Codice VBA
Next
è equivalente a
i=<Valore iniziale>
While i<>ValoreFinale
Codice VBA
I=i+[passo]
Wend
per terminare l'esecuzione usare <ctrl+Interr>
DEBUG
F8 ==> eseguo una istruzione alla volta - se è una sub o una function entro dentro e
si posiziona nella prima istruzione
F5 ==> riprendo l'esecuzione
con il print nella finestra immediata valuto i valori delle mie variabili
Aggiungi espressione di controllo ==> consente di fermare l'esecuzione quando la
var testata assume un determinato valore
Torna in cima
e01692
Site Admin
Registrato: 07 Set 2004
Messaggi: 214
Inviato: 29 Gen 2005 11:49 am
Soggetto: 29/01/2005 - 4M
currentdb
currentdb.TableDefs(6).Fields.Count
' RecordSet ==> oggetto che cattura una Qry o una tabella
' tramite Currentdb.openrecordset(CmdSQL) catturo la lista dei record che soddisfano
il mio comando SQL
rs.MoveFirst
rs.MoveNext
rs.Movelast
rs.Moveprevious
rs.eof ==> proprieta che restituisce falso se siete in fondo all'elenco oppure se
nessun record soddisfa la VS Query
rs.Bof ==> proprieta che restituisce falso se siete ALL'INIZIO DELL'elenco oppure se
nessun record soddisfa la VS Query
---------Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("SELECT Nome FROM TblEsempio")
If Not rs.EOF Then ' controllo che ci siano dei record
rs.MoveFirst
While Not rs.EOF ' finchè non sono in fondo
MsgBox Cstr(rs("idRec"))+" - "+rs("Nome")
' in alternativa MsgBox Cstr(rs(0))+rs(1)
rs.MoveNext
Wend
End If
rs.Close
------currentdb.TableDefs(6).name
oppure
currentdb.TableDefs("TblEsempio").name
L'indice va usato quando devo scorrere tutti gli oggetti di una collezione
for I=0 to Collezione.count-1
oggetto(i).proprieta
next
per accedere ad un particolare oggetto di una collezione si usa il suo nome
No esempio sui forms
Currentdb.querydefs ==> insieme delle Qry
Torna in cima
e01692
Site Admin
Registrato: 07 Set 2004
Messaggi: 214
Inviato: 29 Gen 2005 11:50 am
Soggetto: 28/01/2005 - 4M
now , format
1<>"1"
l'evento load del form è usato generalmente per inizializzare
se TimerInterval =0 allora l'eventp Timer non viene mai attivato
proprietà enabled
vbCrLf ==> carriage return - line feed ==> invio
vbcrlf ==> chr(10)+ chr(13)
chr(codice ascii) ==> restituisce il carattere corrispondente al codice ascii passato
come parametro
esempio
chr(49) ==> "0"
Torna in cima
e01692
Site Admin
Registrato: 07 Set 2004
Messaggi: 214
Inviato: 31 Gen 2005 07:55 am
Soggetto: 31/01/2005 - 4M
---------------rs(NomeCampo") ==> valore le campo del record corrente (ovvero quello puntato
dal recordset
CurrentDb rappresenta in VBA il file MDB che state utilizzando
OpenRecordset è un metodo dell'oggetto DB che accetta come argomento una Qry o
il nome di una tabella e restituisce un oggetto capace di gestire il risultato della query
stessa (oggetto recordset)
1° RICERCA - 1 metodo
Public Sub RicercaPerID(idRec As Long)
Dim rs As Recordset
Dim CmdSQL As String
CmdSQL = "SELECT NOME FROM TblEsempio WHERE idRec=" + CStr(idRec)
Set rs = CurrentDb.OpenRecordset(CmdSQL)
If Not rs.EOF Then ' controllo che ci siano dei record
rs.MoveFirst
MsgBox CStr(idRec) + " - " + rs("Nome")
Else
MsgBox "non trovato"
End If
rs.Close
End Sub
2° RICERCA - 2 metodo
Public Sub RicercaPerID(idRec As Long)
Dim rs As Recordset
Dim CmdSQL As String
CmdSQL = "SELECT * FROM TblEsempio"
' oppure il nome della tabella:
' CmdSQL = "TblEsempio"
Set rs = CurrentDb.OpenRecordset(CmdSQL, dbOpenDynaSet)
If Not rs.EOF Then ' controllo che ci siano dei record
rs.findfirst "idRec="+cstr(idRec)
if not rs.NoMatch then
MsgBox CStr(idRec) + " - " + rs("Nome")
Else
MsgBox "non trovato"
End If
end if
rs.Close
End Sub
------------------findfirst è un metodo dell'oggetto recordset che vuole come argomento lo stesso che
uso con
la clausola where
rs.NoMatch La proprietà noMatch restituisce vero se il metodo FindFirst o findNext
(precedentemente applicato) non restituiscono alcun record
Public Function RicercaPerIniziali(Iniziali As String) As Long
Dim rs As Recordset
Dim CmdSQL As String
CmdSQL = "SELECT Count(*) AS Nr FROM TblEsempio WHERE Nome like '" + Iniziali
+ "*' "
Set rs = CurrentDb.OpenRecordset(CmdSQL)
If Not rs.EOF Then
rs.MoveFirst
RicercaPerIniziali = rs("Nr")
End If
rs.Close
End Function
Torna in cima
e01692
Site Admin
Registrato: 07 Set 2004
Messaggi: 214
Inviato: 21 Feb 2005 07:11 am
Soggetto: 19/02/2005
in win98 ==> mscomctl.ocx è il Microsoft common control
pe utilizzare i comandi del RecordSet occorre andare in una finestra di codice e
richiamare il menu Strumenti --> riferimenti aggiungere dao
Esempio trova e trova successivo
==========================
Option Compare Database
Dim pM As Long
Private Sub BtnTrova_Click()
Dim p As Long
p = InStr(Me.TxtTesto, Me.txttrova)
pM = p
If p > 0 Then
Me.TxtTesto.SetFocus
Me.TxtTesto.SelStart = p - 1
Me.TxtTesto.SelLength = Len(Me.txttrova)
End If
End Sub
Private Sub BtnTrovaSucc_Click()
Dim s As String
s = Mid(Me.TxtTesto, pM + Len(Me.txttrova))
pM = pM + Len(Me.txttrova) - 1
p = InStr(s, Me.txttrova)
If p > 0 Then
pM = pM + p
Me.TxtTesto.SetFocus
Me.TxtTesto.SelStart = pM - 1
Me.TxtTesto.SelLength = Len(Me.txttrova)
End If
End Sub
Torna in cima
e01692
Site Admin
Registrato: 07 Set 2004
Messaggi: 214
Inviato: 21 Mar 2005 08:16 am
Soggetto: 21/03/2005 - 4M
Spiegato esercizio 2 in dettaglio
Torna in cima
e01692
Site Admin
Registrato: 07 Set 2004
Messaggi: 214
Inviato: 06 Apr 2005 11:31 am
Esercizio 7
Soggetto: 06/04/2005 - 4M -
Option Compare Database
Const Cst_Rosso = "0"
Const Cst_Verde = "1"
Const Cst_Bianco = "2"
Const Cst_Giallo = "3"
Const Cst_Nero = "4"
Private Sub BtnRegistra_Click()
Dim Colore, i As Long, j As Long
Dim s As String
s = ""
For i = 0 To 1
For j = 0 To 1
Colore = Me.Controls("C" + CStr(i) + CStr(j)).BackColor
If Colore = vbRed Then
s = s + Cst_Rosso
ElseIf Colore = vbGreen Then
s = s + Cst_Verde
ElseIf Colore = vbWhite Then
s = s + Cst_Bianco
ElseIf Colore = vbYellow Then
s = s + Cst_Giallo
ElseIf Colore = vbBlack Then
s = s + Cst_Nero
End If
Next
Next
Open "pippo.txt" For Output As #1
Print #1, s
Close 1
MsgBox s
End Sub
Private Sub BtnRileggi_Click()
Dim s As String, c As String
Dim r As Long, col As Long
Open "pippo.txt" For Input As #1
s = Input(LOF(1), 1)
Close 1
Me.sequenza = s
For i = 0 To 1
For j = 0 To 1
c = Mid(s, i * 2 + j + 1, 1)
If c = Cst_Rosso Then
Me.Controls("c" + CStr(i) + CStr(j)).BackColor = vbRed
ElseIf c = Cst_Verde Then
Me.Controls("c" + CStr(i) + CStr(j)).BackColor = vbGreen
ElseIf c = Cst_Bianco Then
Me.Controls("c" + CStr(i) + CStr(j)).BackColor = vbWhite
ElseIf c = Cst_Giallo Then
Me.Controls("c" + CStr(i) + CStr(j)).BackColor = vbYellow
ElseIf c = Cst_Nero Then
Me.Controls("c" + CStr(i) + CStr(j)).BackColor = vbBlack
End If
Next
Next
End Sub
Private Sub Form_Load()
Me.c00.BackColor = vbYellow
Me.c01.BackColor = vbWhite
Me.c10.BackColor = vbGreen
Me.c11.BackColor = vbBlack
End Sub
Torna in cima
Mostra prima i messaggi di: Tutti i messaggi
Prima i vecchi
Vai
Tutti i fusi orari sono GMT
Indice del forum -> Appunti - Classi 4
Pagina 1 di 1
Controlla questo argomento
Vai a: Appunti - Classi 4
Puoi inserire nuovi argomenti in
Puoi rispondere agli argomenti in
Puoi modificare i tuoi messaggi in
Puoi cancellare i tuoi messaggi in
Puoi votare nei sondaggi in
Puoi moderare
Vai al Pannello di Amministrazione
Powered by phpBB 2.0.10 © 2001, 2002 phpBB Group
Vai
questo
questo
questo
questo
questo
questo
forum
forum
forum
forum
forum
forum

Documenti analoghi

4N - Appunti di INFORMATICA

4N - Appunti di INFORMATICA esempio pratico (elenca gli studenti che nel nominativo presentano la lettera selezionata) ---------------Lettera = InputBox("Dammi la lettera che ricerchi nel nominativo studenti") Set rs = Curren...

Dettagli

VBA XLS - Appunti di INFORMATICA

VBA XLS - Appunti di INFORMATICA Brescianet.com Sito didattico - Prof. Sechi Marco FAQ Profilo

Dettagli

4M - Appunti di INFORMATICA

4M - Appunti di INFORMATICA maschera perchè uso inserire nel nome una sigla iniziale associata al tipo ? Spiegato lbl... => etichetta txt... => textbox btn... => bottone lst... => listbox cmb... => combobox

Dettagli