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

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 09-07-10, 16:22
Όνομα: Μυστήριος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 22-10-2009
Περιοχή: Αθήνα
Μηνύματα: 23
Προεπιλογή

Γουάου, το θέμα έχει πάρει φωτιά!

Φίλε schizo χαίρομαι που επανήλθες με εξηγήσεις και νέα αντιμετώπιση και μου άρεσε πολύ και το εφέ που πρόσθεσες! (η μπάρα).

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

Να ξέρετε επίσης ότι έχω και άλλους πίνακες με πολλά στοιχεία οπότε ετοιμαστείτε!
Απάντηση με παράθεση
  #2  
Παλιά 09-07-10, 20:29
Το avatar του χρήστη nisgia
Super Moderator
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 12-10-2009
Περιοχή: Ηγουμενίτσα
Μηνύματα: 161
Προεπιλογή

Καλησπέρα στα κομάντα του ms-office!

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

Την πιο μεγάλη ευθύνη στο θέμα της ταχύτητας πάντως, τη φέρει η έκφραση:
Κώδικας:
...
If pithanotita >= Rnd Then
...
Σκεφτείτε το.
Το μεγαλύτερο ποσοστό του πίνακα ονομάτων είναι αυτό του Γιώργου(0,1221).
Όμως η Rnd() επιστρέφει μια τιμή μεταξύ 0 και 1.
Φανταστείτε λοιπόν πόσες "λούπες" πάνε χαμένες..!

