Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
Επιστροφή στην προηγούμενη επιλεγμένη εγγραφή
Καλημέρα σε όλους. Χρησιμοποιώ στην ΒΔ μου την φόρμα αναζήτησης του Τάσου που υπάρχει ήδη στο φόρουμ. Θέλω όμως, αφού κάνω αναζήτηση και πατήσω πάνω σε μια εγγραφή, πατώντας την εντολή που δείχνει όλες τις εγγραφές, να συνεχίσει να έχει επιλεγμένη την εγγραφή που έχω ήδη επιλέξει. Χρησιμοποίησα τον παρακάτω κώδικα αλλά μου βγάζει μήνυμα λάθους. Private Sub cmdClearSearch_Click() Dim rs As Object Dim strBookmark As String strBookmark = Forms!frmCustomers.ID Forms!frmCustomers.Requery Set rs = Me.Recordset.Clone rs.FindFirst "id ='" & strBookmark & "'" If Not rs.EOF Then Me.Bookmark = rs.Bookmark Me.txtSearch = vbNullString Me.Filter = vbNullString Me.FilterOn = False End Sub Παρακαλώ για την βοήθειά σας. Ανεβάζω συνημμένα την ΒΔ. Σας ευχαριστώ εκ των προτέρων. Λευτέρης |
#2
| |||
| |||
Γειά σε όλους Private Sub cmdClearSearch_Click() Dim rs As Object Dim strBookmark As integer strBookmark = Forms!frmCustomers.ID Forms!frmCustomers.Requery Set rs = Me.Recordset.Clone rs.FindFirst "id =" & strBookmark & "" 'ΔΕΝ ΧΡΕΙΑΖΕΤΑΙ If Not rs.EOF Then Me.Bookmark = rs.Bookmark Me.txtSearch = vbNullString Me.Filter = vbNullString Me.FilterOn = False End Sub Επειδή το ID είναι αριθμός Θανάσης Π Τελευταία επεξεργασία από το χρήστη Meteora : 01-04-12 στις 19:53. |
#3
| |||
| |||
Θανάση σε ευχαριστώ καταρχάς για την γρήγορη απάντηση. Το μήνυμα σταμάτησε να το βγάζει αλλά απ' ότι φαίνεται αυτός ο κώδικας δεν δουλεύει γιατί όταν γράφω πχ "φάρος" και επιλέγω το επώνυμο στο φίλτρο, πατώντας την εντολή για να τα δείξει όλα, μετακινείται στην πρώτη εγγραφή. Ελπίζω να βρεθεί κάποια λύση. Με εκτίμηση, Λευτέρης. |
#4
| ||||
| ||||
Καλησπέρα σε όλους! Παραθέτω τον τροποποιημένο κώδικα της λειτουργικής μονάδας της φόρμας (οι τροποποιήσεις έχουν μπλε χρώμα): Κώδικας: Option Compare Database Option Explicit Private strAlt$, sqlStr$, RstName$, BMK As Variant Private Sub cmdClearSearch_Click() If Me.txtSearch <> vbNullString Then Me.txtSearch = vbNullString Me.Filter = vbNullString Me.FilterOn = False If Not IsEmpty(BMK) Then Me.Bookmark = BMK End Sub Private Sub Form_Current() Me.xf = Me.ID End Sub Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) On Error Resume Next Select Case KeyCode Case vbKeyDown KeyCode = 0 DoCmd.GoToRecord , , acNext Case vbKeyUp KeyCode = 0 DoCmd.GoToRecord , , acPrevious End Select End Sub Private Sub Form_Load() RstName = Me.Recordset.Name End Sub Private Sub txtSearch_Change() Dim XS$ XS = txtSearch.Text If XS = vbNullString Then cmdClearSearch_Click Exit Sub End If On Error Resume Next sqlStr = "[Thename] Like '" & "*" & ReplaceTones(XS) & "*" & "'" If Err = 91 Then Err.Clear: GoTo ChangeHere If DCount("[Thename]", RstName, sqlStr) = 0 Then Me.txtSearch = strAlt Else ChangeHere: Me.Filter = sqlStr Me.FilterOn = True strAlt = XS End If Me.txtSearch.SetFocus Me.txtSearch.SelStart = Nz(Len(XS)) End Sub Private Sub txtSearch_GotFocus() If Nz(Me.txtSearch, vbNullString) = vbNullString And Not Me.FilterOn Then BMK = Me.Bookmark End If End Sub Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
#5
| |||
| |||
Τάσο, καλημέρα. Σ' ευχαριστώ που ασχολείσε και πάλι με ένα πρόβλημά μου. Αντέγραψα τα κομάτια του κώδικα, αλλά και όλο τον κώδικα στην φόρμα, αλλά παρ' όλα αυτά συνεχίζει να πηγαίνει ο κέρσορας στην πρώτη εγγραφή και όχι στην επιλεγμένη. Εχω office 2003. Θα περιμένω να το δεις, όταν θα έχεις χρόνο. Με εκτίμηση, Λευτέρης. . |
#6
| ||||
| ||||
Καλησπέρα Λευτέρη! Παρόλο που η συμπεριφορά του συγκεκριμένου προγράμματος είναι ίδια σε Access 2003 - 2010, δοκίμασα το αρχείο που ανέβασες και σε 2003 και λειτουργεί κανονικά (δες το συνημμένο). Θα πρέπει να αναζητήσεις το πρόβλημα σε οποιοδήποτε άλλο σημείο της εφαρμογής σου εκτός από τον κώδικα (που τον δοκίμασα πριν τον ανεβάσω). Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
#7
| ||||
| ||||
Καλημέρα σε όλους! Αγαπητέ Λευτέρη έχεις δίκιο που λες ότι δεν σου λειτουργεί γιατί ο κώδικας κάνει ακριβώς το αντίθετο από το ζητούμενο σου δηλαδή μετά την αφαίρεση του φίλτρου σε μεταφέρει στην εγγραφή που είχε επιλεγεί πριν την εφαρμογή φίλτρου! Δεν κατάλαβα καλά το ζητούμενο παρόλο ήταν σαφές από πλευράς σου και έτσι σου πρότεινα το αντίθετο. Για να μεταφερθείς με το πάτημα του κουμπιού cmdClearSearch στην τελευταία εγγραφή τη οποία είχες επιλέξει όταν η φόρμα είχε φιλτραριστεί, η μόνη αλλαγή που θα χρειαστεί να κάνεις είναι να αντικαταστήσεις τον κώδικα του κουμπιού με τον παρακάτω κώδικα : Κώδικας: Private Sub cmdClearSearch_Click() Dim RecID As Long Me.txtSearch = vbNullString RecID = Nz(Me.ID) Me.FilterOn = False Me.Filter = vbNullString With Me.Recordset.Clone .FindFirst ("ID=" & RecID) If Not .NoMatch Then Me.Bookmark = .Bookmark End With End Sub Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
#8
| |||
| |||
Καλημέρα σε όλους σας. Αγαπητέ Τάσο, για άλλη μια φορά, πολλά πολλά ευχαριστώ. Είναι αυτό ακριβώς που ήθελα. Δουλεύει άψογα, μετά την τελευταία προσθήκη. Σε ευχαριστώ και για την πολύτιμη βοήθεια και για τον χρόνο που αφιερώνεις σε μας. Να είσαι πάντα καλά, Με εκτίμιση, Λευτέρης |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[ Φόρμες ] Πεδίο που συμπληρώνεται αυτόματα αν υπάρχει η τιμή σε προηγούμενη εγγραφή. | dim.konst | Access - Ερωτήσεις / Απαντήσεις | 2 | 29-05-14 13:17 |
[Γενικά] Σύγκριση με την προηγούμενη καταχώρηση | PANIK | Excel - Ερωτήσεις / Απαντήσεις | 13 | 30-04-12 23:41 |
Αυτόματη εισαγωγή τιμής από προηγούμενη εγγραφή | mike04 | Access - Ερωτήσεις / Απαντήσεις | 3 | 04-06-11 17:30 |
Αυτόματη εισαγωγή τιμής από προηγούμενη εγγραφή | pant | Access - Ερωτήσεις / Απαντήσεις | 16 | 27-03-11 16:24 |
Η ώρα είναι 09:32.