CriteriaControl Ver 1.3

Ένα χρησιμότατο .ΝΕΤ control για την αυτόματη δημιουργία μίας φόρμας καθορισμού κριτηρίων αναζήτησης σε εφαρμογές διαχείρισης Βάσης Δεδομένων. Παρέχει πολλές ιδιότητες διαμόρφωσης των χαρακτηριστικών του. Στην εικόνα, βλέπετε ένα παράδειγμα με καθορισμένα κριτήρια.

 

 

Χρήστος Μουρατίδης, Ιανουάριος 2006

 

Τι νέο υπάρχει στην έκδοση 1.1

Τι νέο υπάρχει στην έκδοση 1.2

Τι νέο υπάρχει στην έκδοση 1.3

 

Αποσυμπιέσετε με ένα πρόγραμμα συμπίεσης πχ. WinZip τα περιεχόμενα του αρχείου CriteriaControl.zip σε κάποιο φάκελο στο δίσκο. Θα δείτε να δημιουργείται ένας φάκελος με όνομα  CriteriaControl Test, ο οποίος περιέχει ένα project δείγματος χρήσης του control 

καθώς και το παρόν readme αρχείο. Το project παρέχει μία υποδειγματική εφαρμογή χρήσης του control με πλούσια επεξηγηματικά σχόλια.

 

Λίγα λόγια για το CriteriaControl Control

Σε αρκετές εφαρμογές, ο προγραμματιστής επιθυμεί να δημιουργεί μία φόρμα όπου θα δίνει τη δυνατότητα στο χρήστη της εφαρμογής του να καθορίζει κάποια κριτήρια αναζήτησης ή επιλογής εγγραφών. Στη συνέχεια, με βάση αυτά,  να ανοίγει  από κάποια Βάση Δεδομένων ένα set εγγραφών μέσω μίας εντολής SELECT της γλώσσας SQL. Ως γνωστόν, στο τμήμα WHERE της εντολής  καθορίζουμε την επιλογή των εγγραφών. 

Το CriteriaControl, λοιπόν, επιστρέφει ένα string που μπορεί να χρησιμοποιηθεί στο τμήμα WHERE  : 

 

Π.χ.   Select  *  From ΜΑΘΗΤΕΣ  where  “ & CriteriaControl1.CriteriaString

 

Όπου π.χ. η  CriteriaString  μπορεί να περιέχει το string ΕΠΩΝΥΜΟ=’ΑΝΤΥΠΑΣAND ΕΤΟΣ_ΓΕΝΝΗΣΗΣ>=1990”

 

ή  “ΕΠΩΝΥΜΟ LIKE ΠΑΠ%  AND ΔΙΕΚΟΨΕ=True AND ΗΜΕΡ_ΕΓΓΡΑΦΗΣ >=#1/1/2002#”
 

Επιπλέον, μπορεί να χρησιμοποιηθεί και στην ιδιότητα RowFilter του DataView :

 

Π.χ.   DataView1.RowFilter =  CriteriaControl1.CriteriaString

 

Οπότε φιλτράρει συγκεκριμένες εγγραφές ενός DataView.

 

Στην έκδοση 1.3 παρέχεται η δυνατότητα να μην εμφανίζεται στα combos κάποιο πεδίο του DataTable. Αυτό γίνεται μέσω της μεθόδου SetFieldVisible ως εξής :

 

Π.χ. CriteriaControl1.SetFieldVisible(“ID”, False)

 

Το πεδίο με όνομα ID δεν θα εμφανίζεται στα combos. Εξ΄ ορισμού εμφανίζονται όλα τα πεδία.

 

To control παρέχει 3 γραμμές κριτηρίων.

Η μόνη απαραίτητη ιδιότητα που χρειάζεται να οριστεί (σε Design ή Run-time mode) είναι η DataTableSource, όπου θέτουμε το DataTable από το οποίο θα πάρει τα πεδία. Αυτομάτως θα αναγνωρίσει τον τύπο τους (αριθμητικό, ημερ/νίας, αλφαριθμητικό, λογικό) και θα κάνει το σωστό validation των εισαγόμενων τιμών. Για τα λογικά πεδία εμφανίζει ένα combobox με δυνατές τιμές Ναι/Όχι.

