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

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #11  
Παλιά 01-07-10, 19:06
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Την είδα και τη βρίσκω καλή.
Σχετικά με τα ονόματα, αν εμφάνιζες τους πίνακες με τα ονόματα το φύλο και τις συχνότητές τους στον πληθυσμό, ίσως κάποιος θα σου έδινε τη λύση που ακριβώς θέλεις.
Απάντηση με παράθεση
  #12  
Παλιά 01-07-10, 19:22
Όνομα: Μάριος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 07-07-2009
Μηνύματα: 18
Προεπιλογή

Προσπάθησα να φτιάξω κάτι που να λαμβάνει υπ' όψη τη συχνότητα εμφάνισης των ονομάτων.
Για την ακρίβεια πήρα τη λύση που έδω σε ο nisgia και... έκανα κάτι που:
1) Δείχνει να δουλεύει χωρίς όριο εγγραφών
2) Λαμβάνει υπ' όψη τη συχνότητα εμφάνισης των ονομάτων
3) Είναι εξαιρετικά αργό (κακό αυτό)
4) Δεν έχει ίχνος error trapping (πολύ κακό αυτό)
5) Δεν ξεχωρίζει ανδρικα-γυναικεία ονόματα (έβαλα μόνο αντρικά με σχετικά σωστά ποσοστά)
6) Είχε πλάκα -χάρηκα με τον τρόπο που σκέφτηκα ώστε να πετύχω το (2)-

ΥΓ. Το αρχείο και ο κώδικας που ανεβάζω εδώ είναι τελικά εντελώς διαφορετικά σε σχέση με τη λύση που έδωσε ο nisgia (του οποίου ο κώδικας είναι πολύ πιο σωστός -σε θέματα ποιότητας- από το δικό μου).
Συνημμένα Αρχεία
Τύπος Αρχείου: zip RandomNames.zip (20,9 KB, 6 εμφανίσεις)

Τελευταία επεξεργασία από το χρήστη schizo : 01-07-10 στις 19:56. Αιτία: Προσθήκη υστερόγραφου
Απάντηση με παράθεση
  #13  
Παλιά 02-07-10, 18:54
Όνομα: Μυστήριος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 22-10-2009
Περιοχή: Αθήνα
Μηνύματα: 23
Προεπιλογή

Φίλε Kapetang

δεν έχω την κατανομή των ονομάτων στον πληθυσμό. Ήταν απλά μια ιδέα που μου ήρθε και χαίρομαι που έδωσε έναυσμα στον schizo του οποίου κοιτάω τώρα την υλοποίηση.
Έχω μόνο τον πίνακα των ονομάτων και την κατηγοριοποίηση ανά φύλο. Αν θέλετε τον ποστάρω.
Απάντηση με παράθεση
  #14  
Παλιά 04-07-10, 10:19
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλημέρα
Γιάννη (mistirios) ανέβασε τον πίνακα των ονομάτων, που έχεις.
Θα ήταν χρήσιμος, αφού, όσοι ασχολούνται με το πρόβλημα, αναγκάζονται να δημιουργήσουν το δικό τους με πολύ λιγότερες εγγραφές.
Αυτό ίσως έχει και ένα κόστος, θα χαθεί λίγο από το μυστήριό σου!
Φιλικά/Γιώργος
Απάντηση με παράθεση
  #15  
Παλιά 04-07-10, 14:26
Όνομα: Μυστήριος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 22-10-2009
Περιοχή: Αθήνα
Μηνύματα: 23
Προεπιλογή

Συνονόματε Γιώργο μη με κάνεις Γιάννη.
Ιδού ο πίνακας με τα ονόματα.
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb greeknames.mdb (216,0 KB, 14 εμφανίσεις)
Απάντηση με παράθεση
  #16  
Παλιά 05-07-10, 14:48
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα

Στη βάση δεδομένων, που επισυνάπτω, δίνω μια λύση στο πρόβλημα δημιουργίας δειγμάτων τυχαίων ονομάτων και ημερομηνιών, που έβαλε ο Γιώργος (mistirios), χρησιμοποιώντας τον πίνακα ονομάτων που ανέβασε.

