Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > [ Φόρμες ] Άνοιγμα φόρμας και άμεση μετάβαση σε συγκεκριμένη εγγραφή.

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 06-03-12, 12:46
Όνομα: Σάκης
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 04-02-2012
Μηνύματα: 49
Προεπιλογή Άνοιγμα φόρμας και άμεση μετάβαση σε συγκεκριμένη εγγραφή.

Γεια σας και πάλι!!!
Έχω μία φόρμα που την ονομάζω "pelates" και στην οποία δεν επιτρέπω επεξεργασία δεδομένων. Στη φόρμα αυτή έχω ένα κουμπί με λεζάντα Επεξργασία και το οποίο με παίρνει στη φόρμα "Edit_pelates" στην οποία επιτρέπω την επεξεργασία. Με τον παρακάτω κώδικα που έβαλα, όταν ανοίγει η φόρμα "Edit_pelates" μου εμφανίζει μόνο την εγγραφή στην οποία βρισκόμουν τη στιγμή που πάτησα το κουμπί Επεξεργασία.

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "Edit_Pelates"

stLinkCriteria = "[kwdikos_pelati]=" & Me![kwdikos_pelati]
DoCmd.Close

DoCmd.OpenForm stDocName, , , stLinkCriteria

Όλα μια χαρά μέχρι εδώ.
Όμως στη φόρμα "Edit_pelates" έχω ένα κουμπί με λεζάντα "Πίσω" και το οποίο κλείνει τη φόρμα "Edit_pelates" κι ανοίγει τη φόρμα "Pelates" και μου δείχνει την πρώτη εγγραφή. Εγώ θέλω να βάλω κώδικα που να με παίρνει αμέσως στην εγγραφή την οποία επεξεργαζόμουν στη φόρμα "Edit_pelates". Αν βάλω τον αντίστοιχο παραπάνω κώδικα, ναι μεν θα με πάρει σε αυτήν την εγγραφή, αλλά δε θα μου επιτρέπει να μετακινηθώ στις υπόλοιπες. (γιατί στην ουσία εφαρμόζεται φίλτρο).
Γνωρίζει κανείς τί μπορώ να κάνω;
Επιπλέον θα ήθελα να ξέρω πως γίνεται να πάω αμέσως στην τελειταία εγγραφή της φόρμας "Pelates" βάζοντας κώδικα στο κλικ του κουμπιού Πίσω και όχι στο άνοιγμα ή στη φόρτωση της φόρμας "Pelates", γιατί αυτό νομίζω ότι μπορώ να το καταφέρω με τον παρακάτω κώδικα

On Error GoTo Err_ÅíôïëÞ21_Click


DoCmd.GoToRecord , , acLast

Exit_ÅíôïëÞ21_Click:
Exit Sub

Err_ÅíôïëÞ21_Click:
MsgBox Err.Description
Resume Exit_ÅíôïëÞ21_Click
Απάντηση με παράθεση
  #2  
Παλιά 06-03-12, 14:36
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Καλημέρα Σάκη!

Επειδή δεν γνωρίζω με ποιο τρόπο δεν επιτρέπεις την επεξεργασία δεδομένων στην αρχική σου φόρμα, σου προτείνω ένα πιο γενικευμένο κώδικα:

Κώδικας:
Private Sub cmdOpenEditForm_Click()

    Dim CurrentID As Long
    Dim stDocName As String
    Dim stLinkCriteria As String
    Dim rs As Object
    
    On Error Resume Next
    
    If Me.Dirty Then
        DoCmd.RunCommand acCmdSaveRecord
    End If
    If Err <> 0 Then
        Beep
        MsgBox Err.Description
        Exit Sub
    End If
    
    stDocName = "Edit_Pelates"
    stLinkCriteria = "[kwdikos_pelati]=" & Nz(Me![kwdikos_pelati], "Null")
    
    DoCmd.OpenForm stDocName, acNormal, "", stLinkCriteria, , acDialog

    If Not IsNull(Me![kwdikos_pelati]) Then
        Me.Refresh
        Exit Sub
    Else
        CurrentID = Nz(DMax("[kwdikos_pelati]", Me.RecordSource), 0)
    End If
    
    Me.Requery
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[kwdikos_pelati] = " & CurrentID
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    rs.Close
    
End Sub
Καλή συνέχεια!

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #3  
Παλιά 06-03-12, 17:26
Όνομα: Σάκης
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 04-02-2012
Μηνύματα: 49
Προεπιλογή

Γεια σου Τάσο!!!
Απαγορεύω την επεξεργασία από τις ιδιότητες της φόρμας, καρτέλα δεδομένα και κάνω ¨Οχι τη δυνατότητα επεξεργασίας και διαγραφών.
Έχω μπερδευτεί με τον κώδικα που μου έστειλες. Τι ακριβώς πετυχαίνω με αυτόν; Πού θα πρέπει να τον δοκιμάσω;
Απάντηση με παράθεση
  #4  
Παλιά 06-03-12, 19:39
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Σάκη, βάλε τον κώδικα στο συμβάν Click ενός κουμπιού στην κύρια φόρμα και θα γίνει το ζητούμενο σου.

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #5  
Παλιά 06-03-12, 20:43
Όνομα: Σάκης
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 04-02-2012
Μηνύματα: 49
Προεπιλογή

Τάσο, δοκίμασα τον κώδικα που μου έστειλες, αλλά κάνει ακριβώς το ίδιο πράγμα με το δικό μου κώδικα.
Βασικά εγώ ήθελα από την Edit_Pelates να πηγαίνω στη φόρμα Pelates, οπότε στον κώδικά σου άλλαξα το stDocName = "Edit_Pelates" σε stDocName = "Pelates".
Όταν λοιπόν με τον κώδικά σου πηγαίνω από την Edit_pelates στην Pelates, ναι μεν πηγαίνω αμέσως στη σωστή εγγραφή, αλλά εφαρμόζεται φίλτρο και δεν μπορώ να δω τις υπόλοιπες εγγραφές. Αυτό είναι το πρόβλημα που προσπαθώ να λύσω.
Στην ουσία λοιπόν, εσύ μου έδωσες έναν άλλο τρόπο για να κάνω αυτό που ήδη είχα καταφέρει. Ελπίζω να καταλαβαίνεις το πρόβλημα.
Σε κάθε περίπτωση, σ'ευχαριστώ που ασχολείσαι με το θέμα μου.
Απάντηση με παράθεση
  #6  
Παλιά 06-03-12, 21:52
Όνομα: Δημήτρης
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 21-07-2010
Μηνύματα: 98
Προεπιλογή

Σάκη καλισπέρα
Για δοκίμασε
στο cmdOpenEdit_pelates_Click()
αντι για
DoCmd.Close
Form_pelates.Visible = False

και για την επιστροφή στο cmdPisoStousPelates_Click() της φόρμας Edit_pelates

DoCmd.Close (τη φόρμα Edit_pelates)
Form_pelates.Visible = True

Φιλικά
Δημήτρης
Απάντηση με παράθεση
  #7  
Παλιά 06-03-12, 22:17
Όνομα: Δημήτρης
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 21-07-2010
Μηνύματα: 98
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από dimmag Εμφάνιση μηνυμάτων
Σάκη καλισπέρα
Για δοκίμασε
στο cmdOpenEdit_pelates_Click()
αντι για
DoCmd.Close
Form_pelates.Visible = False

και για την επιστροφή στο cmdPisoStousPelates_Click() της φόρμας Edit_pelates

DoCmd.Close (τη φόρμα Edit_pelates)
Form_pelates.Visible = True

Φιλικά
Δημήτρης
Για αποφυγή παρανόησης
για την επιστροφή στο cmdPisoStousPelates_Click() της φόρμας Edit_pelates
μετά το
DoCmd.Close (τη φόρμα Edit_pelates)
βάλε
Form_pelates.Visible = True
Απάντηση με παράθεση
  #8  
Παλιά 06-03-12, 22:44
Όνομα: Σάκης
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 04-02-2012
Μηνύματα: 49
Προεπιλογή

Χαχά!!! Δημήτρη όταν διάβασα τη σκέψη σου είπα "αποκλείεται να υπάρχει τόσο απλή λύση"...
Και όντως!!! Αυτό που μου πρότεινες κάνει τη δουλειά που θέλω!!! Εναλλακτικός ο τρόπος σκέψης σου!!! Σ' ευχαριστώ πάρα πολύ!!!
Πάντως, αν μάθαινα πως μπορώ βρισκόμενος σε μία φόρμα, να πάω αμέσως στην τελευταία εγγραφή μιας άλλης φόρμας, τότε θα ήμουν 100% καλυμμένος.
Απάντηση με παράθεση
  #9  
Παλιά 07-03-12, 00:24
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα/Καλημέρα στην παρέα

Πράγματι η λύση που πρότεινε ο Δημήτρης είναι έξυπνη και απλή.

