Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > Αρίθμηση γραμμών ερωτήματος μετά την ταξινόμησή τους

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #11  
Παλιά 27-06-10, 00:06
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

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

Κώδικας:
Private Sub cmdCheckErrors_Click()
    On Error Resume Next
    Dim strSQL As String

    strSQL = "SELECT ΚατανάλωσηΝερού.Ημερομηνία, ΚατανάλωσηΝερού.ΣυνολικήΚατανάλωση INTO "
    strSQL = strSQL & "ΤαξινόμησηΚατάΗμερομηνία FROM ΚατανάλωσηΝερού ORDER BY ΚατανάλωσηΝερού.Ημερομηνία"
    CurrentDb.Execute strSQL

    strSQL = "SELECT ΚατανάλωσηΝερού.Ημερομηνία, ΚατανάλωσηΝερού.ΣυνολικήΚατανάλωση INTO "
    strSQL = strSQL & "ΤαξινόμησηΚατάΣυνολικήΚατανάλωση FROM ΚατανάλωσηΝερού ORDER BY "
     strSQL = strSQL & "ΚατανάλωσηΝερού.ΣυνολικήΚατανάλωση"
    CurrentDb.Execute strSQL

    strSQL = "SELECT ΤαξινόμησηΚατάΗμερομηνία.Ημερομηνία, ΤαξινόμησηΚατάΗμερομηνία.ΣυνολικήΚατανάλωση"
    strSQL = strSQL & " INTO tblResults FROM ΤαξινόμησηΚατάΗμερομηνία INNER JOIN "
    strSQL = strSQL & "ΤαξινόμησηΚατάΣυνολικήΚατανάλωση ON ΤαξινόμησηΚατάΗμερομηνία.Αρίθμηση = "
    strSQL = strSQL & "ΤαξινόμησηΚατάΣυνολικήΚατανάλωση.Αρίθμηση WHERE (((ΤαξινόμησηΚατάΗμερομηνία."
    strSQL = strSQL & "[ΣυνολικήΚατανάλωση)<>ΤαξινόμησηΚατάΣυνολικήΚατανάλωση]![ΣυνολικήΚατανάλωση]))"
    CurrentDb.Execute strSQL
    DoCmd.OpenTable "tblResults"
    DoCmd.DeleteObject acTable, "ΤαξινόμησηΚατάΗμερομηνία"
    DoCmd.DeleteObject acTable, "ΤαξινόμησηΚατάΣυνολικήΚατανάλωση"

End Sub

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

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #12  
Παλιά 27-06-10, 04:37
Το avatar του χρήστη nisgia
Super Moderator
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 12-10-2009
Περιοχή: Ηγουμενίτσα
Μηνύματα: 161
Προεπιλογή

Φίλε Γιώργο, η Microsoft δεν ορίζει τους κανόνες των σχεσιακών βάσεων δεδομένων
αλλά μέσω των εφαρμογών της φροντίζει να τους τους εφαρμόζει.
Το ίδιο οφείλουμε να κάνουμε και εμείς (ως προγραμματιστές εφαρμογών βάσεων δεδομένων).

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

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

Αυτή η επικύρωση θα πρέπει να γίνεται κατά την καταχώρηση της μέτρησης.

Νομίζω πως η πιο σίγουρη λύση της περίπτωσή σου είναι η διόρθωση του πίνακα μετρήσεων
με βάση τα πραγματικά δελτία μετρήσεων (αν υπάρχουν).

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

Φιλικά, Γιάννης.
__________________
Αν δεν το ρωτούσες, δεν θα το μαθαίναμε ποτέ...!
-----------------------------------------------
Τελικά η γνώση, αντίθετα με ό,τι μέχρι σήμερα πίστευα, είναι η φυλακή της σκέψης.
Όταν η αφετηρία είναι η ελεύθερη σκέψη, δεν χρειάζεται πλέον να φτάσεις πουθενά!
Απάντηση με παράθεση
  #13  
Παλιά 27-06-10, 22:11
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Τάσο και Γιάννη, γεια σας

Ευχαριστώ για την ενασχόληση και τη βοήθειά ασς.
Στο χρόνο που μεσολάβησε έψαξα το θέμα της αρίθμησης των γραμμών των ερωτημάτων (στον ιστό) και βρήκα ότι στο πρότυπο 1999 της SQL περιλαμβάνεται ή συνάρτηση ROW_NUMBER(), που κάνει αυτή τη δουλειά.
Στον SQL server 2005 περιλαμβάνεται, αλλά μήπως έχει υλοποιηθεί και στις νέες εκδόσεις της access;
Το αστείο είναι ότι ενώ νόμιζα ότι η αρίθμηση θα μου λύση το πρόβλημα, διαπίστωσα ότι η λύση που έδωσα έχει αδυναμίες (δεν ανιχνεύει όλες τις περιπτώσεις).
Τελικά σκέφτηκα μία άλλη λύση που χρησιμοποιεί υποερωτήματα και τις συγκεντρωτικές συναρτήσεις min() και max().
Είναι πολύ απλή, μάλον όμως αργή αν υπάρχουν πολλές εγγραφές.
Για ενημέρωση επισυνάπτω την αναβαθμισμένη βάση δεδομένων.
Συμφωνώ ότι ο περιορισμός έπρεπε να υλοποιηθεί πριν από την καταχώρηση των στοιχείων. Δεν έγινε. Πάντως με τη νέα υλοποίηση οι ύποπτες εγγραφές θα εντοπιστούν είτε το λάθος είναι στην ημερομηνία είτε στην κατανάλωση και θα διορθωθούν (υπάρχουν στοιχεία). Φυσικά οι νέες καταχωρήσεις δεν αποθηκεύονται αν παραβιάζουν τον περιορισμό.
Φιλικά/Γιώργος
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb ΚατανάλωσηΝερού.mdb (336,0 KB, 7 εμφανίσεις)
Απάντηση με παράθεση
  #14  