Το control εμφανίζει τα ονόματα των πεδίων του DataTable. Αν ο προγραμματιστής επιθυμεί να εμφανίζεται, αντί αυτών, μία περιγραφή (caption), τότε μπορεί να χρησιμοποιήσει τη μέθοδο SetCaption.

 

Επίσης, μέσω της  ιδιότητας  CriteriaArrayList επιστρέφεται ένα ArrayList με αντικείμενα τύπου CriteriaArrayListItem. Καθένα από αυτά περιέχει τα στοιχεία καθεμιάς καθορισμένης γραμμής κριτηρίου. (Syndesi, FieldName, Operator, Value). Έτσι, μπορεί να χρησιμοποιηθεί και για άλλους σκοπούς. Να σημειωθεί ότι, η ιδιότητα  CriteriaArrayList μπορεί να καθοριστεί από τον προγραμματιστή μέσω κώδικα, οπότε μόλις ανοίγει η φόρμα που περιέχει το control να γεμίζουν αυτόματα οι γραμμές κριτηρίων.

Δείτε την εφαρμογή επίδειξης που περιέχει αρκετά σχόλια ως τεκμηρίωση.

 

Παρακάτω παρουσιάζονται οι ιδιότητες, μέθοδοι και τα γεγονότα του control :

Ιδιότητες                                 

  

1)    DataTableSource         :ο πίνακας τροφοδότης των πεδίων, τύπου DataTable.

2)    CriteriaString          :Το επιστρεφόμενο CriteriaString που θα χρησιμoποιηθεί στο τμήμα where μίας SQL πρότασης ή

στην ιδιότητα RowFilter ενός DataView.

3)    CriteriaArrayList       :To ArrayList των γραμμών κριτηρίων, με αντικείμενα τύπου CriteriaArrayListItem.

4)    ErrorMsg                :Το μήνυμα λάθους που επιστρέφει το γεγονός ErrorCriteria

5)    SortedCombos            :Να είναι ταξινομημένα τα στοιχεία των combos των πεδίων;

6)    ForeColorLabels         :To ForeColor των ετικετών των γραμμών.

7)    ForeColorFieldCombos    :To ForeColor των combos των πεδίων.

8)    ForeColorOperatorCombos :To ForeColor των combos των τελεστών.

9)    ForeColorValueTextbox   :To ForeColor των textboxes για τις τιμές.

10)ForeColorSyndesiCombos  :To ForeColor των combos των λογικών συνδέσεων (Και/ή)

11)ForeColorButtons        :To ForeColor των buttons (ΟΚ, Ακύρωση, Απαλοιφή).

12)BackColorLabels         :To BackColor των ετικετών των combos.

13)BackColorButtons        :To BackColor των buttons.

14)FontLabels              :To Font των ετικετών των combos.

15)FontFieldCombos         :To Font των combos των πεδίων.

16)FontOperatorCombos      :To Font των combos των τελεστών.

17)FontValueTextbox        :To Font των TextBoxes για τις τιμές.

18)FontSyndesiCombos       :To Font των combos των λογικών συνδέσεων.

19)FontButtons             :To Font των γραμμάτων των buttons.

20)  VisibleBtnCancel        :Θα είναι ορατό το button Cancel;

21)  VisibleBtnΟΚ            :Θα είναι ορατό το button ΟΚ; (νέο στην έκδοση 1.1)

 

Γεγονότα

 

1)    ΟnOKPressed()     : Ενεργοποιείται όταν πατηθεί το OK.

2)    OnCancelPressed() : Ενεργοποιείται όταν πατηθεί το Ακύρωση.

3)    OnClearPressed()  : Ενεργοποιείται όταν πατηθεί το Απαλοιφή.

4)    OnErrorCriteria() : Ενεργοποιείται όταν συμβεί κάποιο λάθος. Τότε η ιδιότητα ErrorMsg θα επιστρέψει το μήνυμα λάθους.

 

Mέθοδοι

 