(Δοκίμασα την προσθήκη 10000 ονομάτων και ...μ' έστειλε για τσιγάρο!)

Η λύση σε αυτό είναι να αναγκαστεί η Rnd() κάθε φορά να επιστρέφει
μια τιμή μεταξύ 0 και 0,1221.

Αν έχετε ακόμη όρεξη, αντικαταστήστε την cmdAppendNames_Click() με αυτή:
Κώδικας:
Private Sub cmdAppendNames_Click()
    Dim i As Long
    Dim lngAsked As Long
    Dim strSQL As String
    Dim sngMaxFreq As Single

    i = 0
    lngAsked = CLng(Me.txtNamesCount)

    If lngAsked Then
        With CurrentDb.TableDefs("tblNames").OpenRecordset(4)
            If .RecordCount Then
                DoCmd.Hourglass True
                SysCmd acSysCmdInitMeter, "Append names...", lngAsked
                .MoveLast
                mintCount = .RecordCount
                .FindFirst ("[pososto] < 1")
                sngMaxFreq = !pososto

                strSQL = "INSERT INTO tblRandomOnomata (onoma) SELECT """

                Do While i < lngAsked
                    Randomize
                    .FindFirst ("[onomaID] = " & Int((mintCount * Rnd) + 1))
                    If !pososto >= (Rnd * sngMaxFreq) Then
                        CurrentDb.Execute strSQL & !onoma & """ AS onoma;"
                        i = i + 1
                        SysCmd acSysCmdUpdateMeter, i
                    End If
                Loop
            End If
            DoCmd.Hourglass False
            SysCmd acSysCmdRemoveMeter
        End With
    End If
End Sub
Περιττό να σας πώ πως θα εκπλαγείτε από το αποτέλεσμα όσον αφορά την ταχύτητα
αλλά έχω την εντύπωση πως βελτιώθηκε και λίγο η απόκλιση.

Οφείλω όμως να σου ζητήσω συγγνώμη Μάριε που αφαίρεσα την progress bar.
Το αισθητικό αποτέλεσμα ήταν τέλειο αλλά η progress bar της Access
είναι ταχύτερη και στην ταχύτητα πονάει λίγο η διαδικασία.
(Εδώ που τα λέμε θα μπορούσε να βελτιωθεί πολύ και διαδικασία ενημέρωσης αλλά...)

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

Παράθεση:
Αρχική Δημοσίευση από mistirios Εμφάνιση μηνυμάτων
Να ξέρετε επίσης ότι έχω και άλλους πίνακες με πολλά στοιχεία οπότε ετοιμαστείτε!
Μην μένεις στις απειλές Γιώργο! Δώσε πράμα!!!
Δε μασάμε εμείς...!
__________________
Αν δεν το ρωτούσες, δεν θα το μαθαίναμε ποτέ...!
-----------------------------------------------
Τελικά η γνώση, αντίθετα με ό,τι μέχρι σήμερα πίστευα, είναι η φυλακή της σκέψης.
Όταν η αφετηρία είναι η ελεύθερη σκέψη, δεν χρειάζεται πλέον να φτάσεις πουθενά!
Απάντηση με παράθεση
  #3  
Παλιά 09-07-10, 20:48
Το avatar του χρήστη nisgia
Super Moderator
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 12-10-2009
Περιοχή: Ηγουμενίτσα
Μηνύματα: 161
Προεπιλογή Εύρεση διπλοεγγραφών

Παράθεση:
Αρχική Δημοσίευση από mistirios Εμφάνιση μηνυμάτων
Θέλω να μου πείτε για τις διπλοεγγραφές τι είδους ήταν γιατί ένα ερώτημα που έτρεξα δεν βρήκε.
Οι διπλοεγγραφές Γιώργο είναι 15 και θα τις βρεις με το ερώτημα:
Κώδικας:
SELECT fldName, Count(fldName) AS CountOffldName
FROM tblNames
GROUP BY fldName
HAVING (((Count(fldName)))>1);
(Προσάρμοσε τα ονόματα σε αυτά του πίνακά σου)

Και μια σχετική και πολύ χρήσιμη (όπως αρχικά φαίνεται) σελίδα:
Ελληνικά Ονόματα Ελλήνων και Ελληνίδων, Στατιστική Συχνότητα

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

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

Προκειμένου να δοκιμαστούν τα προγράμματα που δημιούργησε η παρέα, σε πραγματικές συνθήκες, χρησιμοποίησα ένα πίνακα 1693 διαφορετικών ονομάτων.
Οι συχνότητες (πιθανότητες) των ονομάτων είναι τυχαίες και έχουν άθροισμα 1 (100%).
1. Το RandomNamesMarios2.mdb είναι το πρόγραμμα που δημιούργησε ο Μάριος. Λειτουργεί κανονικά, αλλά είναι αργό.
2. Το RandomNamesMarios3.mdb (επισυνάπτεται) είναι το πρόγραμμα του Μάριου, όπως τροποποιήθηκε από το Γιάννη. Έχει βελτιωθεί στην ταχύτητα και λειτουργεί κανονικά.
3. Το NameFrequency.mdb (δεν επισυνάπτεται) είναι το πρόγραμμα του Γιάννη. Είναι ταχύτατο αλλά σε πραγματικές συνθήκες εμφανίζει λάθος χρόνου εκτέλεσης. Επίσης και με τον πίνακα των περιορισμένων ονομάτων αν ζητήσουμε μικρό δείγμα, πχ 12 εγγραφών θα δημιουργήσει δείγμα των 17 εγγραφών.
Στα παραπάνω προγράμματα οι αλγόριθμοι είναι πρωτότυποι, ευφυείς και λογικοί, αλλά δημιουργούν και κάποιες υπόνοιες για την ορθότητά τους.
4. Στο RandomNamesGorge.mdb (επισυνάπτεται) , προκειμένου να γίνει σύγκριση με τα προηγούμενα, χρησιμοποιώ μια κλασική μέθοδο δειγματοληψίας. Δημιουργείται μια κληρωτίδα ονομάτων, στην οποία η αναλογία κάθε ονόματος (πλήθος εμφάνισης προς συνολικό πλήθος) ισούται με την πιθανότητα του ονόματος και ακολούθως λαμβάνεται τυχαία το δείγμα.
Χρησιμοποιεί μια τροποποίηση του περιβάλλοντος χρήστη και του μαγικού (σφαιράτου) κώδικα του Γιάννη.
Φαίνεται να λειτουργεί καλά, αλλά χρειάζεται να δοκιμαστεί.
Συμπέρασμα: Στο ζόρικο πρόβλημα που έβαλε ο Γιώργος (mistirios); έγινε σημαντική δουλειά, αλλά, κατά τη γνώμη μου, δεν παρουσιάστηκε ακόμα η άριστη λύση.
Φιλικά/Γιώργος
Συνημμένα Αρχεία
Τύπος Αρχείου: zip RandomNamesMarios3.zip (61,2 KB, 9 εμφανίσεις)
Τύπος Αρχείου: zip NameFrequencyGeorge.zip (417,2 KB, 8 εμφανίσεις)
Απάντηση με παράθεση
Απάντηση στο θέμα


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

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα 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


Η ώρα είναι 10:48.