Πεδίο που να αυξάνετε αυτόματα κατά 1

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

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

Απάντηση
Άβαταρ μέλους
big_dio
Δημοσιεύσεις: 84
Εγγραφή: 09 Απρ 2004 15:49
Τοποθεσία: corfu
Επικοινωνία:

Πεδίο που να αυξάνετε αυτόματα κατά 1

Δημοσίευση από big_dio » 18 Ιούλ 2008 12:53

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

Ευχαριστώ

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Πεδίο που να αυξάνετε αυτόματα κατά 1

Δημοσίευση από vassilism » 18 Ιούλ 2008 13:03

Η γνώμη μου είναι να αφήσεις ως έχει το πεδίο αυτόματης αρίθμησης το οποίο θα είναι και το πρωτεύον κλειδί.
Στην συνέχεια θα πρέπει να φτιάξεις ένα ερώτημα το οποίο θα παίρνει το max από το πεδίο αυτόματης αρίθμησης και θα αυξάνει +1 από την προηγούμενη εγγραφή.

Άβαταρ μέλους
big_dio
Δημοσιεύσεις: 84
Εγγραφή: 09 Απρ 2004 15:49
Τοποθεσία: corfu
Επικοινωνία:

Πεδίο που να αυξάνετε αυτόματα κατά 1

Δημοσίευση από big_dio » 18 Ιούλ 2008 13:20

vassilism έγραψε:Η γνώμη μου είναι να αφήσεις ως έχει το πεδίο αυτόματης αρίθμησης το οποίο θα είναι και το πρωτεύον κλειδί.
Στην συνέχεια θα πρέπει να φτιάξεις ένα ερώτημα το οποίο θα παίρνει το max από το πεδίο αυτόματης αρίθμησης και θα αυξάνει +1 από την προηγούμενη εγγραφή.
Ευχαριστώ, θα το δω...

Άβαταρ μέλους
big_dio
Δημοσιεύσεις: 84
Εγγραφή: 09 Απρ 2004 15:49
Τοποθεσία: corfu
Επικοινωνία:

Πεδίο που να αυξάνετε αυτόματα κατά 1

Δημοσίευση από big_dio » 18 Ιούλ 2008 13:44

το δοκίμασα αλλά κάτι δεν κάνω σωστά μπορείς να βοηθήσεις λίγο παραπάνω :lol:

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Πεδίο που να αυξάνετε αυτόματα κατά 1

Δημοσίευση από vassilism » 18 Ιούλ 2008 15:27

Βασικά έχω πολύ καιρό να ασχοληθώ με MS Access και δεν μπορώ να θυμηθώ πώς να σου συντάξω το ερώτημα.
Απλά σου λέω την λογική για να σε βάλω στο κλίμα.
Διάβασα πάλι την απάντησή μου και είδα ότι δεν διατύπωσα σωστά, έκανα λάθος.
Όταν λέω να φτιάξεις ένα ερώτημα το οποίο θα παίρνει το max από το πεδίο αυτόματης αρίθμησης και θα αυξάνει +1 από την προηγούμενη εγγραφή εννοώ το εξής:

1 θα παίρνει το sum από το πεδίο αυτόματης αρίθμησης (δηλαδή το σύνολο των εγγραφών)
2 θα φτιάξεις άλλο ένα πεδίο για την σωστή αρίθμηση.
3 στο πεδίο της σωστής αρίθμησης (το οποίo θα έχει τις εγγραφές με τη σειρά) θα κάνεις ερώτημα που θα αυξάνει κατά 1 από το sum του πεδίου της αυτόματης αρίθμησης.

Μπορεί να υπάρχει και πιο εύκολος τρόπος αλλά αυτό είναι το πρώτο που μου ήρθε στο μυαλό.

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

Πεδίο που να αυξάνετε αυτόματα κατά 1

Δημοσίευση από kon73 » 18 Ιούλ 2008 15:40

Δες στο Site μου στο Access VBA Κώδικας και αρχεία - Δικό μας autonumber http://www.MsAccess.gr όπου εκεί επεξηγώ τι να κάνεις.


Το Dmax η καλύτερα ο κώδικας μου το βάζεις στο Event BeforeInsert της Φόρμας

Το Link για απευθείας είναι :

http://access.terapad.com/index.cfm?fa= ... vtnbpzjmne

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

Άβαταρ μέλους
big_dio
Δημοσιεύσεις: 84
Εγγραφή: 09 Απρ 2004 15:49
Τοποθεσία: corfu
Επικοινωνία:

Πεδίο που να αυξάνετε αυτόματα κατά 1

Δημοσίευση από big_dio » 19 Ιούλ 2008 15:14

Φίλε kon73 σε ευχαριστώ για την βοήθεια ,

Επειδή δεν έχω κάνει ξανά κάτι παρόμοιο θα ήθελα αν είναι δυνατών μερικές διευκρίνισης, έχω των πίνακα επισκευές και μια φόρμα με το ίδιο όνομα που παρουσιάζει τις εγγραφές του πίνακα παράλληλα από την φόρμα αυτή γίνετε και η εισαγωγή των δεδομένων. Το πεδίο που θα έχει την αρίθμηση λέγετε ΑΔΑ και είναι αριθμητικό
Πως πρέπει να προσαρμόσω τον κώδικα που μου έχεις δώσει;

Εχω κάνει αυτό αλλά δεν παίζει η τιμή του πεδίου ΑΔΑ παραμένει 0
Private Sub ΑΔΑ_BeforeUpdate(Cancel As Integer)
Public Function CustAutoNum(IDΕπισκευές, IDΕπισκευές, VarΑΔΑ As String) As Integer

Dim VarRec As Integer
VarRec = Me.IDΕπισκευές
VarRec = DMax(IDΕπισκευές, VarΑΔΑ) + 1
CustAutoNum = VarRec


End Sub

ΕΥΧΑΡΙΣΤΏ

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

Πεδίο που να αυξάνετε αυτόματα κατά 1

Δημοσίευση από kon73 » 19 Ιούλ 2008 16:03

To CustAutoNum θα μπει στο Event BeforeInsert της Φόρμας όχι στο BeforeUpdate του ΑΔΑ. Σ'αυτό το CustAutNum έχω βάλει και ένα boolean αν είναι να ξεκινά η αρίθμηση από το 0 η το 1. Δίνω False το λοιπόν στο παράδειγμα αυτό για να εμφανίζεται το 1 ως πρώτος αριθμός του πίνακα ID. Στο όνομα πίνακα βάζεις τον πίνακα που βλέπει ώς ControlSource η φόρμα σου.

Θα δώσεις τον εξής Κώδικα

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


Me.IDΕπισκευές=CustAutoNum("IDΕπισκευές","ΌνομαΠίνακα",false)
Και ο κώδικας για το CustAutNum θα είναι

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

Public Function CAutoNum(id, Table As String, zero As Boolean) As Integer
If zero = True Then
    CAutoNum = Nz(DMax(id, Table), -1) + 1
Else
    CAutoNum = Nz(DMax(id, Table), 0) + 1
End If
End Function
Αυτά, πιστεύω να βοήθησα. Αν εξακολουθείς να έχεις πρόβλημα στείλε μου την βάση στο e-mail της σελίδας μου και στο εισάγω εγώ. Πρέπει όμως να μου πεις σε ποια φόρμα το θέλεις.

Φιλικά

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

Απάντηση

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

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

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