| Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
![]() |
| | Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
|
#11
| |||
| |||
|
Την είδα και τη βρίσκω καλή. Σχετικά με τα ονόματα, αν εμφάνιζες τους πίνακες με τα ονόματα το φύλο και τις συχνότητές τους στον πληθυσμό, ίσως κάποιος θα σου έδινε τη λύση που ακριβώς θέλεις. |
|
#12
| |||
| |||
|
Προσπάθησα να φτιάξω κάτι που να λαμβάνει υπ' όψη τη συχνότητα εμφάνισης των ονομάτων. Για την ακρίβεια πήρα τη λύση που έδω σε ο nisgia και... έκανα κάτι που: 1) Δείχνει να δουλεύει χωρίς όριο εγγραφών 2) Λαμβάνει υπ' όψη τη συχνότητα εμφάνισης των ονομάτων 3) Είναι εξαιρετικά αργό (κακό αυτό) 4) Δεν έχει ίχνος error trapping (πολύ κακό αυτό) 5) Δεν ξεχωρίζει ανδρικα-γυναικεία ονόματα (έβαλα μόνο αντρικά με σχετικά σωστά ποσοστά) 6) Είχε πλάκα -χάρηκα με τον τρόπο που σκέφτηκα ώστε να πετύχω το (2)- ΥΓ. Το αρχείο και ο κώδικας που ανεβάζω εδώ είναι τελικά εντελώς διαφορετικά σε σχέση με τη λύση που έδωσε ο nisgia (του οποίου ο κώδικας είναι πολύ πιο σωστός -σε θέματα ποιότητας- από το δικό μου). Τελευταία επεξεργασία από το χρήστη schizo : 01-07-10 στις 19:56. Αιτία: Προσθήκη υστερόγραφου |
|
#13
| |||
| |||
|
Φίλε Kapetang δεν έχω την κατανομή των ονομάτων στον πληθυσμό. Ήταν απλά μια ιδέα που μου ήρθε και χαίρομαι που έδωσε έναυσμα στον schizo του οποίου κοιτάω τώρα την υλοποίηση. Έχω μόνο τον πίνακα των ονομάτων και την κατηγοριοποίηση ανά φύλο. Αν θέλετε τον ποστάρω. |
|
#14
| |||
| |||
|
Καλημέρα Γιάννη (mistirios) ανέβασε τον πίνακα των ονομάτων, που έχεις. Θα ήταν χρήσιμος, αφού, όσοι ασχολούνται με το πρόβλημα, αναγκάζονται να δημιουργήσουν το δικό τους με πολύ λιγότερες εγγραφές. Αυτό ίσως έχει και ένα κόστος, θα χαθεί λίγο από το μυστήριό σου! Φιλικά/Γιώργος |
|
#15
| |||
| |||
|
Συνονόματε Γιώργο μη με κάνεις Γιάννη. Ιδού ο πίνακας με τα ονόματα. |
|
#16
| |||
| |||
|
Καλησπέρα Στη βάση δεδομένων, που επισυνάπτω, δίνω μια λύση στο πρόβλημα δημιουργίας δειγμάτων τυχαίων ονομάτων και ημερομηνιών, που έβαλε ο Γιώργος (mistirios), χρησιμοποιώντας τον πίνακα ονομάτων που ανέβασε. 1. Η πρώτη λύση που σκέφτηκα, για το δείγμα (δ) των ονομάτων, ήταν να δημιουργείται ένας τυχαίος ακέραιος, στο διάστημα 1 έως πλήθος εγγραφών (π) του πίνακα ονομάτων και στη συνέχεια να επιλέγεται η εγγραφή που είναι σ' αυτή τη θέση. Δεν την ακολούθησα επειδή είναι αργή και αφήνει έξω εγγραφές και στην περίπτωση που δ>π. Χρησιμοποίησα ένα αποθηκευμένο ερώτημα, το οποίο επιλέγει όλες τις εγγραφές του πίνακα ονομάτων και στη συνέχεια τις ταξινομεί (ανακατεύει) κατά τυχαίο τρόπο. Από αυτό το σύνολο λαμβάνονται όλες ή μέρος των εγγραφών, ανάλαγα με το μέγεθος του δείγματος. 2. Για τη δημιουργία δείγματος τυχαίων ημερομηνιών, κάθε τμήμα της (έτος, μήνας, μέρα) παράγεται τυχαία. Οι παραγόμενες ημερομηνίες είναι έγκυρες (λαμβάνεται υπόψη ο αριθμός των ημερών κάθε μήνα, ακόμα και αν το έτος είναι δίσεκτο), ώστε αν αποθηκευθούν σε ένα πεδίο Date να μη προκαλείται λάθος. 3. Για την περίπτωση, που πρέπει να λαμβάνεται υπόψη και η συχνότητα των ονομάτων (πιθανότητα), σκέφτηκα κάποια λύση (δημιουργία βοηθητικού πίνακα, όπου ο λόγος του αριθμού εμφάνισης κάποιου ονόματος θα εκφράζει τη συχνότητά του στον πληθυσμό), δεν την επεξεργάστηκα γιατί έχει κάποιες αδυναμίες. Ίσως ο Μάριος (schizo), που ασχολήθηκε με το θέμα να έχει μια καλύτερη λύση. Φιλικά/Γιώργος ΥΓ .Φίλε Γιώργο να με συγχωρείς που σε ξαναβάφτισα. Έπρεπε να είμαι πιο προσεκτικός, αφού το πρόβλημά μας σχετίζεται με ονόματα. Δεν έβαλα τις ηλικίες επειδή έχουμε και άλλες ημερομηνίες άσχετες (εισαγωγή, εξαγωγή υλικών, κλπ). Είδα τα ονόματα στον πίνακα. Φανταστικά. Ξέθαψες και τους αρχαίους. Είναι μυστήριο πως τα συγκέντρωσες. |
|
#17
| ||||
| ||||
|
Καλησπέρα στη παρέα! Φίλε Γιώργο (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
ενώ το όρισμα dtmUDate (προαιρετικό) αντιστοιχεί στη μεγαλύτερη. Tip: Αν περάσεις τη συνάρτηση Date() στο όρισμα dtmLDate, θα έχεις μια τυχαία ώρα από τα μεσάνυχτα μέχρι τώρα. ![]() @mistirios Φίλε Γιώργο, πρώτα απ' όλα, να σε ευχαριστήσω για το πολύτιμο αρχείο που μας έδωσες! Νομίζω πως του αξίζει μια θέση στα "Χρήσιμα αρχεία". Thank's a lot! Ο "κόφτης" που λες, ήταν εκεί για να μην γίνει υπερβολικά πολύπλοκο το ερώτημα και διαμαρτυρηθεί ο μεταγλωττιστής της SQL. ![]() Όσο για το φύλο των ονομάτων έχεις δίκιο! Ήταν πολύ απλοϊκό το Like "*ς" αλλά για τις ανάγκες των δοκιμών μου έκανε δουλειά. ![]() Στην συνέχεια βρήκα το Like "!ιίς" για τα ανδρικά και το Not Like "!ιίς" για τα γυναικεία τα οποία δούλευαν πολύ καλά μέχρι που σήμερα είδα πως το Άδωνις καταλήγει σε "ις". ![]() Εσύ αλήθεια, πως αντιστοίχησες το φύλο σε κάθε όνομα; ![]() Η σημερινή μου προσέγγιση πάντως δουλεύει με αριθμητικές τιμές για τα φύλα οπότε κοιμάμαι ήσυχος. ![]() Εκτός αυτού, αντιστοιχίζει και μια τυχαία ημερομηνία γέννησης σε επιλεγμένο όνομα. Όσο για την συχνότητα των ονομάτων, δεν ασχολήθηκα καθόλου και το άφησα για "αύριο". Εξετάστε τη και αν βρείτε κάτι ενδιαφέρον ή κάποιο πρόβλημα, τα ξαναλέμε. Φιλικά, Γιάννης.
__________________ Αν δεν το ρωτούσες, δεν θα το μαθαίναμε ποτέ...! ![]() ----------------------------------------------- Τελικά η γνώση, αντίθετα με ό,τι μέχρι σήμερα πίστευα, είναι η φυλακή της σκέψης. Όταν η αφετηρία είναι η ελεύθερη σκέψη, δεν χρειάζεται πλέον να φτάσεις πουθενά! |
|
#18
| |||
| |||
|
Καλησπέρα στην παρέα Κάποιες σκέψεις για την περίπτωση, που στη δειγματοληψία, λάβουμε υπόψη και τη συχνότητα του ονόματος στον πληθυσμό. 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
| |||
| |||
|
Καλημέρα ξανά από μένα. Χαίρομαι που έδωσα έναυσμα για σκέψη και δημιουργικότητα. Δυστυχώς είμαι πολύ πηγμένος τελευταία και δεν βρίσκω χρόνο να εμβαθύνω στις λύσεις σας. Πάντως η αρχική λύση από τον schizo δεν αναπαράγει σωστά τις συχνότητες στο νέο τυχαίο δείγμα. Όσο για τον πίνακα με τα ονόματα, τα μάζεψα από διάφορες λίστες στο δίκτυο, και αφού αφαίρεσα διπλοεγγραφές ή άλλα περιττά πέρασα το φύλο με το χέρι: στο excel για μεγαλύτερη ταχύτητα όπου το όνομα ήταν ανδρικό έβαζα δίπλα "1" και στα γυναικεία "2". Δεν ήταν δουλειά ευχάριστη αλλά δεν πήρε και πάνω από τρεις ώρες μαζεμένες. Μετα αντικατέστησα ομαδικά το 1 με ΑΝΔΡΑΣ και το 2 με ΓΥΝΑΙΚΑ. Αρχικός μου σκοπός είναι να φτιάξω μια εφαρμογή παραγωγης τυχαίων στοιχείων (ονομάτων, ημερομηνιών) που μας απασχολεί ήδη, αλλά και επαγγελμάτων, πόλεων, τηλεφώνων κλπ. Παράλληλα μαζεύω στοιχεία και φτιάχνω τις αντίστοιχες λίστες από όπου θα επιλέγονται τυχαία δείγματα. |
|
#20
| |||
| |||
|
Συνονόματε Καλημέρα Ξαναδές τη λίστα των ονομάτων, έχω την εντύπωση ότι παριέχει κάποιες διπλοεγγραφές, αν θυμάμαι καλά περίπου 15. |
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| Εργαλεία Θεμάτων | |
| Τρόποι εμφάνισης | |
| |
| ||||
| Θέμα | Δημιουργός | 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 |
Η ώρα είναι 22:03.










Αλλαγή σε γραμμικό τρόπο

