Εμφάνιση ενός μόνο μηνύματος
  #22  
Παλιά 08-07-10, 21:19
Το avatar του χρήστη nisgia
nisgia Ο χρήστης nisgia δεν είναι συνδεδεμένος
Super Moderator
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 12-10-2009
Περιοχή: Ηγουμενίτσα
Μηνύματα: 161
Προεπιλογή

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

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

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

Φυσικά στο απλοϊκό παράδειγμα που επισυνάπτω χρησιμοποιώ πολύ λίγα ονόματα
(8 και μόνο ανδρικά) αλλά αναρωτιέμαι πως θα τα πάει με 800+ ή τα 1710;
(1695 για την ακρίβεια διότι τα 15 είναι διπλά )

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

Τέλος, επιλέγω με έναν όρο TOP PERCENT από το παραπάνω αποτέλεσμα τον αριθμό
των εγγραφών που προκύπτει από τη σχέση n*(συχνότητα ονόματος)
και τις προσαρτώ σε έναν πίνακα ονόματι tblSamble.

Όπου n ο συνολικός αριθμός του τελικού δείγματος.

Παράδειγμα: Δείγμα με 1000 ονόματα.

Αν για παράδειγμα το όνομα Γιώργος έχει συχνότητα 20%
επιλέγουμε το "Γιώργος" 1000 φορές και από αυτές επιλέγουμε το 20% (200)
και τις προσαρτούμε στον πίνακα δείγματος συνεχίζοντας την ίδια διαδικασία
με όλα τα διαθέσιμα ονόματα ξεχωριστά.

Αυτά με τη θεωρία. Τα υπόλοιπα στο συνημμένο αρχείο.

OffTopic:

@kapetang
Να' σαι καλά φίλε Γιώργο! Η ευχαρίστηση δική μου!
Όσο για τις ημερομηνίες, καλύτερα να τις αντιμετωπίζουμε ως έχουν:
Ως σειριακούς αριθμούς.

Όταν ξεφεύγεις απ' την επαναληπτικότητα του ημερολογίου, όχι μόνο
οι συναρτήσεις, αλλά ακόμη και η ίδια σου η κοσμοθεωρία βελτιώνεται!

@schizo
Φίλε Μάριε, μην στενοχωριέσαι ποτέ με τις παρατηρήσεις.
Ακόμη και οι άδικες, αν δεν είναι κακόβουλες, σου βγαίνουν πάντα σε καλό.

Να 'στε όλοι καλά και σας ευχαριστώ που επιμένετε να "καίγεστε"
στο ms-office.gr καλοκαιριάτικα!

Γιάννης

Υ.Γ.
Όσον αφορά τις ημερομηνίες, θα ήθελα να πως πως σε κάποιο κομμάτι της "SelectRandomNames"
του "RandomNames2" φάνηκα και εγώ αρκετά φλύαρος με τις παρακάτω εκφρασεις:
Κώδικας:
...
lngLDate = DateSerial(Year(Date) - intUAge, Month(Date), Day(Date))
lngUDate = DateSerial(Year(Date) - intLAge, Month(Date), Day(Date))
...
Προφανώς είχα κάψει το τσερβέλο με τα RecordSets και μου διέφυγε
η πολύ χρήσιμη συνάρτηση DateAdd().

Με την DateAdd() λοιπόν, οι παραπάνω εκφράσεις γίνονται:
Κώδικας:
...
lngLDate = DateAdd("yyyy",-intUAge,Date)
lngUDate = DateAdd("yyyy",-intLAge,Date)
...
Συνημμένα Αρχεία
Τύπος Αρχείου: zip NameFrequency.zip (42,1 KB, 10 εμφανίσεις)
__________________
Αν δεν το ρωτούσες, δεν θα το μαθαίναμε ποτέ...!
-----------------------------------------------
Τελικά η γνώση, αντίθετα με ό,τι μέχρι σήμερα πίστευα, είναι η φυλακή της σκέψης.
Όταν η αφετηρία είναι η ελεύθερη σκέψη, δεν χρειάζεται πλέον να φτάσεις πουθενά!

Τελευταία επεξεργασία από το χρήστη nisgia : 08-07-10 στις 22:14.
Απάντηση με παράθεση