1. Η πρώτη λύση που σκέφτηκα, για το δείγμα (δ) των ονομάτων, ήταν να δημιουργείται ένας τυχαίος ακέραιος, στο διάστημα 1 έως πλήθος εγγραφών (π) του πίνακα ονομάτων και στη συνέχεια να επιλέγεται η εγγραφή που είναι σ' αυτή τη θέση.
Δεν την ακολούθησα επειδή είναι αργή και αφήνει έξω εγγραφές και στην περίπτωση που δ>π.
Χρησιμοποίησα ένα αποθηκευμένο ερώτημα, το οποίο επιλέγει όλες τις εγγραφές του πίνακα ονομάτων και στη συνέχεια τις ταξινομεί (ανακατεύει) κατά τυχαίο τρόπο.
Από αυτό το σύνολο λαμβάνονται όλες ή μέρος των εγγραφών, ανάλαγα με το μέγεθος του δείγματος.

2. Για τη δημιουργία δείγματος τυχαίων ημερομηνιών, κάθε τμήμα της (έτος, μήνας, μέρα) παράγεται τυχαία. Οι παραγόμενες ημερομηνίες είναι έγκυρες (λαμβάνεται υπόψη ο αριθμός των ημερών κάθε μήνα, ακόμα και αν το έτος είναι δίσεκτο), ώστε αν αποθηκευθούν σε ένα πεδίο Date να μη προκαλείται λάθος.

3. Για την περίπτωση, που πρέπει να λαμβάνεται υπόψη και η συχνότητα των ονομάτων (πιθανότητα), σκέφτηκα κάποια λύση (δημιουργία βοηθητικού πίνακα, όπου ο λόγος του αριθμού εμφάνισης κάποιου ονόματος θα εκφράζει τη συχνότητά του στον πληθυσμό), δεν την επεξεργάστηκα γιατί έχει κάποιες αδυναμίες. Ίσως ο Μάριος (schizo), που ασχολήθηκε με το θέμα να έχει μια καλύτερη λύση.

Φιλικά/Γιώργος

ΥΓ .Φίλε Γιώργο να με συγχωρείς που σε ξαναβάφτισα. Έπρεπε να είμαι πιο προσεκτικός, αφού το πρόβλημά μας σχετίζεται με ονόματα.
Δεν έβαλα τις ηλικίες επειδή έχουμε και άλλες ημερομηνίες άσχετες (εισαγωγή, εξαγωγή υλικών, κλπ).
Είδα τα ονόματα στον πίνακα. Φανταστικά. Ξέθαψες και τους αρχαίους. Είναι μυστήριο πως τα συγκέντρωσες.
Συνημμένα Αρχεία
Τύπος Αρχείου: zip RandomNamesAndDates.zip (150,3 KB, 6 εμφανίσεις)
Απάντηση με παράθεση
  #17  
Παλιά 06-07-10, 03:17
Το avatar του χρήστη nisgia
Super Moderator
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 12-10-2009
Περιοχή: Ηγουμενίτσα
Μηνύματα: 161
Προεπιλογή

Καλησπέρα στη παρέα!

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

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

Συνεπώς, μια συνάρτηση σαν την παρακάτω κάνει αρκετά καλά αυτή τη δουλειά:

Κώδικας:
Function RandomDate(ByVal dtmLDate As Date, _
        Optional ByVal dtmUDate As Date) As Date
    
    If dtmUDate = 0 Then
        dtmUDate = Now
    End If

    Randomize
    RandomDate = CDate((Rnd() * (dtmUDate - (dtmLDate))) + dtmLDate)
End Function
Το όρισμα dtmLDate είναι η μικρότερη στη χρονική περίοδο ημερομηνία
ενώ το όρισμα dtmUDate (προαιρετικό) αντιστοιχεί στη μεγαλύτερη.
Tip:
Αν περάσεις τη συνάρτηση Date() στο όρισμα dtmLDate, θα έχεις μια τυχαία ώρα
από τα μεσάνυχτα μέχρι τώρα.

@mistirios
Φίλε Γιώργο, πρώτα απ' όλα, να σε ευχαριστήσω για το πολύτιμο αρχείο που μας έδωσες!
Νομίζω πως του αξίζει μια θέση στα "Χρήσιμα αρχεία".
Thank's a lot!

