Καλησπέρα παιδιά!
Ζητάω την βοήθεια σας για έχω πραγματικά απελπιστεί. Στόχος μου είναι ο χρήστης να προχωράει σε Αποθήκευση ΜΟΝΟ αν πατήσει ένα συγκεκριμένο κουμπί.
Όταν θέλω να επεξεργαστώ η να καταχωρίσω δεδομένα ανοίγω την ανάλογη φόρμα (Single Form) στην επιθυμητή εγράφη. Στην φόρμα αυτή έχω απενεργοποιήσει. τα Navigation buttons. Επίσης θέτω την ιδιότητα Cycle= Current Page. Έτσι ο μόνος τρόπος για να αποθηκευτή η εγγραφή είναι να κλίσεις την φόρμα από το κουμπί [x] πάνω δεξιά. Προσθέτοντας τώρα εγώ δυο ακόμα κουμπιά cmdSave και cmdCancel και με το παρακάτω κώδικα κατάφερνα και προχωρούσα σε Αποθήκευση μόνο όταν ο χρήστης πατούσε το κουμπί cmdSave.
Κώδικας:
Private saveFlage As Boolean
Private Sub cmdSave_Click()
Dim strMsg As String
strMsg = "Είστε βέβαιος οτι Θέλετε να προχωρήσετε σε Αποθήκευση;"
If MsgBox(strMsg, vbExclamation + vbYesNo + vbDefaultButton2, "Save") = vbYes Then
saveFlage = True
Me.Dirty = False '<-Apothikeusi
DoCmd.Close acForm, Me.Name
End If
End Sub
Private Sub cmdCancel_Click()
If Me.Dirty = True Then
Me.Undo
End If
DoCmd.Close acForm, Me.Name
End Sub
Private Sub Form_BeforeUpdate(Cancel As Integer)
If saveFlage = False Then 'Periptosi pou patame to Close Button [x] pano deksia
If Me.Dirty = True Then
MsgBox "Η καρτέλα Θα κλείσει χωρίς Αποθήκευση!", vbExclamation + vbOKOnly, "Close"
Me.Undo
End If
End If
End Sub
Όλα καλά μέχρι εδώ. Το πράγμα όμως κολλάει όταν στην κύρια αυτή φόρμα προσθέσω μια υποφόρμα. Τότε
μόλις ο χρήστης πατήσει πάνω στην υποφόρμα η access πάει να προχωρήσει αυτόματα σε αποθήκευση τις κύριας( αν βέβαιά η ιδιότητα Dirty της κύριας είναι false). Αυτό έχει σαν συνέπια να χτυπήσουν κατά σειρά τα ακόλουθα Events: Form_BeforeUpdate -> Form_AfterUpdate ->SubForm_Enter . Οπότε έχω τα εξής προβλήματα:
1) Δεν μπορώ να βρω πότε ο χρήστης πατάει πάνω στην υποφόρμα καθώς το OnEnter Event του SubForm Control χτυπάει μετά το BeforeUpdate τις κύριας φόρμας
2) Ακόμα και αν εντοπίσω πότε ο χρήστης πατάει πάνω στην φόρμα, αν ακυρώσω την αποθήκευση (Form_BeforeUpdate->Cancel=true) η access δεν μπαίνει πότε στην υποφόρμα.
Θέλω να επισημάνω ότι αυτό συμβαίνει είτε η υποφόρμα είναι συνδεδεμένη με την κύρια είτε ΔΕΝ ΕΙΝΑΙ ΣΥΝΔΕΔΕΜΕΝΗ.
Πραγματικά έχω απελπιστεί, νομίζω ότι με την access είναι απαγορευτικός ο δημοφιλέστερος τρόπος αποθήκευσης….. δηλαδή μόνο όταν πατήσεις σε ένα συγκεκριμένο κουμπί. Ζητάω την βοήθεια σας να δω πως αντιμετωπίζετε παρόμοια κατάσταση