Εμφάνιση ενός μόνο μηνύματος
  #5  
Παλιά 26-02-10, 15:20
Το avatar του χρήστη Tasos
Tasos Ο χρήστης Tasos δεν είναι συνδεδεμένος
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Καλημέρα σε όλους!

Αγαπητέ Δημήτρη, καλωσόρισες στην παρέα μας!

Η δημιουργία τυχαίων αριθμών με όριο, επιτυνχάνεται είτε με SQL (βλ. το παράδειγμα του Τόλη), είτε με τη χρήση του αντικειμένου "Scripting.Dictionary" από τη βιβλιοθήκη Scripting Object - "scrrun.dll" (αν χρειαστεί, το βρίσκουμε εδώ: VBE> Tools> References > Microsoft Scripting Runtime).
Το αντικείμενο αυτό δεν επιτρέπει διπλοεγγραφές στους πίνακες (Array) που δημιουργεί. Αυτή ακριβώς την ιδιότητα χρησιμοποιούμε για να δημιουργήσουμε έναν πίνακα με μοναδικές τυχαίες τιμές που κατόπιν θα περαστούν στο κατάλληλο πεδίο στον πίνακα της βάσης.
Από πλευράς απόδοσης, το "Scripting.Dictionary" είναι ταχύτατο.

Δείτε ένα παράδειγμα κώδικα.
Ο κώδικας προϋποθέτει ένα πεδίο με το όνομα "LotNr".

Option Compare Database
Option Explicit

Private Sub cmdRandomize_Click()
Dim i%, RecCount%, fld As DAO.Field, TheKeys As Variant
With CurrentDb.OpenRecordset(Me.RecordSource, dbOpenDynaset)
If .RecordCount Then .MoveLast: .MoveFirst
RecCount = .RecordCount
Set fld = .Fields("LotNr")
On Error Resume Next
With CreateObject("Scripting.Dictionary")
While .Count < RecCount
.Add Int((RecCount * Rnd) + 1), 0
Wend
TheKeys = .Keys
End With
If Err Then Err.Clear: On Error GoTo 0
For i = 0 To RecCount - 1
.Edit
fld = TheKeys(i)
.Update
.MoveNext
Next
.Close
End With
Me.Refresh
End Sub
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών

Τελευταία επεξεργασία από το χρήστη Tasos : 26-02-10 στις 18:41.
Απάντηση με παράθεση