| 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 στις 18: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 12:17 |
| [Γενικά] Σύγκριση με την προηγούμενη καταχώρηση | PANIK | Excel - Ερωτήσεις / Απαντήσεις | 13 | 30-04-12 22:41 |
| Αυτόματη εισαγωγή τιμής από προηγούμενη εγγραφή | mike04 | Access - Ερωτήσεις / Απαντήσεις | 3 | 04-06-11 16:30 |
| Αυτόματη εισαγωγή τιμής από προηγούμενη εγγραφή | pant | Access - Ερωτήσεις / Απαντήσεις | 16 | 27-03-11 15:24 |
Η ώρα είναι 07:26.


και έτσι σου πρότεινα το αντίθετο.
Υβριδικός τρόπος

