Εμφάνιση ενός μόνο μηνύματος
  #1  
Παλιά 25-06-17, 15:59
giannis_ie Ο χρήστης giannis_ie δεν είναι συνδεδεμένος
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2013
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 01-10-2014
Μηνύματα: 13
Προεπιλογή Φόρμα με υποφόρμα- Αποθήκευση κύριας μόνο πατώντας ένα συγκεκριμένο κουμπί

Καλησπέρα παιδιά!
Ζητάω την βοήθεια σας για έχω πραγματικά απελπιστεί. Στόχος μου είναι ο χρήστης να προχωράει σε Αποθήκευση ΜΟΝΟ αν πατήσει ένα συγκεκριμένο κουμπί.
Όταν θέλω να επεξεργαστώ η να καταχωρίσω δεδομένα ανοίγω την ανάλογη φόρμα (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 είναι απαγορευτικός ο δημοφιλέστερος τρόπος αποθήκευσης….. δηλαδή μόνο όταν πατήσεις σε ένα συγκεκριμένο κουμπί. Ζητάω την βοήθεια σας να δω πως αντιμετωπίζετε παρόμοια κατάσταση
Συνημμένα Αρχεία
Τύπος Αρχείου: zip BoundFormWithSub_SaveButton.zip (50,7 KB, 15 εμφανίσεις)
Απάντηση με παράθεση