Καλησπέρα
Άκη καλωσόρισες στο φόρουμ.
Δεν ξέρω πως σχεδίασες τη βάση σου, αλλά δεν είναι καλή ιδέα στοιχεία που υπάρχουν σ’ ένα πίνακα να αποθηκεύονται και σε άλλους. Δημιουργούνται προβλήματα, όπως:
1) Τα στοιχεία να είναι διαφορετικά στους διάφορους πίνακες (ασυγχρόνιστα).
2). Αν κάνουμε μία διόρθωση σε κάποιο στοιχείο θα πρέπει να την επαναλάβουμε σ’ όλους τους πίνακες που έχει αποθηκευτεί.
Στη ΒΔ που επισυνάπτω, υπάρχουν οι φόρμες «frmTimologia» και «frmTimologia2» που έχουν τη λειτουργικότητα, που θέλεις χωρίς να αποθηκεύουν τα στοιχεία που υπάρχουν στον πίνακα «tblAromata» και στον πίνακα «tblTimologia».
Στη φόρμα «frmTimologia»στην προέλευση του στοιχείου ελέγχου της τιμής υπάρχει η έκφραση: =IIf(IsNull([AromaID]);"";DLookUp("Timi";"tblAromata";"AromaID=" & [AromaID])).
Η φόρμα «frmTimologia2», οφείλει τη συμπεριφορά της στο υποκείμενο ερώτημα «qryTimologia2».
Η φόρμα «frmTimologiuError» , που δεν τη συνιστώ ως λύση, αποθηκεύει υπολογιζόμενα στοιχεία και στοιχεία του πίνακα «tblAromata» και στον υποκείμενο πίνακα «tblAromataError». Η επίτευξη της λειτουργικότητά της είναι δυσκολότερη και στηρίζεται στον κώδικα:
Κώδικας:
Private Sub AromaID_AfterUpdate()
Me.fTimi = DLookup("Timi", "tblAromata", "AromaID=" & Me.AromaID)
Me.fAroma = DLookup("Aroma", "tblAromata", "AromaID=" & Me.AromaID)
If Not (IsNull(Me.fTimi) Or IsNull(Me.Posotita)) Then
Me.fAxia = Me.fTimi * Me.Posotita
End If
End Sub
Private Sub fTimi_AfterUpdate()
If Not (IsNull(Me.fTimi) Or IsNull(Me.Posotita)) Then
Me.fAxia = Me.fTimi * Me.Posotita
End If
End Sub
Private Sub Posotita_AfterUpdate()
If Not (IsNull(Me.fTimi) Or IsNull(Me.Posotita)) Then
Me.fAxia = Me.fTimi * Me.Posotita
End If
End Sub
Φιλικά/Γιώργος