Ο "κόφτης" που λες, ήταν εκεί για να μην γίνει υπερβολικά πολύπλοκο το ερώτημα
και διαμαρτυρηθεί ο μεταγλωττιστής της SQL.

Όσο για το φύλο των ονομάτων έχεις δίκιο! Ήταν πολύ απλοϊκό το Like "*ς"
αλλά για τις ανάγκες των δοκιμών μου έκανε δουλειά.
Στην συνέχεια βρήκα το Like "!ιίς" για τα ανδρικά και το Not Like "!ιίς" για τα γυναικεία
τα οποία δούλευαν πολύ καλά μέχρι που σήμερα είδα πως το Άδωνις καταλήγει σε "ις".

Εσύ αλήθεια, πως αντιστοίχησες το φύλο σε κάθε όνομα;

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

Φιλικά, Γιάννης.
Συνημμένα Αρχεία
Τύπος Αρχείου: zip RandomNames2.zip (56,3 KB, 9 εμφανίσεις)
__________________
Αν δεν το ρωτούσες, δεν θα το μαθαίναμε ποτέ...!
-----------------------------------------------
Τελικά η γνώση, αντίθετα με ό,τι μέχρι σήμερα πίστευα, είναι η φυλακή της σκέψης.
Όταν η αφετηρία είναι η ελεύθερη σκέψη, δεν χρειάζεται πλέον να φτάσεις πουθενά!
Απάντηση με παράθεση
  #18  
Παλιά 07-07-10, 18:09
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

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

Κάποιες σκέψεις για την περίπτωση, που στη δειγματοληψία, λάβουμε υπόψη και τη συχνότητα του ονόματος στον πληθυσμό.
1. Υποτίθεται ότι στον πίνακα με τα ονόματα (tblNames) υπάρχει στήλη (sixnotita) με τη συχνότητα (%) κάθε ονόματος.
Επειδή η δειγματοληψία περιορίζεται στον πίνακα (tblNames) το άθροισμα των τιμών στη στήλη (sixnotita) είναι 100.
2. Πρέπει να δημιουργήσουμε ένα πίνακα (tblKlirotida), ο οποίος θα περιέχει όλες τις εγγραφές του (tblNames), σε αναλογία ίση με την (sixnotita), από τον οποίο θα λαμβάνεται το τυχαίο δείγμα.
3. Το πλήθος των γραμμών (κ) του (tblKlirotida) εξαρτάται από την ακρίβεια της συχνότητας. Για παράδειγμα αν εκφράζεται με δύο δεκαδικά (5,69) απαιτούνται 10.000 εγγραφές (100/0,01). Άν υπάρχει όνομα με συχνότητα 0,001, για να εκπροσωπηθεί στον (tblKlirotida) πρέπει να έχει 100.000! εγγραφές.
4. γινόμενο της (sixnotita) με το πλήθος των γραμμών (π) διά 100 (σ) , θεωρητικά είναι ακέραιος, αλλά καλό είναι να χρησιμοποιείται στρογγυλοποίηση με την Round, μας δίνει το πλήθος των επαναλήψεων κάθε ονόματος στον (tblKlirotida).
5. Αφού δημιουργηθεί ο (tblKlirotida) τον ταξινομούμε τυχαία και λαμβάνουμε το δείγμα.

Στο ίδιο σκεπτικό βασίζεται και η ακόλουθη λύση.
Αντί να δημιουργήσουμε τον πίνακα (tblKlirotida) , χωρίζουμε τους ακέραιους από το 1 έως π, σε τόσα διαστήματα όσες είναι οι εγγραφές του (tblNames) και έτσι ώστε κάθε διάστημα να περιέχει ένα αριθμό ακεραίων (σ), προσδιοριζόμενο σύμφωνα με την παράγραφο 4.
Αυτό μπορεί να γίνει με ένα array f(i)=j , του οποίου ο δείκτης θα παίρνει τιμές από το 1 έως π, ενώ το j από 1 έως το πλήθος των γραμμών του (tblNames). Για παράδειγμα στο πρώτο διάστημα ο δείκτης θα παίρνει τιμές 1 έως σ1 και το J=1, στο δεύτερο σ1+1 έως σ1+σ2 και j=2 κλπ.
Στη συνέχεια δημιουργούμε ένα τυχαίο ακέραιο από 1 έως π, έστω n, και επιλέγουμε τη γραμμή f(n) του (tblNames) για το δείγμα.
Ελπίζω να μη υπάρχει καμιά πατάτα στους παραπάνω συλλογισμούς, να τους διατύπωσα κατανοητά και να βρεθεί κάποιος φίλος να τους υλοποιήσει για να φανεί αν είναι εφικτοί.

