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