|
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
|