1) CreateCriteriaStringAndCollection : Αυτή η μέθοδος εξαναγκάζει το control να δημιουργήσει το SQL string καθώς

      και το CriteriaArrayList. Θα τη χρησιμοποιήσετε όταν δεν θέλετε τα κριτήρια να  

                                       δημιουργούνται μέσω του button ΟΚ (μη ορατό) (νέο στην έκδοση 1.1)

2) SetCaption                        : Αλλάζει το caption ενός πεδίου.

3) SetFieldVisible                   : Καθορίζει να εμφανίζεται ή όχι ένα πεδίο στα combos του control (νέο στην έκδοση

                                       1.1)

 

 

  Public Αντικείμενα

 

1)    CriteriaArrayListItem : Ένα αντικείμενο της δομής CriteriaArrayList

 

Παρατηρήσεις

Προσθέστε στο ToolBox της VB.NET το CriteriaControl και χρησιμοποιήστε το ελεύθερα στις εφαρμογές σας. Το assembly αρχείο CriteriaControl.dll

θα το βρείτε στο φάκελο bin.

 

ΠΡΟΒΛΗΜΑ ΜΕ ΤΟ PROJECT ΔΕΙΓΜΑΤΟΣ ΧΡΗΣΗΣ - ΛΥΣΗ.

 

Αν στα References του project δείγματος χρήσης εμφανίζει με κίτρινο θαυμαστικό το criteriacontrol τότε πρέπει να ενημερώσετε το Reference Path του project ώστε να ψάχνει στο φάκελο που έχετε βάλει το dll του control.

 

1) Στο Solution Explorer κάντε δεξί κλικ στο prοject και επιλέξτε Properties.

2) Στο παράθυρο ιδιοτήτων του project που ανοίγει, πηγαίνετε στο τμήμα Common Properties και Reference Path.

3) Δεξιά, πατήστε το browse button (...) για να βρείτε το Folder όπου βρίσκεται το assembly dll του control στον δικό σας υπολογιστή.

4) Πατήστε το button Update. Σώστε το project, κλείστε το και ξανανοίξτε το. Τώρα, πρέπει να εμφανίζονται όλα κανονικά.  

Επικοινωνία

Για οποιεσδήποτε παρατηρήσεις στείλτε e-mail στην παρακάτω διεύθυνση.

 

mouratx@yahoo.com

Χρήστος Μουρατίδης

 

Τι νέο υπάρχει στην έκδοση 1.3

 

·           Πλέον, μπορούμε να καλέσουμε τη νέα μέθοδο SetFieldVisible και να κρύψουμε ή να επανεμφανίσουμε στα combos ένα πεδίο του DataTable.

. Εξ΄ ορισμού εμφανίζονται όλα τα πεδία.

 

Π.χ.   CriteriaControl1.SetFieldVisible(ID”, False)

 

Το πεδίο με όνομα ID δεν θα εμφανίζεται στα combos.

 

·           Διορθώθηκε το πρόβλημα DialogResult που έδινε ΟΚ για το button Απολοιφή.

 

Τι νέο υπάρχει στην έκδοση 1.2

 

·           Πλέον, μπορούμε να θέσουμε στην ιδιότητα DataTableSource = Nothing όπου προκαλεί τον μηδενισμό των combos (δηλ. δεν εμφανίζονται τα πεδία του DataTable). Θα πρέπει να ξαναθέσουμε  την ιδιότητα  για να το κάνουμε πάλι λειτουργικό.

 

·           Μερικές βελτιώσεις στον κώδικα.

Τι νέο υπάρχει στην έκδοση 1.1

 

*      Προστέθηκε η ιδιότητα VisibleBtnΟΚ,  η οποία καθορίζει αν θα είναι ορατό το button ΟΚ. Πλέον, το button OK μπορεί να μην είναι ορατό και τα κριτήρια να δημιουργούνται μέσω της νέας μεθόδου CreateCriteriaStringAndCollection.

 

*      Προστέθηκε η public μέθοδος CreateCriteriaStringAndCollection η οποία εξαναγκάζει το control να δημιουργήσει το SQL string καθώς και το CriteriaArrayList. Θα τη χρησιμοποιήσετε όταν δεν θέλετε τα κριτήρια να δημιουργούνται μέσω του button ΟΚ (μη ορατό)