Πιστεύω όμως ότι, αν κάνουμε αλλαγές δεδομένων στη φόρμα Edit_pelates, δε θα εμφανίζονται στη φόρμα pelates, όταν την κάνουμε ορατή.

Για να πάμε στην τελευταία εγγραφή, στο κουμπί που εμφανίζει τη φόρμα pelates, μπορούμε να βάλουμε τον κώδικα: Forms("pelates").Recordset.MoveLast

Φιλικά/Γιώργος
Απάντηση με παράθεση
  #10  
Παλιά 07-03-12, 02:08
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

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

Σάκη ο κώδικας που υπάρχει στο μήνυμα σου:
Κλείνει την αρχική φόρμα "Pelates".
Ανοίγει τη φόρμα "Edit_Pelates" με κριτήριο το ID της τρέχουσας εγγραφής της αρχικής
("Pelates") που το έχεις βάλει προηγουμένως στη μεταβλητή stLinkCriteria.

Ο δικός μου κώδικας δεν κάνει ακριβώς τα ίδια με τον δικό σου.

Τι κάνει ο κώδικας αυτός :

Δεν κλείνει τη φόρμα πελάτες. Έτσι, τυχόν μεταβλητές που έχουν δηλωθεί στον κώδικα της φόρμας παραμένουν ως έχουν για περαιτέρω χρήση.

Αποθηκεύει τυχόν μη αποθηκευμένη εγγραφή για να μπορέσει να την εμφανίσει στη φόρμα "Edit_Pelates".

Ανοίγει τη φόρμα "Edit_Pelates" σε παράθυρο διαλόγου αποκλείοντας έτσι κάθε
ενέργεια σε οποιοδήποτε άλλο σημείο της εφαρμογής εκτός από την ίδια τη φόρμα.

Παράλληλα, επειδή φόρμα "Edit_Pelates" σε παράθυρο διαλόγου, ο κώδικας που την άνοιξε διακόπτεται και θα συνεχίζει να εκτελείται μόνο όταν εκείνη κλείσει.

Στη συνέχεια της εκτέλεσης του κώδικα θα γίνει ανανέωση των δεδομένων της φόρμας "Pelates" και αν έχει δημιουργηθεί νέα εγγραφή θα την επιλέξει.

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

Με γνώμονα τα παραπάνω και μην γνωρίζοντας τον τρόπο που περιορίζεις την επεξεργασία της αρχικής φόρμας, αλλά και τη δόμηση της βάσης,
σου έστειλα όπως είπα αυτόν τον "γενικευμένο κώδικα".

Όσο για το φίλτρο που δεν θέλεις να εφαρμόζεται στη φόρμα "Edit_Pelates" θα πρέπει να
τροποποιηθεί ο κώδικας στη φόρμα "Pelates" αλλά και να προστεθεί ο παρακάτω κώδιικας στη φόρμα "Edit_Pelates":

Κώδικας:
Private Sub Form_Load()
    Dim rs As Object, CurrentID As Long
    CurrentID = Nz(Me.OpenArgs)
    If CurrentID = 0 Then
        DoCmd.GoToRecord , , acNewRec
    Else
        Set rs = Me.Recordset.Clone
        rs.FindFirst "[kwdikos_pelati] = " & CurrentID
        If Not rs.EOF Then Me.Bookmark = rs.Bookmark
        rs.Close
    End If
End Sub
Στο συνημμένο μπορείς να δεις ένα παράδειγμα.


Καλή συνέχεια!

Τάσος
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb AccOpenEditForm.mdb (252,0 KB, 205 εμφανίσεις)
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
Απάντηση στο θέμα


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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[ Φόρμες ] Άνοιγμα φόρμας επιλέγοντας εγγραφή noname Access - Ερωτήσεις / Απαντήσεις 2 18-02-16 11:39
Μετάβαση απο σύνθετο πλαίσιο σε εγγραφή soc07 Access - Ερωτήσεις / Απαντήσεις 0 25-02-11 12:23
[ Φόρμες ] ΜΕΤΑΒΑΣΗ ΣΕ ΕΓΓΡΑΦΗ gregory_m Access - Ερωτήσεις / Απαντήσεις 2 27-09-10 23:26
Άνοιγμα φόρμας με F5 mdragon Access - Ερωτήσεις / Απαντήσεις 2 23-04-10 18:05
Κενή εγγραφή στο τέλος συνεχούς φόρμας stavros2244 Access - Ερωτήσεις / Απαντήσεις 3 09-04-10 08:45


Η ώρα είναι 07:14.