---
title: "Report Designer"
canonical: "https://wiki.soft1.eu/space/ATEL/182091948/Report%20Designer"
format: markdown
---
Import – Export εκτυπώσεων  Διαδικασία Export  Διαδικασία Import  Εκτέλεση σχεδιαζόμενων εκτυπώσεων  Hints & Tricks – Παραδείγματα  Παράμετροι από διαφορετικά tables (ιδίου band)  Ορισμός ενός πεδίου εκ μεταφοράς  Εισαγωγή Ο Unisoft Report Designer είναι ένα reporting tool ενσωματωμένο στην εφαρμογή Atlantis, το οποίο έχει σκοπό την παραγωγή σχεδιαζόμενων reports, τόσο από το σύμβουλο εγκατάστασης της εφαρμογής όσο και από τους key users. Ο σχεδιαστής του εργαλείου αυτού θα πρέπει να: Έχει γνώση της δομής και των αντικειμένων της βάσης (πχ tables, views) Έχει γνώσεις SQL To αποτέλεσμα ενός Report Designer παρουσιάζεται ομαδοποιημένο και τα στοιχεία κάθε ομάδας σε προκαθορισμένες στήλες. Σχεδιασμός εκτυπώσεων Για το σχεδιασμό μιας εκτύπωσης, διαλέγουμε μέσω των μενού της εφαρμογής, την εξής διαδρομή: Reporting tools \ Design \ Advanced reports. Κάθε εκτύπωση που δημιουργείται ανήκει σε μία  Γενική Κατηγορία  όπως Πελάτες, Προμηθευτές, Αξιόγραφα, Τραπεζικοί Λογαριασμοί, Λογιστική, Αποθήκη, Πάγια, Πωλήσεις, Αγορές, Πωλητές/Εισπράκτορες, Προδιαγραφές, Υπηρεσίες, Παραστατικά κτλ. Επιπλέον, κάθε μία Γενική Κατηγορία περιλαμβάνει ειδικότερες κατηγορίες, στις οποίες μπορούν να ομαδοποιηθούν οι σχεδιαζόμενες εκτυπώσεις. Στο παράδειγμα της διπλανής οθόνης, η εκτύπωση ανήκει στη Γενική Κατηγορία των πελατών, ενώ έχει επιλεγεί η ειδικότερη κατηγορία με το όνομα «Category 1». Οι ονομασίες των ειδικών κατηγοριών δύνανται να τροποποιηθούν από το χρήστη από το πλήκτρο  Κατηγορίες  στην μπάρα του Report designer. Οι παράμετροι των εκτυπώσεων ανά γενική κατηγορία φαίνονται πατώντας το πλήκτρο  Παράμετροι  στην μπάρα του Report designer. Οι ίδιες παράμετροι μπορούν να χρησιμοποιηθούν σε περισσότερες από μία εκτυπώσεις της ίδιας γενικής κατηγορίας αποφεύγοντας έτσι την ανάγκη επαναδημιουργίας τους για κάθε σχεδιαζόμενη εκτύπωση. Για τις παραμέτρους γίνεται αναλυτικότερη αναφορά παρακάτω. Με διπλό κλικ στη περιγραφή της εκτύπωσης εμφανίζονται τα παράθυρα δημιουργίας του report.                                          κάντε κλικ για μεγέθυνση Επιλογές εκτύπωσης  Υπάρχουν διαθέσιμες συγκεκριμένες θέσεις εκτυπώσεων ανά Γενική κατηγορία και κατηγορία. Ο χρήστης επιλέγει τη θέση της εκτύπωσης που θα δημιουργήσει ανά κατηγορία εκτύπωσης.                                          κάντε κλικ για μεγέθυνση Δομή εκτύπωσης Μία εκτύπωση αποτελείται από τα εξής μέρη: Γενικά Στοιχεία:  επικεφαλίδες, παραμέτρους, user-defined ταξινομήσεις, totals. Bands : ουσιαστικά είναι τα queries του report. To Βand1 είναι το master query ενώ τα Band2 έως Band9 αποτελούν Details αυτού. Πρέπει να οριστεί τουλάχιστον το master band, ενώ είναι δυνατό να οριστούν από κανένα και μέχρι οκτώ (8) detail bands. Advanced:  όπου μπορούν να οριστούν extra queries, τα οποία εκτελούνται σε συγκεκριμένες χρονικές στιγμές σε σχέση με τα αποτελέσματα συγκεκριμένων bands. Βήματα σχεδιασμού εκτύπωσης Τα βασικά βήματα που πρέπει κανείς να ακολουθήσει προκειμένου να σχεδιάσει μία νέα εκτύπωση είναι τα εξής: Να επιλέξει τη θέση της εκτύπωσης από τις διαθέσιμές ανά κατηγορία. Να ορίσει το Band1 (master) υποχρεωτικά. Να ορίσει με τη σειρά ένα ή περισσότερα από τα Band2 - Band9 (details), προαιρετικά. Nα ορίσει ποια πεδία θέλει να φαίνονται κατά την ώρα εκτέλεσης του report, υποχρεωτικά. Να ορίσει τις παραμέτρους της εκτύπωσης, προαιρετικά. Nα ορίσει ποια πεδία ο χρήστης θα μπορεί να επιλέξει προς ταξινόμηση κατά την ώρα εκτέλεσης του report, προαιρετικά. Να ορίσει σε ποια πεδία ο χρήστης θα μπορεί να εφαρμόσει σύνολα κατά την ώρα εκτέλεσης του report, προαιρετικά. Ορίζοντας Bands Η προσθήκη δυνατότητας Drill Down σε σχεδιαζόμενες εκτυπώσεις (Advanced Reports) στο Atlantis διατίθεται   από  την  έκδοση 2.1.2614.1  και έπειτα. Τόσο στο master όσο και στα detail bands ορίζονται οι ομάδες και τα πεδία της εκτύπωσης υπό την μορφή SQL statements. Ισχύουν όλοι οι κανόνες και παρέχονται όλες οι δυνατότητες που ισχύουν στην SQL. Περαιτέρω, ισχύουν τα εξής: Θα πρέπει να χρησιμοποιούνται alias names για τα ονόματα των πινάκων. Αν ένα table χρησιμοποιείται σε περισσότερα του ενός bands, θα πρέπει να δίνονται διαφορετικά alias names σε κάθε band, ώστε το πρόγραμμα να μπορεί να τα ξεχωρίσει. Θα πρέπει να χρησιμοποιούνται alias names στο query statement για κάθε επιστρεφόμενο πεδίο. Δεν είναι λάθος πάντως αν δεν βάλει ο χρήστης, εκτός φυσικά από την περίπτωση που το ίδιο το query επιστρέφει δύο στήλες με το ίδιο όνομα, οπότε και θα δημιουργηθεί oracle error. Αν η εκτύπωση έχει παραμέτρους θα πρέπει να οριστούν στο πεδίο  Key  της κάθε band, τα alias names των tables τα οποία περιέχονται στα αντίστοιχα Master SQL queries. Τα πολλαπλά alias names στο πεδίο Key διαχωρίζονται με ελληνικό ερωτηματικό. Μετά τον ορισμό αυτό και κατά την εκτέλεση του report γίνεται η αναγνώριση και η συσχέτιση της κάθε παραμέτρου με το αντίστοιχο πεδίο του σωστού band. Όλα τα πεδία που επιθυμεί ο χρήστης να εμφανίζονται στο report θα πρέπει να δηλωθούν στην ενότητα  Πεδία  όπως φαίνεται στη παραπάνω εικόνα. Το όνομά τους θα πρέπει να είναι ακριβώς το ίδιο με αυτό το οποίο έχει χρησιμοποιηθεί στο query του band. Μέσω του πλήκτρου «Υπολογισμός πεδίων βάσει SQL»   παρέχεται η δυνατότητα αυτόματης εισαγωγής όλων των πεδίων που επιστρέφονται από τα queries των Band. Τέλος στα «Πεδία» δηλώνονται (αν επιθυμείτε) να εμφανίζονται ως στήλες και τα  Report   Values  που ορίζονται στο advanced κομμάτι του report και τα οποία θα δούμε σε παρακάτω παράγραφο. Κατά την εκτέλεση, το πρόγραμμα γεμίζει σειριακά κάθε band. Δηλαδή, πρώτα θα γεμίσει το band1, μετά το band2, μετά το band3 κ.ο.κ. Έτσι όταν ο χρήστης βρίσκεται σε ένα Band μπορεί να αναφερθεί μόνο στα πεδία των προηγούμενων bands και όχι σε αυτά των επόμενων. Αν ο χρήστης επιθυμεί να εμφανίζονται όλα τα master records ασχέτως αν υπάρχουν details ή όχι, θα πρέπει να επιλέξει το πεδίο  Show   all   records . Διαφορετικά στο report θα εμφανιστούν μόνον οι εγγραφές εκείνες για τις οποίες υπάρχουν details. H ιδιότητα αυτή ισχύει γενικά μεταξύ των bands. Εκτός από το Where clause, μπορεί να εφαρμοστεί κάποιο condition για μία μπάντα καθορίζοντας τη στη θέση  Filter   Condition . Η δυνατότητα αυτή φτιάχτηκε για να μπορούν να περιοριστούν κυρίως προοδευτικά πεδία. Γενικά πάντως ενδείκνυται να περιορίζεται το return set από συνθήκες στο Where clause του band. Στην σύνταξή της μπορούν να χρησιμοποιηθούν οι αριθμητικοί τελεστές >, <, >=, <=, <>, +, -, *, /, οι λογικοί τελεστές ΑΝD, OR, XOR καθώς και η χρήση των @(Βand n.πεδίο ), @(VAL. όνομα μεταβλητής ), @(PRM .όνομα παραμέτρου ) οι οποίες περιγράφονται σε παρακάτω παραγράφους. Όταν χρησιμοποιούνται οι λογικοί τελεστές θα πρέπει κάθε συνθήκη στο πεδίο Filter Condition να περικλείεται σε παρενθέσεις. Μπορούν να χρησιμοποιηθούν όλες οι γενικές μεταβλητές του Atlantis. Μερικές από αυτές αναλύνονται στο διπλανό πίνακα. Στη περίπτωση που θελήσετε να ενεργοποιήσετε τη δυνατότητα drill down της εκτύπωσης, θα πρέπει να ορίσετε το όνομα του πεδίου, που θα περάσει ως παράμετρος στη φόρμα του Atlantis η οποία θα κληθεί. Το στοιχείο αυτό πρέπει να οριστεί στο πεδίο  Πεδίο διασύνδεσης . Το πεδίο θα πρέπει να υπάρχει στα πεδία του master query, έστω και αν δεν θέλουμε να εμφανίζεται στην εκτύπωση. Επίσης, για την ενεργοποίηση της δυνατότητας drill down θα πρέπει να ορίσετε το όνομα της φόρμας του Atlantis η οποία θα κληθεί στο πεδίο  Ενότητα διασύνδεσης .                                          κάντε κλικ για μεγέθυνση Γενική Μεταβλητή Σημασία @COMPANYID Κωδικός εταιρείας @ BRANCHID Υποκατάστημα με το οποίο έχει γίνει login @USERID Χρήστης με τον οποίο έχει γίνει login @LOGINDATE Ημερομηνία με την οποία έχει γίνει login @FYEID Το έτος (χρήση) της login ημερομηνίας @FIPID Η περίοδος της login ημερομηνίας Band Joins To join μεταξύ δύο bands γίνεται με την αναφορά του πεδίου της άλλης Band ως εξής:  @(ΒAND n.ΌνομαΠεδίου ) .  Προσοχή: Προσοχή, joins γίνονται μόνο με πεδία από προηγούμενες bands και όχι με επόμενες! H σύνταξη @(BANDn.bandfieldname) είναι η μόνη από τις @(BAND…), @(PRM…), @(VAL..) που μπορεί να χρησιμοποιηθεί μέσα στο query μίας μπάντας. Custom where clause ($W, $w) Εκτός από το σύνηθες where των sql statements, δίνεται η δυνατότητα να οριστεί παραμετρικά το where clause σε οποιαδήποτε band. Συγκεκριμένα βάζοντας τους χαρακτήρες: $W  μπορεί να αντικατασταθεί ολόκληρο το Where clause από το query. Είναι σαν να γράφετε 'Where \[συνθήκη παραμέτρου 1\] ΑΝD \[συνθήκη παραμέτρου 2\] ΑΝD \[συνθήκη παραμέτρου 3\] κτλ, όπου παράμετροι έχουν οριστεί και έχουν επιλεγεί για το συγκεκριμένο report στο tab Γενικά. $w  προσθέτει στο query 'AND' συνθήκες βάσει των παραμέτρων που έχουν οριστεί για το συγκεκριμένο report. Είναι σαν να γράφετε 'ΑΝD \[συνθήκη παραμέτρου 1\] ΑΝD \[συνθήκη παραμέτρου 2\] ΑΝD \[συνθήκη παραμέτρου 3\] κτλ. Μπορεί να μπει σε οποιοδήποτε σημείο μέσα στο where clause, αρκεί να έχει νόημα η σύνταξή του. (πχ. And ((sbs.fipid=0)or(1=1 $w)) για να δηλωθεί ότι η επιθυμητή περίοδος είναι είτε 0, είτε να ισχύουν οι παράμετροι που έχουν τεθεί. Custom order clause ($O, $o) Εκτός από το σύνηθες Order των sql statements, δίνεται στον χρήστη η δυνατότητα να ορίσει παραμετρικά το Order clause σε οποιαδήποτε band. Συγκεκριμένα, βάζοντας τους +Αγγλικούς+ χαρακτήρες: $O  αντικαθίσταται ολόκληρο το Οrder Βy clause. Είναι σαν να γράφετε: Order By \[πεδίο ταξινόμησης 1\], \[πεδίο ταξινόμησης 2\], \[πεδίο ταξινόμησης 3\] κτλ, όπου τα πεδία ταξινόμησης έχουν οριστεί και έχουν επιλεγεί για το συγκεκριμένο report στο tab Γενικά. Aν η ταξινόμηση είναι αύξουσα ή φθίνουσα ορίζεται από το χρήστη στην εκτέλεση του report κατά την επιλογή των πεδίων ταξινόμησης. $ο  +στο τέλος+ του υφιστάμενου order by clause, προσθέτει πεδία τα ταξινόμησης που έχουν οριστεί για το report. Είναι σαν να γράφουμε ' , \[πεδίο ταξινόμησης 1\], \[πεδίο ταξινόμησης 2\], \[πεδίο ταξινόμησης 3\] κτλ. Πεδία Band  Όπως αναφέρθηκε προηγουμένως τα πεδία που επιθυμεί ο χρήστης να εμφανίζονται στο report θα πρέπει να δηλωθούν στην ενότητα  Πεδία  για κάθε band. Με τη χρήση των πλήκτρων   μπορούν να προστεθούν πεδία ή να αφαιρεθούν ήδη υπάρχοντα. Με τη χρήση των πλήκτρων   και   μπορεί να καθοριστεί η σειρά εμφάνισης των πεδίων. Στο σημείο αυτό δηλαδή ο σχεδιαστής προσδιορίζει τα διαθέσιμα προς τον τελικό χρήστη της εκτύπωσης πεδία. Βέβαια ο τελικός χρήστης κατά την εκτέλεση του report όπως σε όλες τις εκτυπώσεις της εφαρμογής μπορεί να αλλάξει ορισμένα από αυτά τα χαρακτηριστικά, όπως να επιλέξει αν τελικά θα εμφανιστούν όλα τα διαθέσιμα πεδία ή όχι καθώς και τη σειρά εμφάνισης των πεδίων. Ο χρήστης με διπλό κλικ σε κάθε ένα από τα πεδία (ή από το πλήκτρο   που εμφανίζεται στα δεξιά τους) μπορεί να προσδιορίσει διάφορα επιπλέον χαρακτηριστικά τους. Ονομασία Εισάγετε το όνομα (ή alias αν υπάρχει) του πεδίου όπως αυτό δίνεται στο query του Band. Περιγραφή Εισάγετε τη περιγραφή του πεδίου στα Ελληνικά. Visible Επιλέγετε εφόσον επιθυμείτε το πεδίο να εμφανίζεται στην εκτύπωση. Η επιλογή είναι προεπιλεγμένη. Μήκος Εισάγετε το προεπιλεγμένο μήκος εμφάνισης του πεδίου (μπορεί να αλλαχτεί από το τελικό χρήστη της εκτύπωσης).  Τύπος πεδίου Επιλέγετε το τύπο του πεδίου. Για numeric πεδία, ο τύπος μπορεί να είναι Απλός, Άθροισμα, ή Προοδευτικός. Αν είναι άθροισμα, τότε στο τέλος του της μπάντας εμφανίζεται το άθροισμα των τιμών του πεδίου. Αν είναι προοδευτικός, τότε εμφανίζει σε κάθε record το προοδευτικό άθροισμα του πεδίου. Alignment Επιλέγετε τη στοίχιση των δεδομένων που εμφανίζονται στο πεδίο. Δεκαδικά Επιλέγετε το τύπο των δεκαδικών που εμφανίζονται κατά την εκτύπωση του πεδίου. Οι διαθέσιμές επιλογές είναι: Τίποτα Αξιών Τιμών Ποσοστών Ποσοτήτων Το πλήθος των δεκαδικών που θα εμφανιστεί κάθε φορά είναι το ίδιο με αυτό που υπάρχει στις γενικές παραμέτρους του Atlantis. Αν επιθυμείτε να αλλάξετε το πλήθος αυτό για τις ανάγκες της εκτύπωσης το πληκτρολογείτε. Το πλήθος των δεκαδικών μπορεί να αλλαχθεί από το τελικό χρήστη κατά τη λήψη της εκτύπωσης. Από μεταφορά Αν το πεδίο αντιπροσωπεύει ένα πεδίο εκ μεταφοράς, τότε μπορείτε να του δώσετε μία αρχική τιμή. Αυτή μπορεί να δοθεί πχ. Ως @(VAL. όνομα report   value ), όπου report value είναι το όνομα που δίνετε για το αποτέλεσμα ενός πεδίου που υπολογίζεται στο advanced μέρος που θα δούμε παρακάτω. (βλ παράγραφο 7) Formula   Type Επιλέγετε το τύπο της φόρμουλας υπολογισμού ανάλογα με τη φύση του πεδίου. Διαθέσιμες τιμές είναι: DataSet  εφόσον το πεδίο είναι πεδίο της βάσης, ή εφόσον αναφέρεται στο band query Sql   Statement  εφόσον το πεδίο είναι το επιστρεφόμενο αποτέλεσμα ενός sql statement Stored   Procedure  αν το πεδίο είναι το επιστρεφόμενο αποτέλεσμα μιας DB stored procedure Variable  εφόσον το πεδίο είναι το επιστρεφόμενο αποτέλεσμα μιας μεταβλητής του report που ορίζεται στο «Advanced» μέρος του, είτε εφόσον πρόκειται για την τιμή μιας παραμέτρου. Formula Ανάλογα το formula type προσδιορίζετε το περιεχόμενό της φόρμουλας υπολογισμού. Συγκεκριμένα: DataSet,  δεν πληκτρολογούμε τίποτα Sql   Statement,  πληκτρολογείτε το sql statement, το οποίο επιστρέφει μόνο 1 στήλη Variable,  πληκτρολογείτε  @(VAL. όνομα report   value )  πχ @(VAL.COUNTRYCODE) για μεταβλητές του report, είτε  @(PRM. όνομα παραμέτρου )  πχ.@(PRM.MYPARAM) για παραμέτρους. Stored   Procedure,  δίνετε τα προσδιοριστικά της stored procedure της βάσης, η οποία επιστρέφει μόνο  μία  out παράμετρο. Συγκεκριμένα, εισάγετε: Name, To όνομα της stored procedure όπως είναι δηλωμένο στη βάση InNames, Τα ονόματα των ΙΝ παραμέτρων της stored procedure, διαχωριζόμενα με ερωτηματικό ελληνικό OutNames, Τo όνομα της OUT παραμέτρου της stored procedure. InParams, Οι τιμές που αντιστοιχούν στα ΙnNames. Εδώ μπορούν να χρησιμοποιηθούν τα εξής @(BANDn.όνομα πεδίου) @(VAL.όνομα report value) @(PRM.όνομα παραμέτρου του report) @(CON.η τιμή μίας σταθερής) Η σύνταξη @(CON…) χρησιμοποιείται όταν θέλουμε να περάσουμε ως παράμετρο στην stored procedure μία καρφωτή σταθερή τιμή, είτε αυτή είναι αριθμός, αλφαριθμητικό, ημερομηνία κτλ. Όλες οι ΙΝ παράμετροι που δηλώνονται με την σύνταξη @(CON…) για τις stored procedures είναι τύπου string. Αυτό σημαίνει ότι και η αντίστοιχες ΙΝ παράμετροι στην stored procedure θα πρέπει να είναι τύπου VARCHAR2 και να γίνεται το type convert εσωτερικά στο body της stored procedure. Παράμετροι Οι παράμετροι προστίθενται δυναμικά ($w) στο "where clause" του report ή το αντικαθιστούν εξ ολοκλήρου ($W) και για να λειτουργήσουν σωστά θα πρέπει να ακολουθηθούν τα εξής βήματα: Ορίζετε την παράμετρο πατώντας το κουμπί "Παράμετροι" (Βλ. παραπάνω εικόνα). Ελέγχετε ότι έχει οριστεί το Key σε κάθε Band. Ελέγχετε ότι στο query του Band έχετε κάνει select το πεδίο που αφορά η παράμετρος. Δηλώνεται ότι το report χρησιμοποιεί κάποιες από τις παραμέτρους στο tab Γενικά Στοιχεία του report. Παραθέστε τα ονόματά τους, το ένα κάτω από το άλλο χωρίς κόμμα. Η σειρά δήλωσής τους είναι και η σειρά εμφάνισής τους κατά την ώρα της εισαγωγής των παραμέτρων. Ονομασία Εισάγετε το όνομα της παραμέτρου στα Αγγλικά. Περιγραφή Εισάγετε τη περιγραφή της παραμέτρου. Τύπος Επιλέγετε το τύπο του πεδίου. Διαθέσιμες επιλογές: String Integer Float Date SmallInt Memo Query   field Εισάγετε το όνομα του πεδίου εκείνου το οποίο έχει οριστεί στο query ενός band. Προσοχή: Θα πρέπει να δίνεται με το alias name του πίνακα στον οποίο ανήκει, το οποίο θα πρέπει να έχει ήδη οριστεί το πεδίο Key της αντίστοιχης μπάντας, ώστε να μπορεί να συσχετιστεί η παράμετρος με πεδίο από το σωστό band. Query   Condition Επιλέγετε τη συνθήκη που θα εφαρμοστεί για το πεδίο-παράμετρος κατά την ώρα της εκτέλεσης. Διαθέσιμες επιλογές προς το παρόν είναι οι ακόλουθες: Query Condition Σημασία Mask or Equal Εφαρμόζεται μάσκα με * για τα πεδία τύπου string Greater (>=) Μεγαλύτερο ή ίσο Less(<=) Μικρότερο ή ίσο Not Equal Διάφορο από Include Περιλαμβάνει (είναι ο τελεστής ΙΝ ) Not Include Δεν περιλαμβάνει (είναι ο τελεστής ΝΟΤ ΙΝ) Παράμετρος ελεύθερης χρήσης Δηλώνει ότι η παράμετρος δεν έχει σχέση με τα «Master SQL» ή «Detail SQL» queries συγκεκριμένου advanced report αλλά αποτελεί γενική παράμετρο η οποία μπορεί να χρησιμοποιηθεί σε διάφορα σημεία στα παραπάνω queries.  Εφόσον επιθυμείτε η παράμετρος ελεύθερης χρήσης να λαμβάνει τιμές από το χρήστη κατά την εκτέλεση του report, μπορεί να προστεθεί στις παραμέτρους σε κάθε advanced report. Στη περίπτωση όμως που η τιμή της ελεύθερης παραμέτρου είναι προκαθορισμένη (βλέπε παρακάτω «Τιμή παραμέτρου») δεν πρέπει να περιλαμβάνεται στις παραμέτρους του advanced report.  Επιπλέον, κατά την εκτέλεση του advanced report, εφόσον η ελεύθερη παράμετρος περιλαμβάνεται στις παραμέτρους του report, ελέγχεται από την εφαρμογή ως  υποχρεωτική . Η κλήση της ελεύθερης παραμέτρου στα queries γίνεται ως εξής: @ParamName. Παράδειγμα κλήσης της παραμέτρου ελεύθερης χρήσης «MATERIALCODE» δίνεται στο παρακάτω query:  select sc.ID, sc.CODE, (select DESCR from ITEMCATEGORY where CODEID=sc.zICTID) ERPCategoryDescr, sc.INSERTDATE,sc.STARTDATE,sc.ENDDATE,  from SRVCONTRACT sc inner join SRVCONITEMS sci on sci.CRTID=sc.ID inner join MATERIAL m on m.ID=sci.ITEID and m.COMID=sc.COMID where sc.COMID=1 AND m.CODE = @MATERIALCODE $w $O Τιμή παραμέτρου Αναφέρεται στη παράμετρο ελεύθερης χρήσης και μπορεί να πάρει τιμές οι οποίες αντικαθιστούν τη παράμετρο σε όποιο σημείο και αν υπάρχει στα queries του report. Οι τιμές μπορεί να είναι είτε σταθερές (π.χ. 1, 3, 'CLOSED',…) είτε να καθοριστούν από τις γενικές μεταβλητές του Atlantis.Παράδειγμα ορισμού τιμής παραμέτρου ελεύθερης χρήσης με γενική μεταβλητή Atlantis φαίνεται στη διπλανή οθόνη. Παράδειγμα χρήσης σε advanced report query της συγκεκριμένης παραμέτρου (LogDate) ελεύθερης χρήσης δίνεται παρακάτω: select sc.ID, sc.CODE, (select DESCR from ITEMCATEGORY where CODEID=sc.zICTID) ERPCategoryDescr, sc.INSERTDATE,sc.STARTDATE,sc.ENDDATE,  from SRVCONTRACT sc inner join SRVCONITEMS sci on sci.CRTID=sc.ID inner join MATERIAL m on m.ID=sci.ITEID and m.COMID=sc.COMID where sc.COMID=1 and sc.ENDDATE>=convert(datetime, @LogDate ,3)  and sc.ENDDATE<=(convert(datetime, @LogDate ,3)+30)  $w order by sc.ENDDATE  $o Στο συγκεκριμένο παράδειγμα advanced report εμφανίζονται στοιχεία των συμβάσεων πελατών για όλες τις καταχωρημένες συμβάσεις οι οποίες έχουν ημερομηνία λήξης εντός 30 ημερών από την ημερομηνία login στην εφαρμογή λαμβάνοντας υπόψη και τυχόν άλλες παραμέτρους ($w) που δίνει ο χρήστης από τις διαθέσιμες κατά την εκτέλεση του report. Τα αποτελέσματα εμφανίζονται ταξινομημένα σύμφωνα με την ημερομηνία λήξης της σύμβασης καθώς και τυχόν άλλες παραμέτρους ταξινόμησης ($ο) που επιλέγει ο χρήστης από τις  διαθέσιμες  κατά την εκτέλεση του report.  Type Δείχνει τον τύπο του control με το οποίο θα παρουσιαστεί η παράμετρος κατά την εισαγωγή των παραμέτρων. Τα διαθέσιμα controls είναι: Edit,  για την εισαγωγή αλφαριθμητικών τιμών. Date,  για ημερομηνίες. Numeric,  για αριθμούς. CheckBox,  για true ή false τιμές. Selector,  μπορεί να χρησιμοποιηθεί οποιοσδήποτε επιλογέας αναζήτησης (selector) είναι διαθέσιμος στο Atlantis. Για να γίνει αυτό πρέπει επίσης να συμπληρωθούν τα στοιχεία: Όνομα επιλογέα,  το όνομα του επιλογέα όπως είναι στο Atlantis Mask   Enabled,  καθορίζει κατά πόσο μπορεί να χρησιμοποιηθεί ο χαρακτήρας * κατά την αναζήτηση με τον επιλογέα. Πεδίο εμφάνισης,  καθορίζεται συγκεκριμένο πεδίο εμφάνισης από τον επιλογέα Extra   where , προστίθεται επιπλέον συνθήκη βάσει της οποίας φιλτράρονται περαιτέρω οι εγγραφές που εμφανίζονται από τον επιλογέα. Πεδίo τιμής,  όπου καθορίζεται το πεδίο το οποίο επιστρέφει εσωτερικά ο selector, βάσει του οποίου γίνεται η σύνδεση με το Query field του επιλογέα.  Lookup   selector , όπου έχουμε τη δυνατότητα να φιλτράρουμε τις εγγραφές τις οποίες εμφανίζει ο συγκεκριμένος επιλογέας βάσει επιλογής που έχει ήδη γίνει από το χρήστη σε προηγούμενη παράμετρο τύπου selector στο report. Έτσι αρκεί να καταχωρήσουμε στο πεδίο το όνομα της προηγούμενης παραμέτρου. Πεδίο σύνδεσης , εφόσον έχει τοποθετηθεί τιμή στο πεδίο lookup selector, στο πεδίο διασύνδεσης αναφέρουμε το πεδίο του τρέχοντος επιλογέα μέσω του οποίου πρέπει να γίνεται η διασύνδεση των δύο παραμέτρων (επιλογέων) του report. ComboBox,  αν ο χρήστης θέλουμε να μπορεί να επιλέγει από μία λίστα τιμών τότε θα χρησιμοποιήσουμε αυτό το control αφού συμπληρώσουμε και τα εξής στοιχεία: Μέγεθος δοτού Control,  είναι το μέγεθος του πρώτου εμφανιζόμενου πεδίου (συνήθως του κλειδιού) στο combo box. Τύπος παραμέτρων,  εδώ διακρίνονται οι εξής περιπτώσεις. Ο χρήστης μπορεί να διαλέξει μεταξύ κάποιων δοτών τιμών, από έναν browser που θα φτιαχτεί από ένα query, είτε πεδία από κάποιο προκαθορισμένο cashed table του Atlantis. Περιγραφή και Τιμές / Query,  ανάλογα την προηγούμενη επιλογή θα πρέπει να περιγραφούν είτε οι δοτές τιμές και οι περιγραφές τους , είτε το query. (βλ. Παραδείγματα) Cache   Tables  Εδώ επιλέγετε το όνομα του cached table που φορτώνεται στο Atlantis κατά το άνοιγμα της εφαρμογής. (*  Τα tables που ορίζονται σαν memory   tables στο UCL δεν ενεργοποιούνται με αυτόν τον τρόπο βλ. παραδείγματα ). Σε αυτήν την περίπτωση ο τύπος του πεδίου πρέπει να είναι Integer ή SmallInt Cache   Fields  Εδώ προσδιορίζετε τα πεδία που είναι διαθέσιμα για το cached table που επιλέξατε παραπάνω. Πρέπει να επιλέξετε δύο πεδία διαχωριζόμενα μεταξύ τους με ελληνικό ερωτηματικό. (βλ. Παραδείγματα) Το ποια πεδία από τα cached tables είναι διαθέσιμα αναμένεται να δοθεί σε επόμενη version. MultiComboBox,  τo control αυτό είναι ίδιο με το ComboBox με τη διαφορά ότι ο χρήστης θα μπορεί να διαλέξει περισσότερες από μία τιμές από τη λίστα. Πρέπει να συμπληρωθούν τα στοιχεία Τύπος παραμέτρων, Περιγραφή και τιμές/ query, Cache tables, Cache fields όπως παραπάνω. Για να λειτουργήσει σωστά αυτό το control θα πρέπει o Τύπος πεδίου να είναι " Μemo"  και Query Condition να είναι  είτε Include είτε Not   Include. Μέγεθος Είναι το μέγεθος (μήκος σε χαρακτήρες) του εμφανιζόμενου στην οθόνη πεδίου της παραμέτρου. Περιορισμοί όσον αφορά τη χρήση των παραμέτρων Οι τιμές των παραμέτρων δεν μπορούν να κληθούν μέσα στα queries των bands με τον τρόπο @(PRM.όνομα παραμέτρου), σε αυτή τη περίπτωση μπορεί να χρησιμοποιηθεί η παράμετρος ελεύθερης χρήσης. Κάθε παράμετρος συνδέεται με ένα πεδίο μίας μπάντας. Δεν μπορούν να υπάρχουν παράμετροι που δεν αντιστοιχούν σε πεδία (εννοείται εκτός των παραμέτρων ελεύθερης χρήσης). Το πεδίο της μπάντας που αντιστοιχεί στην παράμετρο, δεν μπορεί να είναι αποτέλεσμα πράξης στο οποίο έχετε αποδώσει κάποιο alias. Πχ. Δεν μπορούμε να έχουμε μέσα στην μπάντα: sum(έκφραση)-sum(έκφραση) as mysum και να ορίσουμε παράμετρο που θα αναφέρεται στο mysum. H χρήση των $w ή $W μέσα στο query του band θέλει προσοχή γιατί κάνει εισαγωγή  όλων  των παραμέτρων του report που αφορούν τη συγκεκριμένη μπάντα. Παραδείγματα Ορισμού Παραμέτρων Memory ή Custom table Δοτές τιμές Επιλογή Πολλαπλών Τιμών από MultiComboBox Cache table Ταξινόμηση Δεδομένων (sorting) Τα δεδομένα έρχονται ταξινομημένα καταρχήν από το order by clause του band sql statement. Εφόσον χρησιμοποιηθούν οι ειδικοί χαρακτήρες $Ο ή $ο, τότε ο χρήστης μπορεί κατά την εκτέλεση του report να επιλέξει από λίστα διαθέσιμων πεδίων ταξινόμησης. Τα διαθέσιμα προς τον χρήστη πεδία, δηλώνονται στο tab Γενικά στη θέση " Ταξινόμηση" , όπως φαίνεται στην εικόνα. Παρατηρείται ότι: Τα ονόματα των πεδίων αναφέρονται επακριβώς χρησιμοποιώντας το όνομα της μπάντας, το table alias, και το όνομα του πεδίου όπως είναι στο band query. H περιγραφή του πεδίου δηλώνεται με « =περιγραφή» Δημιουργία Συνόλων (Totaling) Υπάρχουν 3 τρόποι για να δημιουργηθούν σύνολα για μία στήλη: Ορίζετε στο select μέρος του sql query του band μία sum() στήλη με κατάλληλο group by. (Κάθε γραμμή θα εκφράζει ένα σύνολο). Επιλέγετε στα χαρακτηριστικά (Attributes) ενός πεδίου στο πεδίο τύπος πεδίου τη τιμή «Άθροισμα». Τότε στο τέλος της εκτύπωσης κάτω από τη στήλη εμφανίζεται το άθροισμά της. Αφήνετε τον χρήστη να επιλέξει «Σύνολα ανά ομάδα», δηλαδή, να βλέπει σύνολα για μία στήλη που εκφράζει μία λογική ομάδα από τα διαθέσιμα σύνολα ομάδων που έχουν καθοριστεί κατά τη σχεδίαση της εκτύπωσης. Advanced Queries Από το πρόγραμμα δίνεται η δυνατότητα να εκτελεστούν διάφορα queries: είτε πριν από το γέμισμα της κάθε γραμμής ενός band. είτε πριν από τον υπολογισμό στηλών εκ μεταφοράς ενός band. Στην διπλανή εικόνα εμφανίζεται παράδειγμα ενός query το οποίο εκτελείται κάθε φορά πριν από κάθε γραμμή της Band1 (πελάτες) το οποίο εμφανίζει τη συνολική χρέωση, τη συνολική πίστωση και το υπόλοιπο του πελάτη. Στη διπλανή εικόνα εμφανίζεται παράδειγμα ενός query το οποίο εκτελείται κάθε φορά πριν από κάθε γραμμή της Band1 (πελάτες) το οποίο εμφανίζει το ανοικτό υπόλοιπο του πελάτη. Ονομασία Ονομασία του query στα Αγγλικά. Είδος Αναφέρεται στη χρονική στιγμή που θα εκτελεστεί το query. Οι επιλογές Band(1) έως Band(9) αφορούν τη στιγμή πριν την εκτέλεση κάθε γραμμής της συγκεκριμένης μπάντας, ενώ οι επιλογές Band(1) carried forward έως Band(9) carried forward αφορούν τη στιγμή πριν από τον υπολογισμό των εκ μεταφοράς στηλών μίας μπάντας.* Τύπος Το query που θα τρέξει μπορεί να παραχθεί είτε ως αποτέλεσμα ενός sql statement το οποίο θα πρέπει να γραφτεί στη θέση Formula, είτε ως αποτέλεσμα μίας stored procedure. Formula Εδώ γράφουμε είτε το sql statement, είτε δηλώνουμε το stored procedure. Η σύνταξη του stored procedure είναι ίδια όπως αναφέρθηκε σε προγενέστερο σημείο, με τη διαφορά ότι τώρα μπορούμε να έχουμε περισσότερης της μίας OUT παραμέτρων, διαχωριζόμενες με ελληνικά ερωτηματικά. Report   values Για κάθε στήλη που θα επιστρέφεται από το query θα πρέπει εδώ σειριακά να δηλωθούν τα ονόματα των report values, τα οποία μπορούν να εμφανιστούν σαν στήλες του report, δηλώνοντάς τα στη θέση  «Πεδία»  στη band που τα αφορά. Σε επόμενη έκδοση αναμένεται να προστεθούν δύο ακόμη options σχετικά με το είδος. Συγκεκριμένα θα μπορεί να εκτελείται μία procedure πριν ξεκινήσει το γέμισμα των bands, είτε μετά. Import - Export εκτυπώσεων Οι σχεδιαζόμενες εκτυπώσεις αποθηκεύονται στη βάση της εφαρμογής, στον πίνακα CUSTOM. Συγκεκριμένα είναι οι γραμμές με τη στήλη Domainkind=4. Επίσης, σημαντική είναι η στήλη DataKind η οποία δείχνει σε ποιο κύκλωμα αφορούν οι εκτυπώσεις. Υπάρχουν τόσες γραμμές όσες και οι γενικές κατηγορίες των σχεδιαζόμενων εκτυπώσεων της εφαρμογής Atlantis.  Έτσι έχουμε την αντιστοιχία: DataKind Γενική Κατηγορία 1 Πελάτες 2 Προμηθευτές 3 Αξιόγραφα 4 Τραπεζικοί λογαριασμοί 5 Λογιστική 6 Αποθήκη 7 Πάγια 8 Πωλήσεις 9 Αγορές 10 Πωλητές / Εισπράκτορες 11 Προδιαγραφές 12 Υπηρεσίες 13 Παραστατικών Διαδικασία Export  Επιλέγοντας το πλήκτρο « Export»  εμφανίζεται ο σχετικός διάλογος στον οποίο ο χρήστης καθορίζει τη τοποθεσία στην οποία θα αποθηκευτεί το αρχείο. Μέσω της διαδικασίας αποθηκεύονται οι εκτυπώσεις της γενικής κατηγορίας στην οποία βρισκόμαστε. Το αρχείο το οποίο θα αποθηκευτεί περιέχει τις πληροφορίες που χρειάζονται για την αντικατάσταση όλων των εκτυπώσεων της γενικής κατηγορίας.  Διαδικασία Import Επιλέγοντας το πλήκτρο «Import» εμφανίζεται ο σχετικός διάλογος στον οποίο ο χρήστης καθορίζει τη τοποθεσία στην οποία θα βρίσκεται το αρχείο με τα δεδομένα των εκτυπώσεων. Μέσω της διαδικασίας εισάγονται οι αποθηκευμένες εκτυπώσεις στη γενικής κατηγορίας στην οποία βρισκόμαστε, αντικαθιστώντας τις υφιστάμενες. Κατά το Import ανοίγει ένα δεύτερο παράθυρο από το οποίο μπορούμε να επιλέξουμε μία ή περισσότερες εκτυπώσεις και να τις τοποθετήσουμε στη θέση και την κατηγορία που επιθυμούμε. Δηλαδή υπάρχουν δύο επιλογές: Είτε να διαλέξουμε όλες τις εκτυπώσεις από το πλήκτρο « All » Είτε να επιλέξουμε κάποιες συγκεκριμένες με επιλογή της τιμής «Ναι» στη στήλη «Επιλεγμένο», να ορίσουμε τη «Θέση» που θέλουμε να τοποθετηθούν και να πατήσουμε το πλήκτρο « Selected » Με την επιλογή του πλήκτρου « Έξοδος » ώστε να βρεθούμε στο παράθυρο των σχεδιαζόμενων εκτυπώσεων, θα πρέπει να επιλέξουμε το πλήκτρο « Αποθήκευση », ώστε να αποθηκευτούν οι εκτυπώσεις που επιλέχθηκαν. Προσοχή! Για λόγους backup καλό θα ήταν ο σχεδιαστής των εκτυπώσεων να κάνει τακτικά export τις εκτυπώσεις του. Επίσης, δεν θα πρέπει να επιχειρείται να αποθηκεύονται δύο διαφορετικές εκτυπώσεις που αφορούν το ίδιο κύκλωμα την ίδια στιγμή – πχ. Από διαφορετικούς users, γιατί δεν γίνεται έλεγχος για concurrent saves. Οι εκτυπώσεις που δημιουργούνται στο επίπεδο layout (custom εκτυπώσεις)  ΔΕΝ  μεταφέρονται με αυτόν τον τρόπο, αλλά με τον κλασσικό τρόπο import export του πίνακα PrtInfo από τη βάση. Έτσι, αν έχουμε κάνει «SAVE AS" μία σχεδιαζόμενη εκτύπωση, τότε δε θα μεταφερθεί η καινούρια εκτύπωση αλλά αυτή που είναι στο αρχικό επίπεδο της σχεδιαζόμενης (αυτή με τα bold γράμματα). Εκτέλεση σχεδιαζόμενων εκτυπώσεων Οι σχεδιαζόμενες εκτυπώσεις εκτελούνται από την ενότητα της εφαρμογής στην οποία δημιουργήθηκαν δηλαδή από το menu Εκτυπώσεις / Advanced Reports. Επιλέγετε με διπλό κλικ την εκτύπωση και εμφανίζεται η σελίδα εισαγωγής παραμέτρων.Στο σημείο αυτό ο χρήστης μπορεί να εισάγει ή να επιλέξει τιμές. Επίσης, παρέχεται η δυνατότητα όπως σε όλες τις εκτυπώσεις της εφαρμογής να αποθηκευτεί η εκτύπωση με τα επιλεγμένα φίλτρα. Στη περίπτωση αυτή, από το πεδίο «Αρχείο» ο χρήστης μπορεί να δει όλα τα διαθέσιμα φίλτρα. Επιπλέον ο χρήστης μπορεί επίσης στο 3 ο  tab « Setup Εκτύπωσης » να διαμορφώσει το layout της εκτύπωσης σύμφωνα με τις τρέχουσες ανάγκες του, όπως και στις συνήθεις εκτυπώσεις της εφαρμογής, πχ. να αλλάξει τίτλο, πλάτος στηλών, γραμματοσειρά, να προσθέσει σύνολα πεδίων, να δημιουργήσει καινούρια πεδία (με Ctrl+I ),…., κ.τ.λ. Επιπλέον, και προς το παρόν μόνο για Advanced Reports, μέσω του πλήκτρου « Παράμετροι για Ροή » παρέχεται η δυνατότητα καθορισμού παραμέτρων αυτόματης εκτέλεσης της εκτύπωσης όταν αυτή καλείται από Ροή Εργασίας. Hints & Tricks - Παραδείγματα Παράμετροι από διαφορετικά tables (ιδίου band)s - Παραδείγματα Στη περίπτωση αυτή, θα πρέπει στο πεδίο Key της μπάντας να καταχωρηθούν τα alias names όλων των πινάκων του Master SQL query του band. H καταχώρηση γίνεται με χρήση του ελληνικού ερωτηματικού (π.χ. c;cust;cstr). Ορισμός ενός πεδίου εκ μεταφοράς Έστω ότι στη 2 η  μπάντα (Band2) μίας εκτύπωσης στοιχείων πελατών έχει δημιουργηθεί το query που εμφανίζει τις κινήσεις των πελατών.  Έστω ότι έχουμε παραμέτρους «Από-Έως ημερομηνία κινήσεων». Ας υποθέσουμε ότι επιθυμείτε να υπολογιστεί για το πεδίο TRNVALUE (αξία κίνησης) το εκ μεταφοράς ποσό μέχρι και την προηγούμενη μέρα από αυτή που τέθηκε ως αρχική ημερομηνία (παράμετρος «Ημερομηνία Από»). Αρχικά, θα πρέπει να φτιάξετε ένα query ή μία stored procedure το οποίο θα υπολογίζει αυτό το ποσό. Εφόσον αυτό το query επιθυμείτε να εκτελείται μία φορά πριν εμφανιστούν τα πεδία της μπάντας 2, θα πρέπει να οριστεί κατάλληλα στη σελίδα «Advanced» του σχεδιασμού της εκτύπωσης. Από το query εξάγετε μία τιμή την οποία την ονομάζετε «UntilDayBefore» και τη αναθέτετε στη θέση Report Value. Στον ορισμό του πεδίου της αξίας κίνησης δηλώστε στη θέση «Από μεταφορά» την Report Value «UntilDayBefore».