Φιλικά/Γιώργος
Υ.Γ Φίλε Γιάννη ευχαριστώ για τον εύκολο τρόπο, που υπέδειξες, δημιουργίας τυχαίων ημερομηνιών. Ο κουτσοβλέβαρος, αν και κουτσός, με παίδεψε πολύ, παραλίγο να γράψω κώδικα προσδιορισμού των δίσεκτων. Σε ευχαριστώ και για τον υποδειγματικό κώδικα και τα πειραχτήρια τις φατσούλες.
Απάντηση με παράθεση
  #19  
Παλιά 08-07-10, 10:18
Όνομα: Μυστήριος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 22-10-2009
Περιοχή: Αθήνα
Μηνύματα: 23
Προεπιλογή

Καλημέρα ξανά από μένα.

Χαίρομαι που έδωσα έναυσμα για σκέψη και δημιουργικότητα.
Δυστυχώς είμαι πολύ πηγμένος τελευταία και δεν βρίσκω χρόνο να εμβαθύνω στις λύσεις σας. Πάντως η αρχική λύση από τον schizo δεν αναπαράγει σωστά τις συχνότητες στο νέο τυχαίο δείγμα.

Όσο για τον πίνακα με τα ονόματα, τα μάζεψα από διάφορες λίστες στο δίκτυο, και αφού αφαίρεσα διπλοεγγραφές ή άλλα περιττά πέρασα το φύλο με το χέρι: στο excel για μεγαλύτερη ταχύτητα όπου το όνομα ήταν ανδρικό έβαζα δίπλα "1" και στα γυναικεία "2". Δεν ήταν δουλειά ευχάριστη αλλά δεν πήρε και πάνω από τρεις ώρες μαζεμένες. Μετα αντικατέστησα ομαδικά το 1 με ΑΝΔΡΑΣ και το 2 με ΓΥΝΑΙΚΑ.

Αρχικός μου σκοπός είναι να φτιάξω μια εφαρμογή παραγωγης τυχαίων στοιχείων (ονομάτων, ημερομηνιών) που μας απασχολεί ήδη, αλλά και επαγγελμάτων, πόλεων, τηλεφώνων κλπ. Παράλληλα μαζεύω στοιχεία και φτιάχνω τις αντίστοιχες λίστες από όπου θα επιλέγονται τυχαία δείγματα.
Απάντηση με παράθεση
  #20  
Παλιά 08-07-10, 10:56
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Συνονόματε Καλημέρα
Ξαναδές τη λίστα των ονομάτων, έχω την εντύπωση ότι παριέχει κάποιες διπλοεγγραφές, αν θυμάμαι καλά περίπου 15.
Απάντηση με παράθεση
Απάντηση στο θέμα


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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[Συναρτήσεις] πως βρίσκουμε από συγκεκριμένο πίνακα αριθμό ή γράμμα που απουσιάζει geronik Excel - Ερωτήσεις / Απαντήσεις 11 01-12-14 20:36
[ Ασφάλεια] Κλείδωμα μετά από συγκεκριμένο αριθμό χρήσεων parara Access - Ερωτήσεις / Απαντήσεις 0 31-12-12 13:06
[Γενικά] Εμφάνιση δεδομένων των στηλών που περιέχουν συγκεκριμένο αριθμό στην τελευταία γραμμή Lefteris Excel - Ερωτήσεις / Απαντήσεις 20 23-10-12 18:44
[ Πίνακες ] Διόρθωση εγγραφών σε συγκεκριμένο πεδίο marpapa Access - Ερωτήσεις / Απαντήσεις 10 15-05-12 20:58


Η ώρα είναι 20:28.