Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Μέθοδος υλοποίησης "OR-filter"

Îåêßíçóå áðü ôï ìÝëïò papageor. Τελευταία δημοσίευση από το μέλος georgiop στις 06-09-2004, 10:25. Υπάρχουν 1 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  03-08-2004, 13:49 140

    Lightning [li] Μέθοδος υλοποίησης "OR-filter"

      Ένα χαρακτηριστικό γνώρισμα του Navision, είναι το γεγονός ότι τόσο σε επίπεδο προγραμματισμού όσο και σε επίπεδο χρήστη απουσιάζει η δυνατότητα χρήσης φίλτρων των οποίων τα πεδία σχετίζονται με Λογικό-OR.
       Στο κείμενο που ακολουθεί παρουσιάζεται αναλυτικά μία μέθοδος, η οποία μας επιτρέπει να δημιουργήσουμε φίλτρα αυτής της κατηγορίας. Πρωτού προχωρήσουμε στην παρουσίαση της συγκεκριμένης μεθόδου θεωρούμε ότι έχουμε έναν πίνακα Employee,ο οποίος έχει ως πεδία τα Νο,Name,Country.Επίσης, θεωρούμε ότι έχουμε και την μεταβλητή RecEmployee η οποία αντιστοιχεί στον παραπάνω πίνακα.
       Αυτό που επιθυμούμε να δημιουργήσουμε είναι να εφαρμόσουμε στον παραπάνω πίνακα το φίλτρο:
                       Name='George' OR Country='Greece'
    Στη συνέχεια ακολουθεί ο τρόπος υλοποίησης του παραπάνω φίλτρου:

    WITH RecEmployee DO BEGIN

      //Εφαρμόζουμε αρχικά το φίλτρο στο πεδίο Name 
      SETCURRENTKEY("Name");
      SETRANGE("Name", 'George');
      // Μαρκάρουμε τις σχετιζόμενες εγγραφές
      IF FIND('-') THEN
        REPEAT
          MARK(TRUE);
        UNTIL NEXT = 0;
      // Αφαιρούμε το φίλτρο
      SETRANGE("Name");

      // Ομοίως για το πεδίο Country
      SETCURRENTKEY("Country");
      SETRANGE("Country",'Greece');
      IF FIND('-') THEN
        REPEAT
          IF NOT MARK THEN
            MARK(TRUE);
        UNTIL NEXT = 0;
      SETRANGE("Country");

       //Χρησιμοποιούμε το PrimaryKey για να πάρουμε όλες 
       //τις μαρκαρισμένες εγγραφές. Θεωρούμε ότι στη 
       //συγκεκριμένη περίπτωση είναι το "Νο"             

      SETCURRENTKEY("Νο");
      MARKEDONLY(TRUE);
    END;

    Στη συνέχεια την RecEmployee μπορούμε να την χρησιμοποιήσουμε σε οποιαδήποτε φόρμα, report  η οτιδήποτε άλλο.







    Γεώργιος Παπαγεωργίου
    Software Engineer
    Fortune Technologies SA
  •  06-09-2004, 10:25 172 σε απάντηση της 140

    Re: Μέθοδος υλοποίησης "OR-filter"

    Πολύ χρήσιμη τακτική. Σε κάποιες περιπτώσεις μπορεί να είναι πρόβλημα το ότι τέτοιου είδους φιλτράρισμα δεν μπορεί να κρυφτεί από τον τελικό χρήστη (π.χ. με FILTERGROUP := 2)
    Μια διαφορετική προσέγγιση είναι η τροποποίηση των OnFindRecord και OnNextRecord του Form έτσι ώστε να αγνοούν όσα records δεν πληρούν τις απαιτήσεις του σύνθετου φίλτρου.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems