| Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
| | Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
|
#1
| |||
| |||
|
Καλησπέρα σε όλα τα παιδιά Φίλοι μου, σας παρουσιάζω ένα πακέτο ενεργειών μέσω των οποίων ο χρήστης μια εφαρμογής μπορεί να αποθηκεύει μια έγγραφή ή μεταβολές που έκανε σε μια υπάρχουσα εγγραφή. Παρακαλώ τους πλέον έμπειρους και γνώστες του αντικειμένου Access & VBA να δουν το πακέτο αυτό και αν ειναι προς τη ...σωστή κατεύθυνση έχει καλώς. Αν δέχεται κάποιες μικρές αλλαγές άς τις προτείνουν. Αν ειναι κακό ας ...το πάρει το ποτάμι. Η δική μου πρόθεση ειναι να βοηθήσω κάποια παιδιά που ψάχνονται στα πρώτα τους βήματα και τ ί π ο τ ε άλλο. Επιτρέψτε μου μια ερώτηση : Η εντολή-συμβάν Dirty (αλλοίωση) αφορά πεδία πίνακα που η φόρμα παρουσιάζει και όχι πλαίσια λίστας. Πως -με κώδικα - θα γίνει δυνατόν να ανιχνεύεται η αλλαγή που ενδεχομένως γίνει σε κάποιο πλαίσιο λίστας; (VBA) Έλεγχος της ‘Αποθήκευσης’ εγγραφής ΒΗΜΑ 1. Σε υπάρχουσα Module της εφαρμογής εισάγω τη γραμμή κώδικα : Public elegxo As Integer ΒΗΜΑ 2. Στη φόρμα –της οποίας θέλω να ελέγχω την αποθήκευση γράφω : Private Sub Form_Current() elegxo = 0 End Sub ΒΗΜΑ 3. Στο κουμπί ‘Αποθήκευση’ της φόρμας γράφω : If IsNull(combo21) Then MsgBox "Δεν επέλεξες Πρόγραμμα !", vbInformation + vbOKOnly, "ΕΛΕΓΧΟΣ" combo21.SetFocus (1) Exit Sub End If … κλπ... If Me.Dirty Then ‘ Έλεγχος αν έγιναν αλλαγές στα πεδία της φόρμας elegxo = 1 Dim flag As VbMsgBoxResult flag = MsgBox("Να αποθηκευτούν οι αλλαγές ?", vbYesNo Or vbQuestion, "ΕΛΕΓΧΟΣ") Select Case flag Case vbYes [ID1] = combo21 (2) DoCmd.RunCommand acCmdSaveRecord Case vbNo Me.Undo If Me.NewRecord = True Then DoCmd.GoToRecord , , acLast (3) End Select ΑΣτοχος.SetFocus Else MsgBox "Δεν έκανες κάποια αλλαγή !", vbInformation, "ΕΛΕΓΧΟΣ" End If ΒΗΜΑ 4. Στο συμβάν της φόρμας Before-Update έχω τον κώδικα : Private Sub Form_BeforeUpdate(Cancel As Integer) If Me.Dirty And elegxo = 0 Then (4) Dim flag As VbMsgBoxResult flag = MsgBox("Να αποθηκευτούν οι αλλαγές ?", vbYesNo Or vbQuestion, "ΕΛΕΓΧΟΣ") Select Case flag Case vbYes [ID1] = combo21 DoCmd.RunCommand acCmdSaveRecord Case vbNo Me.Undo If Me.NewRecord = True Then DoCmd.GoToRecord , , acLast (5) End Select ΑΣτοχος.SetFocus End If End Sub Σχόλια : (1) Combo21 είναι το όνομα του μοναδικού πλαισίου λίστας που υπάρχει στη φόρμα. (2) Το πεδίο [ID1] παίρνει τιμή ίδια με αυτή που επιλέγει από το πλαίσιο λίστας. (3) Μόνο αν είμαστε σε νέα εγγραφή θέλω να γυρίσει πίσω (4) Έγιναν αλλαγές αλλά δεν πατήθηκε η Αποθήκευση! (5) Μόνο αν είμαστε σε νέα εγγραφή θέλω να γυρίσει πίσω Η βασική ιδέα στη παραπάνω ανάλυση είναι η εξής: Όταν ο χρήστης κάνει αλλαγές και δεν πατήσει το πλήκτρο ‘Αποθήκευση’, να υπάρχει κώδικας που θα ζητήσει –από τον χρήστη – την αποδοχή ή όχι των αλλαγών. Να θυμίσω ότι αποθήκευση έχουμε ΑΥΤΟΜΑΤΑ, όταν πάμε σε άλλη εγγραφή, όταν κλείσουμε τη φόρμα ,…και γενικά όταν το Focus πάει σε αντικείμενο έξω από την τρέχουσα εγγραφή! Νάχετε ένα καλό βράδυ O Meteora Έχω κάποιες δυσκολίες. Κωνσταντίνε τα *.doc δεν επισυνάπτονται ; Πώς επισυνάπτω; |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
| ||||
| Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
| Αποθηκευση Απεικόνισης σε πεδιο φορμας | concar | Access - Ερωτήσεις / Απαντήσεις | 0 | 25-11-16 10:02 |
| Αποθήκευση Εγγραφής από Ερώτημα | kostakis123 | Access - Ερωτήσεις / Απαντήσεις | 1 | 07-12-15 10:12 |
| Έλεγχος και αποτροπή διπλότυπης εγγραφής και εμφάνιση φόρμας | pctechdr | Access - Ερωτήσεις / Απαντήσεις | 2 | 11-06-15 15:02 |
| Ενημέρωση Πεδίου Δευτερεύουσας Φόρμας μέσω Βοηθητικής Φόρμας | Χρήστος | Access - Ερωτήσεις / Απαντήσεις | 1 | 17-04-12 18:18 |
| Εξαγωγή και αποθήκευση δεδομένων φόρμας σε word | nasos23 | Access - Ερωτήσεις / Απαντήσεις | 1 | 15-03-12 09:10 |
Η ώρα είναι 19:56.



Θεματικός Τρόπος