Παλιά 28-06-10, 11:49
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Γιώργο καλημέρα!
Δεδομένου του ότι ο έλεγχος τυχόν λαθών πρέπει να γίνει με Access θα σου πρότεινα μια λίγο διαφορετική λύση (βλ.συνημμένο παράδειγμα) με κώδικα VBA όπου μπορεί να προσαρμοστεί πολύ εύκολα αν χρειαστεί.
Ακόμα σου επιτρέπει να επισημάνεις (οπτικά) τα λάθη αλλά και να τα διορθώσεις με τον πιο απλό τρόπο.
Στη φόρμα του συνημμένου αρχείου, πατάς το κουμπί "Εντοπισμός λαθών".
Μπορείς να διορθώσεις τα λάθη που εχουν σημανθει με με κόκκινο και να ξαναπατήσεις
το κουμπί "Εντοπισμός λαθών" για να εκτελέσεις νέο έλεγχο.

Ελπίζω να κατανόησα το πρόβλημα σου!

Φιλικά

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

Τελευταία επεξεργασία από το χρήστη Tasos : 28-06-10 στις 13:29.
Απάντηση με παράθεση
  #15  
Παλιά 28-06-10, 15:44
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Τάσο, Καλησπέρα

Να με συγχωρείς για την ταλαιπωρία.
Τη λύση που προτείνεις τη βρίσκω πολύ καλή και θα προσπαθήσω να την ακολουθήσω.
Χρειάζεται κάποια βελτίωση γιατί δεν εντοπίζει όλες τις ύποπτες εγγραφές.
Συγκεκριμένα οι εγγραφές που παραβιάζουν τον κανόνα (τον διατυπώνω ισοδύναμα αλλά λίγο διαφορετικά ): η ΣυνολικήΚατανάλωση σε κάθε εγγραφή είναι μεγαλύτερη ή ίση από όλες τις ΣυνολικέςΚαταναλώσεις με μικρότερη Ημερομηνία και μικρότερη ή ίση από όλες τις ΣυνολικέςΚαταναλώσεις με μεταγενέστερη Ημερομηνία, είναι 6.
Εκτός της πρώτης όλες οι άλλες είναι ύποπτες (πχ η δεύτερη ΣυνολικήΚατανάλωση=20>18=Συν λικήΚατανάλωση τρίτης).
Διευκρινίζοντας, αν διορθώσουμε μία, οι ύποπτες θα μειωθούν τουλάχιστον κατά μία. Δηλαδή κατά κανόνα οι διορθώσεις θα είναι λιγότερες από τον αριθμό των ύποπτων εγγραφών.

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

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

Το συνημμένο που ανέβασα αποτελεί ένα παράδειγμα και τίποτα παραπάνω.

Όπως προανέφερα, ο κώδικας VBA μπορεί να προσαρμοστεί πολύ εύκολα αν χρειαστεί.

Αρκει να τροποποιήσεις/προσθέσεις τα κριτήρια επικύρωσης ανάμεσα στις γραμμές:
.Edit
και
.Update


πχ.:
Κώδικας:
'.......
 .Edit
DateErr =  Έκφραση1
CounterErr =  Έκφραση2
LastDate = DateField
LastCounter = CounterField
.Update
'........
Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
Απάντηση στο θέμα


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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[Γενικά] Αρίθμηση Φιλτραρισμένων Γραμμών Skakinen Excel - Ερωτήσεις / Απαντήσεις 12 18-10-15 19:46
Αρίθμηση των εγγραφών ερωτήματος kapetang Access samples - Χρήσιμα αρχεία & παραδείγματα 0 01-04-13 19:23
[Excel07] Αυτόματη αρίθμηση μετά από κλικ Διογένης Excel - Ερωτήσεις / Απαντήσεις 8 03-07-12 11:31
Ταξινόμηση Φόρμας μετά από Ενημέρωση Χρήστος Access - Ερωτήσεις / Απαντήσεις 1 11-02-12 15:38
[Excel07] Ταξινόμηση γραμμών στο λογιστικό φύλλο, πως; Miltos100 Excel - Ερωτήσεις / Απαντήσεις 3 02-02-11 23:09


Η ώρα είναι 06:17.