Eseguire calcoli e controlli con visual basic

2/2

Routine di calcolo
Quella che segue e' la routine che e' stata inserita nel tasto calcola dell'esempio che potete scaricare.
Il sistema prima chiede quanti articoli sono in ordine poi, dopo la pressione del tasto calcola, esegue i conteggi e salva i risultati nell'apposito campo che abbiamo creato nella tabella cicli:

La routine utilizzata e' la seguente (le note in rosso sono state aggiunte solo per commentare il programma e vanno cancellati se si vuol far funzionare il programma):

On Error GoTo Fine

La riga sopra fa in modo che se il programma trova un errore,
anziche' bloccarsi, invia alla routine di nome Fine

'---------------------------------------------------------------
'Apre il database e le tabelle necessarie
'---------------------------------------------------------------

Dim db As Database, rst0 As Recordset
Dim Tempo As Double, Misura As Integer, Ordinato As Double
Dim Lotto As Double, Risultato As Double

Set db = CurrentDb
Set rst0 = db.OpenRecordset("cicli", dbOpenDynaset)

'---------------------------------------------------------------
'Legge dalla maschera quanti articoli sono in ordine
'---------------------------------------------------------------


Ordinato = Me![Ordinato]

'---------------------------------------------------------------
'Legge i dati dalla tabella cicli
'---------------------------------------------------------------


Vai al primo record
rst0.MoveFirst

Do Until rst0.EOF

Edit ci serve perche' dovremo scrivere nella tabella 
rst0.Edit

Tempo = 0
If Not IsNull(rst0("tempo")) Then Tempo = rst0("tempo")

If Not IsNull e' stato scritto per evitare che, nel caso in cui nel campo tempo non vi siano dati e
quindi vi sia il valore nullo, il programma non generi errori. In pratica la variabile Tempo viene forzata
a 0 e, se nel campo tempo della tabella cicli non vi e' un valore nullo, la variabile prende tale valore.


Lotto = 0
If Not IsNull(rst0("lotto")) Then Lotto = rst0("lotto")

Misura = rst0("min_sec")
If Misura = -1 Then Tempo = Tempo * 60

Abbiamo visto sopra che se il campo min_sec della tabella cicli vale -1 (Vero il tempo in minuti
viene trasformato in secondi.

Sotto invece si eseguono i calcoli in ore in funzione della lavorazione, ovvero del numero di pezzi
per lotto

If Lotto = 0 Then Risultato = (Tempo * Ordinato) / 3600
If Lotto > 0 Then Risultato = (Tempo / Lotto) * Ordinato / 3600


Fatto il calcolo si salvano i dati nella tabella, prima scrivendoli nel campo e poi usando il metodo update

rst0("ore_calcolate") = Risultato

rst0.Update

Si passa a nuovo record per un nuovo calcolo fino al termine della tabella
 

rst0.MoveNext
Loop

rst0.Close
db.Close

Apriamo la tabella e vediamo i calcoli
 

DoCmd.OpenTable "cicli"

Fine:
Close
MsgBox Err.Description
Exit Sub

End Sub

<<<< vai a pagina precedente


Scarica il database Access 97 d'esempio


 

Ritorna

Torna Su

Chiedi aiuto