Οι αναφορές φτιάχνονται εύκολα με τη χρήση της γλώσσας SQL και κάποιες εντολές της EMDI που ενσωματώνονται στα σχόλια.
Μεταβλητές που μπορείς να συμπεριλάβεις στον SQL κώδικα:
(χρησιμοποιούνται στην εντολή where)
:apo | ημερομηνία από |
:ews | ημερομηνία εως |
Περιγραφή αναφοράς | 1η παράμετρος από εκτέλεση accounts |
Κωδικός αναφοράς | 2η παράμετρος από εκτέλεση accounts |
:param1 | 3η παράμετρος από εκτέλεση accounts |
:param2 | 4η παράμετρος από εκτέλεση accounts |
:search | αναζήτηση για φόρμες που είναι τσεκαρισμένη η αναζήτηση |
:orderby | προστίθεται αντί για την εντολή order by για ταξινόμηση |
:loydoc | αριθμός παραστατικού πόντων |
:loypro | κωδικός είδους πόντων |
:loypay | κωδικός είδους εξαργύρωσης |
:orderdoc | συντομογραφία παραστατικού που εμφανίζεται στο σχετικό |
:orderdid | αριθμός γραμμής παραστατικού βάσει συντομογραφίας παραστατικού |
–nodecimals– | απεριόριστα δεκαδικά |
–combo– | αναπτυσσόμενη λίστα |
Πεδία στοn SQL κώδικα
Χρησιμοποιούνται στην εντολή select, πχ “pvlhseis”.”Aa” “ksq”
doc | ο αριθμός γραμμής πώλησης “Aa” (δημιουργία κουμπιού που ανοίγει πωλήσεις στο αντίστοιχο παραστατικό) |
cus | ο αριθμός γραμμής πελάτη “Aa” (δημιουργία κουμπιού που ανοίγει τον αντίστοιχο πελάτη) |
pro | ο αριθμός γραμμής προϊόντος “Aa” (δημιουργία κουμπιού που ανοίγει το αντίστοιχο είδος) |
prd | ο αριθμός γραμμής προϊόντος “Aa” (δημιουργία κουμπιού που ανοίγει τα παραστατικά του αντίστοιχου είδους) |
ksq | το αποτέλεσμά της χρησιμοποιείται στο script ενημέρωσης (δημιουργία κουμπιού που ανοίγει editor για επεξεργασία δεδομένων) |
eml | το e-mail για αποστολή|Όνομα|Αξία|Σύνδεσμος e-invoice|Αριθμός voucher (δημιουργία κουμπιού που στέλνει e-mail) |
sms | το κινητό για αποστολή|Όνομα|Αξία|Σύνδεσμος e-invoice|Αριθμός voucher (δημιουργία κουμπιού που στέλνει sms) |
img | φωτογραφία |
NEXT VALUE FOR “gen_counter” | ο αριθμός γραμμής |
Script ενημέρωσης
:ksq | τιμή που εκτελείται στο κώδικα με εισαγωγικά |
:ksp | τιμή που εκτελείται στο κώδικα χωρίς εισαγωγικά |
Υπάρχει δυνατότητα εκτέλεσης μέχρι 2 script χωρισμένα με ερωτηματικό “;”.
Στο παράδειγμα 1, μπορούμε να επεξεργαστούμε και να αποθηκεύσουμε τα πεδία του επιλεγμένου πελάτη. Σημαντικό είναι ότι πρέπει πάντα να συμπεριλαμβάνεται ένα πεδίο κλειδί που θα ονομάζεται “Aa” (εδώ συμπεριλαμβάνεται λόγω του *).
Παράδειγμα 1:
1 |
select * from "pelates" where "Kvdikos"=:ksq |
Στο παράδειγμα 2, αποτελείται από 2 scripts. Πρώτα δημιουργείται μια νέα γραμμή, αν δεν υπάρχει ήδη, στο πίνακα “kinhseis” και μετά επιλέγουμε να φανούν από τον ίδιο πίνακα 2 πεδία, “Order stage” και “Notes”. Χρησιμοποιούμε και σε αυτή τη περίπτωση το πεδίο κλειδί ως “Aa” (“kinhseis”.”Grammh”).
Παράδειγμα 2:
1 2 |
UPDATE OR INSERT INTO "kinhseis" ("kinhseis"."Grammh","kinhseis"."aapar") values (:ksq,(select first 1 "grammes"."Aapar" from "grammes" where "grammes"."Aa"=:ksq)); select "kinhseis"."Uesh" "Order stage","kinhseis"."Grammh" "Aa","kinhseis"."custom1" "Notes" from "kinhseis" where "kinhseis"."Grammh"=:ksq |
Στο παράδειγμα 3, επεξεργαζόμαστε και αποθηκεύουμε το “custom1” πεδίο του επιλεγμένου παραστατικού. Εδώ το πεδίο κλειδί είναι το “pvlhseis”.”Aa” και “Status” ο τίτλος που έχουμε βάλει για το πεδίο στο παράθυρο επεξεργασίας.
Παράδειγμα 3:
1 |
SELECT "Aa","custom1" "Status" FROM "pvlhseis" WHERE "pvlhseis"."Aa"=:ksq |
Αν ορισθεί ερώτημα με update ως πρώτο, τότε εκτελείται πριν την επιλογή του χρήστη. Σε περίπτωση που ορισθεί δεύτερο, τότε εφαρμόζεται μετά την επιλογή του χρήστη.
Άνοιγμα εξωτερικής εφαρμογής
Το “πεδίο επεξεργασίας” το χρησιμοποιούμε για να ορίσουμε μια λίστα επιλογών σε πεδίο που επιθυμούμε.
Στο “επιλογές πεδίου” γράφουμε χωρισμένες με κόμμα τις επιλογές που θέλουμε να έχει η λίστα. Δεν είναι υποχρεωτικό.
Το “πεδίο ανάγνωσης” το χρησιμοποιούμε για να λαμβάνουμε τα περιεχόμενα ενός πεδίου της επιλογής μας. Δεν είναι υποχρεωτικό.
Χρησιμοποιώντας το πεδίο του “συνδέσμου” μπορούμε να καλούμε μια εξωτερική εφαρμογή.
Όταν ο σύνδεσμος καλεί διεύθυνση διαδικτύου χρησιμοποιούμε τις μεταβλητές:
#VL1 | πεδίο επεξεργασίας |
#VL2 | πεδίο ανάγνωσης |
Για παράδειγμα:
1 |
https://www.mysite.com/myscript.php?number=#VL1&id=#VL2 |
Σε περίπτωση που καλούμε κάποιο τοπικό πρόγραμμα δεν χρειάζεται να χρησιμοποιήσουμε μεταβλητές γιατί ορίζονται σαν 1η και 2η παράμετρο αντίστοιχα.
Για παράδειγμα:
1 |
C:\Program Files (x86)\company\mysoftware.exe |
Εντολές της EMDI
Η πρώτη γραμμή μπορεί να περιλαμβάνει κάποιες εντολές της EMDI σαν σχόλιο της SQL και δημιουργείται αυτόματα κάθε φορά που κάνεις κάποια αλλαγή.
1 |
--search-searchtitle-asearch-searchtitle-graph x-xx-graph y-yy-graph labels-xxlabel-from-fromvalue-to-tovalue-step-stepvalue |
Περιλαμβάνει όλες τις ρυθμίσεις που κάνουμε για μια αναφορά.
Για παράδειγμα, αν θέλεις να δημιουργήσεις γράφημα, τότε συμπληρώνεις όπου xx το πεδίο για τον άξονα x, yy το πεδίο για τον άξονα y και xxlabel το πεδίο για τον τίτλο του άξονα x.
Για αρίθμηση γραμμών χρησιμοποιούμε τη παρακάτω μεταβλητή μετά το select:
1 2 |
select NEXT VALUE FOR "gen_counter" AS "Row #", ... |
Χρώματα
Για να δώσουμε χρώμα έχουμε δυνατότητα να ορίσουμε μια μεταβλητή που παίρνει κάποιες τιμές (μέχρι 9) χωρισμένες με κόμμα π.χ.:
1,22,2,45,3,90,3,111,9
Το χρώμα που παίρνει η γραμμή αντίστοιχα είναι:
κίτρινο,κόκκινο,πράσινο,κίτρινο,κόκκινο,πράσινο,κίτρινο,κόκκινο,πράσινο
Αναπτυσσόμενη λίστα
Υπάρχει η δυνατότητα να ενεργοποιήσουμε μία λίστα με επιλογές. Η κάθε επιλογή εισάγει ένα κώδικα στη μεταβλητή –combo–, που τον διαβάζει από αντίστοιχο αρχείο με κατάληξη psql.
Στο παρακάτω παράδειγμα δημιουργούμε 2 επιλογές, DELIVERY και RESERVED
1 |
sql1.psql|DELIVERY,sql2.psql|RESERVED |
Όταν ο χρήστης επιλέγει DELIVERY τότε το περιεχόμενο του αρχείου sql1.psql εισάγεται στη θέση της μεταβλητής –combo–.
Παράδειγμα αρχείου psql
1 |
where "color"=2 |
ή οποιοσδήποτε κώδικας sql που θέλουμε να συνδυαστεί με το κύριο κώδικά μας.
Τα αρχεία psql τα αποθηκεύουμε στον ίδιο φάκελο με τις αναφορές.
Δικαιώματα
Μπορούμε να ορίσουμε ποιοί χρήστες, βάσει δικαιωμάτων μπορούν να εκτελέσουν μια αναφορά. Στο πεδίο “Δικαιώματα” γράφουμε τον τίτλος δικαιωμάτων που ανήκουν οι χρήστες που θα έχουν πρόσβαση στην αναφορά.
Για πολλούς τίτλους χωρίζουμε με κόμμα.
Κενό πεδίο για κανένα περιορισμό.
Πρόσθετες λειτουργίες στην SQL (functions)
Λήψη πεδίου από κείμενο διαχωρισμένο:
1 |
SPLIT_STRING('test1;test2;test3',';',2) |
Αποτέλεσμα: test2
Μετατροπή κειμένου σε αριθμό με δεκαδικά
1 |
STRING_TO_FLOAT('152,33') |
Αποτέλεσμα: 152,33
1 |
STRING_TO_FLOAT('152.33') |
Αποτέλεσμα: 152,33
Μετατροπή κειμένου σε αριθμό χωρίς δεκαδικά
1 |
STRING_TO_INTEGER('152,33') |
Αποτέλεσμα: <null>
1 |
STRING_TO_FLOAT('152.33') |
Αποτέλεσμα: 152
* Σημείωση: Για εκτέλεση πολλαπλών queries βάζουμε στην αρχή του κώδικα –##
“>