Routine per lo sviluppo di database per la qualità

Eseguire calcoli e controlli con visual basic

2/2

 

Routine di calcolo
Quella che segue è la routine che è 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 è la seguente (le note in rosso sono state aggiunte solo per commentare il programma):

On Error GoTo Fine

La riga sopra fa in modo che se il programma trova un errore,
anzichè 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 perchè dovremo scrivere nella tabella 
rst0.Edit

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

If Not IsNull è 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 è 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 (Sì) 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