Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   Έλεγχος διπλοεγγραφής με κώδικα VBA (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/1100-elegxos-diploeggrafis-me-kodika-visual-basic-applications.html)

pdhmos 28-04-11 20:23

Έλεγχος διπλοεγγραφής με κώδικα VBA
 
Καλησπέρα και χρόνια πολλα σε ολους απο λαρισα.
Θα ηθελα βοηθεια και παλι στο εξης.
Εχω μια φορμα που κανω καταχωριση ενα προιον με κωδικα, Και θα ηθελα εαν υπαρχει ευκολος !!!! τροπος οταν ενημερωνω το πλαισιο κειμενου
με τον τυπο να κανει ελεγχο στον πινακα προιοντα και να μου δειχνει ενα υπαρχει τετοιος τυπος ξανα.
ευχαριστω προκαταβολικα.

Dimitris Ch 28-04-11 21:19

Καλησπέρα Δημο
Ενας ευκολος τροπος ειναι DCount("Τυπος","Πινακας","Τυπος = Πεδιο καταχωρησης")
Αν το αποτελεσμα ειναι μεγαλυτερο απο 0 τοτε υπαρχει

Φιλικα Δημητρης

pdhmos 28-04-11 21:31

Καλησπέρα Δημητρη δηλαδη εαν το βαλω μετα απο την ενημερωση θα γινει ετσι
τυπος = AT-71
βαση= προιοντα
Πεδιο καταχωρησης=MTYPOS

DCount("AT-71","προιοντα","AT-71=MTYPOS")

Δέν με δουλεψε μηπως κανω κατι λαθος ?

Dimitris Ch 28-04-11 23:34

Παράθεση:

Αρχική Δημοσίευση από pdhmos (Μήνυμα 6227)
Καλησπέρα Δημητρη δηλαδη εαν το βαλω μετα απο την ενημερωση θα γινει ετσι
τυπος = AT-71
βαση= προιοντα
Πεδιο καταχωρησης=MTYPOS

DCount("AT-71","προιοντα","AT-71=MTYPOS")

Δέν με δουλεψε μηπως κανω κατι λαθος ?

Γραψε DCount("mtypos","προιοντα","AT-71=MTYPOS")

Το θεμα ειναι οτι το ΑΤ-71 ειναι αυτο που καταχωρεις αν καταλαβα καλα
Αρα το καταχωρεις σε μια μεταβλητη. Ας πουμε TYPOSNEW

Τοτε θα γραψεις DCount("MTYPOS","προιοντα","MTYPOS=" & ME!TYPOSNEW & "")

Δοκιμασε και πες μας

Tasos 29-04-11 10:45

Καλημέρα!
Αγαπητέ Δήμο, αν θέλεις απλά να εμφανίζεται ότι υπάρχουν διπλότυπες εγγραφές
τότε η χρήση της VBA δεν είναι απαραίτητη.

Υποθέτω ότι το MTYPOS είναι το πεδίο περιέχει τους τύπους προϊόντων.

Σε ένα νέο πεδίο στη φόρμα με το όνομα "IsDuplicate" πέρασε το παρακάτω:

=DCount("*";"[προιοντα]";"[MTYPOS]='" & [MTYPOS] & "'")>1
αν ο τύπος δεδομένων του πεδίου MTYPOS είναι κείμενο

ή

=DCount("*";"[προιοντα]";"[MTYPOS]=" & [MTYPOS] )>1 αν ο τύπος δεδομένων του πεδίου MTYPOS είναι αριθμός.

Κατόπιν, επίλεξε το πεδίο MTYPOS και στη μορφοποίηση υπό όρους χρησιμοποίησε την έκφραση: "IsDuplicate" και όρισε τη μορφοποίηση του πεδίου όπως επιθυμείς.


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

Κώδικας:

Private Sub MTYPOS_BeforeUpdate(Cancel As Integer)
    'αν ο τύπος δεδομένων του πεδίου MTYPOS  είναι αριθμός τότε
    '.....DCount("*", "[προιοντα]", "[MTYPOS]=" & CDbl(Me![MTYPOS].Text)) > 1....

    If DCount("*", "[προιοντα]", "[MTYPOS]='" & Me![MTYPOS].Text & "'") > 1 Then
        Cancel = True
        MsgBox "Διπλότυπη εγγραφή!"
        Me![MTYPOS].Undo
    End If
End Sub

Τον παραπάνω κώδικα τον προτείνω με κάθε επιφύλαξη αφού δεν μπορώ να γνωρίζω τι υπάρχει ήδη στη φόρμα σου.

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

Με εκτίμηση

Τάσος

Tasos 30-04-11 23:36

Καλησπέρα Δήμο!

Σε ένα νέο πεδίο στη φόρμα (Στυλ Φόντου:Διαφανές, Στυλ περιγράμματος: Διαφανές, Χρώμα πρώτου πλάνου: #FF0000)
που θα το τοποθετήσεις δίπλα στο ΜΤΥΠΟΣ πέρασε το παρακάτω:

=IIf(DCount("*";"[ΠΡΟΙΟΝΤΑ]";"[ΤΥΠΟΣ]='" & [ΜΤΥΠΟΣ] & "'")>0;"Διπλοεγγραφή!!";"")

για να σου δείχνει αν η καταχώρηση στο πεδίο ΜΤΥΠΟΣ υπάρχει ήδη στον πίνακα ΠΡΟΙΟΝΤΑ.

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

Με εκτίμηση

Τάσος

pdhmos 01-05-11 09:09

Καλημερα τασο και δημητρη καθως και σε ολη την κοινοτητα και καλο μηνα.
(εδω στην λαρισα βρεχει )
Τασο σε ευχαριστω ακριβος αυτο ηθελα. Παλεψα να κανω την προταση του δημητρη και την δικια σου
αλλα απετυχα (με αποκοπη επικοληση ολλα οκ).

υγ. Θα ηθελα την γνωμη σας για το εαν αξιζει να εφαρμοζω φορμες με αδεσμευτα πεδια κλπ αντι του να ειναι δεσμευμετα επευθειας τα πεδια στην φορμα .

ΚΑΙ παλι ενα μεγαλο ευχαριστω.


Η ώρα είναι 08:34.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2