Η σελίδα μας αναβαθμίστηκε, γι' αυτό τον λόγο τα μέλη μας θα πρέπει να ζητήσουν νέο κωδικό πρόσβασης από την υπηρεσία "Αποστολή κωδικού πρόσβασης".
Εάν το email με τον νέο κωδικό δεν έρθει στο inbox κοιτάξτε και στο spam folder. Ο server είναι φρέσκος και δεν έχει το reputation που του αξίζει.

Προσπέλαση αριθμού συγκεκριμένης εγγραφής.

Συζητήσεις για την τοπική βάση δεδομένων Access της Microsoft

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
sakis297
Δημοσιεύσεις: 20
Εγγραφή: 09 Μάιος 2007 21:39

Προσπέλαση αριθμού συγκεκριμένης εγγραφής.

Δημοσίευση από sakis297 » 18 Φεβ 2009 18:27

Γεια σας παιδιά!!!
Δουλεύω σε μια φόρμα και χρησιμοποιώ τη συνάρτηση dlookup για να βρω για παράδειγμα αν υπάρχει άλλη εγγραφή του πίνακα που να έχει τον ίδιο συνδυασμό τιμών, στα πεδία Όνομα και Ημερομηνία. Για παράδειγμα έχω Όνομα = Σάκης Ημερομηνία = 18/02/2009.
Αν δεν υπάρχει άλλη εγγραφή με αυτές τις τιμές, η dlookup μου δίνει αρνητικό αποτέλεσμα.
Αν όμως εγώ εκτελώ την dlookup μέσω μακροεντολής μετά την αλλαγή στα πεδία Όνομα και Ημερομηνία, σε περίπτωση που αλλάξω το Σάκης και γράψω και πάλι Σάκης, το αποτέλεσμα της dlookup θα είναι θετικό.
Θα ήθελα λοιπόν η dlookup να μην ελέγχει την τρέχουσα εγγραφή.
Σκέφτηκα λοιπόν ότι αν μπορούσα να προσπελάσω τον αριθμό της τρέχουσας εγγραφής και τον αριθμό της εγγραφής που βρίσκει η dlookup και βάλω ως κριτήριο οι αριθμοί αυτοί να είναι διάφοροι, τότε θα λύσω το πρόβλημά μου.
Έχει κανεις να μου προτείνει κάτι;

Άβαταρ μέλους
kon73
Script Master
Δημοσιεύσεις: 224
Εγγραφή: 13 Απρ 2008 23:47
Επικοινωνία:

Προσπέλαση αριθμού συγκεκριμένης εγγραφής.

Δημοσίευση από kon73 » 18 Φεβ 2009 23:59

Αγαπητέ φίλε sakis297,

Αν δεν είναι δεσμευτική η χρήση της Dlookup τότε θα μπορούσες να χρησιμοποιήσεις ως πρωτεύων κλειδί τα δύο πεδία (Στο παράδειγμα Όνομα, Ημερομηνία Γέννησης) και να περιμένεις σε περίπτωση που ο χρήστης εισάγει τα ίδια δεδομένα στα δύο πεδία να σου γυρίσει η Access μήνυμα Λάθους.

Το μήνυμα λάθους είναι 3022 και σου παραθέτω τον κώδικα δείγμα στο συμβάν On Error της Φόρμας που περιέχει τα 2 πεδία κλειδιά.

Κώδικας: Επιλογή όλων

Private Sub Form_Error(DataErr As Integer, Response As Integer)
    If DataErr = 3022 Then MsgBox "Διπλή Εγγραφή"
End Sub
Αν τώρα πρέπει για δικούς σου λόγους να χρησιμοποιήσεις την Dlookup τότε ας υποθέσουμε ότι έχουμε τα 2 ID και τα εισάγουμε στο BeforeUpdate της Φόρμας.
Επίσης 2 ID δεν είναι πρωτεύοντα κλειδιά και ο πίνακας είναι ο test

Κώδικας: Επιλογή όλων

Private Sub Form_BeforeUpdate(Cancel As Integer)
    If Not IsNull(DLookup("ID1", "Test", "ID1=" & Me.id1)) And Not IsNull(DLookup("ID2", "Test", "ID2=" & Me.id2)) Then
        MsgBox "Διπλή Εγγραφή"
        Cancel = True
    End If
End Sub
Πιστεύω να βοήθησα αν φυσικά κατάλαβα καλά το ερώτημά σου.

Φιλικά

Kon73
My New Site http://www.MsAccess.gr
Free Access (VBA Code,Tutorials, Mdbs, Eclass, Eshop)
Εικόνα

Απάντηση

Επιστροφή στο “MS Access”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες