Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > Επιστροφή στην προηγούμενη επιλεγμένη εγγραφή

Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια!

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 01-04-12, 17:12
Όνομα: Λευτέρης
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 14-02-2012
Μηνύματα: 20
Προεπιλογή Επιστροφή στην προηγούμενη επιλεγμένη εγγραφή

Καλημέρα σε όλους.
Χρησιμοποιώ στην ΒΔ μου την φόρμα αναζήτησης του Τάσου που υπάρχει ήδη στο φόρουμ.
Θέλω όμως, αφού κάνω αναζήτηση και πατήσω πάνω σε μια εγγραφή, πατώντας την εντολή που δείχνει όλες τις εγγραφές, να συνεχίσει να έχει επιλεγμένη την εγγραφή που έχω ήδη επιλέξει.
Χρησιμοποίησα τον παρακάτω κώδικα αλλά μου βγάζει μήνυμα λάθους.
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

Παρακαλώ για την βοήθειά σας.
Ανεβάζω συνημμένα την ΒΔ.
Σας ευχαριστώ εκ των προτέρων.
Λευτέρης
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb accSearchFormTasos.mdb (284,0 KB, 19 εμφανίσεις)
Απάντηση με παράθεση
  #2  
Παλιά 01-04-12, 18:38
Όνομα: Θανάσης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 22-02-2012
Μηνύματα: 238
Προεπιλογή

Γειά σε όλους
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  
Παλιά 01-04-12, 21:24
Όνομα: Λευτέρης
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 14-02-2012
Μηνύματα: 20
Προεπιλογή

Θανάση σε ευχαριστώ καταρχάς για την γρήγορη απάντηση.
Το μήνυμα σταμάτησε να το βγάζει αλλά απ' ότι φαίνεται αυτός ο κώδικας δεν δουλεύει γιατί
όταν γράφω πχ "φάρος" και επιλέγω το επώνυμο στο φίλτρο, πατώντας την εντολή για να τα δείξει όλα, μετακινείται στην πρώτη εγγραφή.
Ελπίζω να βρεθεί κάποια λύση.
Με εκτίμηση, Λευτέρης.
Απάντηση με παράθεση
  #4  
Παλιά 01-04-12, 23:02
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Καλησπέρα σε όλους!

Παραθέτω τον τροποποιημένο κώδικα της λειτουργικής μονάδας της φόρμας (οι τροποποιήσεις έχουν μπλε χρώμα):

Κώδικας:
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  
Παλιά 02-04-12, 15:07
Όνομα: Λευτέρης
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 14-02-2012
Μηνύματα: 20
Προεπιλογή

Τάσο, καλημέρα.
Σ' ευχαριστώ που ασχολείσε και πάλι με ένα πρόβλημά μου.
Αντέγραψα τα κομάτια του κώδικα, αλλά και όλο τον κώδικα στην φόρμα,
αλλά παρ' όλα αυτά συνεχίζει να πηγαίνει ο κέρσορας στην πρώτη εγγραφή
και όχι στην επιλεγμένη.
Εχω office 2003.
Θα περιμένω να το δεις, όταν θα έχεις χρόνο.
Με εκτίμηση, Λευτέρης.
.
Απάντηση με παράθεση
  #6  
Παλιά 02-04-12, 17:32
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Καλησπέρα Λευτέρη!

Παρόλο που η συμπεριφορά του συγκεκριμένου προγράμματος είναι ίδια σε Access 2003 - 2010,
δοκίμασα το αρχείο που ανέβασες και σε 2003 και λειτουργεί κανονικά (δες το συνημμένο).

Θα πρέπει να αναζητήσεις το πρόβλημα σε οποιοδήποτε άλλο σημείο της εφαρμογής σου εκτός από τον κώδικα (που τον δοκίμασα πριν τον ανεβάσω).

Τάσος
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb accSearchFormTasos.mdb (336,0 KB, 39 εμφανίσεις)
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #7  
Παλιά 03-04-12, 14:06
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Καλημέρα σε όλους!

Αγαπητέ Λευτέρη έχεις δίκιο που λες ότι δεν σου λειτουργεί γιατί ο κώδικας κάνει ακριβώς το αντίθετο από το ζητούμενο σου δηλαδή μετά την αφαίρεση του φίλτρου σε μεταφέρει στην εγγραφή που είχε επιλεγεί πριν την εφαρμογή φίλτρου!

Δεν κατάλαβα καλά το ζητούμενο παρόλο ήταν σαφές από πλευράς σου και έτσι σου πρότεινα το αντίθετο.

Για να μεταφερθείς με το πάτημα του κουμπιού 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  
Παλιά 03-04-12, 18:45
Όνομα: Λευτέρης
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 14-02-2012
Μηνύματα: 20
Προεπιλογή

Καλημέρα σε όλους σας.

Αγαπητέ Τάσο,
για άλλη μια φορά, πολλά πολλά ευχαριστώ.
Είναι αυτό ακριβώς που ήθελα.
Δουλεύει άψογα, μετά την τελευταία προσθήκη.
Σε ευχαριστώ και για την πολύτιμη βοήθεια και για τον χρόνο που αφιερώνεις σε μας.
Να είσαι πάντα καλά,
Με εκτίμιση, Λευτέρης
Απάντηση με παράθεση
Απάντηση στο θέμα


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός 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.