• Nenhum resultado encontrado

3. Σχεδίαση ΒΔ του ΠΣ Εμπορικής Επιχείρησης σε Microsoft Access

3.1 Διάφορες χρήσεις της Access

♦ Να τρέχουν ερωτήματα

♦ Να δημοσιεύουν αναφορές (εκθέσεις)

Σε μερικές περιπτώσεις, μπορεί να υπάρχουν πολλές διαφορετικές εφαρμογές, κάθε μια με στόχο μια διαφορετική ομάδα χρηστών, οι οποίες θα δουλεύουν με την ίδια βάση δεδομένων. Οι χρήστες οι οποίοι καταχωρούν δεδομένα μπορεί να χρησιμοποιούν μια εφαρμογή για να συντηρούν τη βάση δεδομένων, ενώ οι διαχειριστές μπορεί να χρησιμοποιούν μια άλλη εφαρμογή για να δημιουργούν αναφορές κατάστασης ή άλλα έγγραφα, ανάλογα με την τρέχουσα κατάσταση της βάσης δεδομένων.

3.Σχεδίαση Βάσης Δεδομένων του ΠΣ Εμπορικής Επιχείρησης σε Microsoft Access

3.1 Διάφορες χρήσεις της Access

Η Access είναι ένα περιβάλλον ανάπτυξης που έχει δημιουργηθεί γύρω από ένα σχεσιακό σύστημα διαχείρισης βάσεων δεδομένων. Αν και αρχικά είχε στόχο να γίνει ένα προσωπικό RDBMS, έχει την δυνατότητα και να δουλέψει και σε ένα περιβάλλον με πολλούς χρήστες

☼ Με ένα διακομιστή αρχείων

☼ Με μια στρατηγική αντιγραφής

☼ Με μια διαμόρφωση Πελάτη/Διακομιστή (Client/Server)

Περιεχόμενα

27 σε ένα αρχείο ή σε ένα σύνολο από σχετικά αρχεία και είναι συνδεδεμένος σε ένα δίκτυο υπολογιστών. Μια εφαρμογή που τρέχει σε έναν από τους άλλους υπολογιστές (τερματικά) ζητά ένα αρχείο από τον διακομιστή αρχείων. Ο διακομιστής αρχείων ανταποκρίνεται εντοπίζοντας το ζητούμενο αρχείο και το στέλνει μέσω του δικτύου στον υπολογιστή που τρέχει την εφαρμογή.

Η αρχιτεκτονική δικτύου του διακομιστή αρχείων είναι ένας μάλλον άκομψος τρόπος να κατανέμεται η ισχύς ενός υπολογιστή. Η Access αποθηκεύει όλους τους πίνακες, φόρμες, εκθέσεις και άλλα αντικείμενα της βάσης δεδομένων σε ένα μόνο αρχείο .mdb. Μια εφαρμογή μπορεί να χρειάζεται μία μόνο εγγραφή από ένα πίνακα μιας βάσης δεδομένων, αλλά ο διακομιστής αρχείων στέλνει ολόκληρη την βάση δεδομένων σε απόκριση κάθε αίτησης- Δηλαδή απλώς προσδιορίζει ποια βάση δεδομένων περιέχει την ζητούμενη εγγραφή και μετά στέλνει την βάση δεδομένων μέσω του δικτύου στον κατάλληλο υπολογιστή-πελάτη. Το κύριο πρόβλημα με αυτή την προσέγγιση είναι η άσχημη απόδοση, επειδή στέλνονται δια μέσω του δικτύου άχρηστα δεδομένα καθώς επίσης και η φθορά ή ακόμη και καταστροφή του αρχείου σε περίπτωση αποσύνδεσης του δικτύου κατά την διαδικασία της μεταφοράς του. Τέλος, όταν ο αριθμός των ταυτόχρονων χρηστών φτάσει σε μια κρίσιμη τιμή η απόδοση πέφτει κατακόρυφα.

► Μια λύση στο πρόβλημα της άσχημης απόδοσης ενός διακομιστή αρχείων είναι να μην χρησιμοποιείται ο διακομιστής αρχείων αλλά αντίθετα, να αντιγραφεί (ρέπλικα) η βάση δεδομένων σε όλους τους υπολογιστές που τρέχουν τις εφαρμογές. Αυτό ξεπερνά το πρόβλημα

Περιεχόμενα

28 απόδοσης επειδή τα δεδομένα είναι στον ίδιο υπολογιστή με την εφαρμογή και έτσι δεν μειώνεται η απόδοση του δικτύου. Η αντιγραφή έχει δύο προβλήματα :

☻ Τον συγχρονισμό πολλαπλών αντιγράφων της βάσης δεδομένων. Αν ένας χρήστης σε ένα σύστημα κάνει μια αλλαγή σε μια εγγραφή στο δικό του αντίγραφο της βάσης δεδομένων, τότε αυτή η αλλαγή θα πρέπει να σταλεί σε όλα τα άλλα αντίγραφα, πριν ζητήσει την ίδια εγγραφή ένας δεύτερος χρήστης σε ένα άλλο υπολογιστή. Αυτό απαιτεί ένα πολύ περίπλοκο DBMS, αλλά ταυτόχρονα είναι δυνατό και με μικρότερη πιθανότητα λαθών.

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

► Η πιο αποτελεσματική προσέγγιση και η μόνη που μπορεί να ανταπεξέλθει σε δίκτυα επιχειρήσεων είναι η προσέγγιση Πελάτη/Διακομιστή (Client/Server). Αυτός ο συνδυασμός χρησιμοποιεί ένα έξυπνο διακομιστή (υπηρεσία) σε αντίθεση με τον διακομιστή αρχείων. Ο έξυπνος διακομιστής δέχεται μια SQL εντολή, την εκτελεί ώστε να γίνει μια λειτουργία στη βάση δεδομένων και μετά στέλνει το αποτέλεσμα πίσω, στον κατάλληλο Υπολογιστή-πελάτη.

Η Access δεν έχει την δύναμη να υποστηρίξει την αρχιτεκτονική Client- Server. Προκειμένου να παρέχει ένα πλήρες φάσμα από λύσεις για τις ανάγκες μιας επιχείρησης σε σχέση με βάσεις δεδομένων, η Microsoft συνδυάζει την Access με το RDBMS Πελάτη/Διακομιστή - τον SQL Server.

Περιεχόμενα

29 Σκοπός του έργου που δημιουργήσαμε είναι :

√ Καταχώρηση και διαχείριση των παραγγελιών των πελατών μας

√ Δυνατότητα παρακολούθησης των Πληρωμών για κάθε παραγγελία

√ Παρακολούθηση ανεξόφλητου ποσού για κάθε παραγγελία

√ Δυνατότητα παρακολούθησης των πληροφοριών αποστολής για κάθε παραγγελία

√ Δυνατότητα προεπισκόπησης εκτύπωσης Τιμολογίου

√ Προεπισκόπηση αναφοράς ανάλυσης πελάτη (στοιχεία πελατών)

√ Προεπισκόπηση αναφοράς Πωλήσεων κατά πελάτη √ Προεπισκόπηση αναφοράς Πωλήσεων κατά Υπάλληλο

√ Προεπισκόπηση αναφοράς Πωλήσεων κατά προϊόν

√ Προεπισκόπηση αναφοράς Ενηλικίωσης Υπολοίπων

3.3 Κανόνες κανονικοποίησης που ακολουθήθηκαν – δημιουργία πινάκων

Για την δημιουργία των πινάκων της βάσης δεδομένων της εμπορικής επιχείρησης μας ακολουθήθηκαν οι εξής τρεις κυριότεροι κανόνες κανονικοποίησης πινάκων :

♦ Όλα τα πεδία είναι ατομικά, γεγονός που σημαίνει ότι τα δεδομένα δεν μπορούν να υποδιαιρεθούν περισσότερο.

Περιεχόμενα

30

♦ Όλα τα πεδία των πινάκων αναφέρονται σε ένα πεδίο κλειδί – πρωτεύον ή ξένο. Ένα πεδίο πρωτεύοντος κλειδιού περιέχει μια μοναδική τιμή για κάθε εγγραφή. Ένα ξένο κλειδί είναι το αποτέλεσμα σχετιζόμενων πινάκων.

♦ Όλα τα πεδία είναι μεταξύ τους ανεξάρτητα, γεγονός το οποίο σημαίνει ότι δεν υπάρχουν κρυμμένες σχέσεις προς άλλα πεδία του ίδιου πίνακα.

Δημιουργία Πινάκων

Για την επίτευξη των σκοπών που αναφέρθηκαν στην παράγραφο 3.2 δημιουργήσαμε 9 πίνακες με τα εξής ονόματα : Εταιρία, Πελατολόγιο, Υπάλληλοι, Προϊόντα, Παραγγελίες, Λεπτομέρειες Παραγγελιών, Πληρωμές, Τρόποι Πληρωμής, Τρόποι Αποστολής.

♫ Πίνακας Η Εταιρεία μου :

Ο Πίνακας Η Εταιρεία μου περιλαμβάνει τα στοιχεία της επιχείρησης που χρησιμοποιεί την εφαρμογή.

Τα πεδία που χρησιμοποιούμε και ο τύπος των δεδομένων τους παρουσιάζονται στον παρακάτω πίνακα :

Περιεχόμενα

31 ♫ Πίνακας Πελατολόγιο

Ο Πίνακας Πελατολόγιο περιλαμβάνει τα στοιχεία των Πελατών της επιχείρησης.

Τα πεδία που χρησιμοποιούμε και ο τύπος των δεδομένων τους παρουσιάζονται στον παρακάτω πίνακα :

32

♫ Πίνακας Υπάλληλοι

Ο Πίνακας Υπάλληλοι περιλαμβάνει τα στοιχεία των Εργαζομένων της επιχείρησης.

Τα πεδία που χρησιμοποιούμε και ο τύπος των δεδομένων τους παρουσιάζονται στον παρακάτω πίνακα :

♫ Πίνακας Προϊόντα

Ο Πίνακας Προϊόντα περιλαμβάνει τα προϊόντα που αποτελούν αντικείμενο πώλησης για την επιχείρηση.

Τα πεδία που χρησιμοποιούμε και ο τύπος των δεδομένων τους παρουσιάζονται στον παρακάτω πίνακα :

Περιεχόμενα

33

♫ Πίνακας Παραγγελίες

Ο Πίνακας Παραγγελίες περιλαμβάνει τα στοιχεία των παραγγελιών (πωλήσεων) της επιχείρησης.

Τα πεδία που χρησιμοποιούμε και ο τύπος των δεδομένων τους παρουσιάζονται στον παρακάτω πίνακα :

Περιεχόμενα

34

♫ Πίνακας Λεπτομέρειες Παραγγελιών

Ο Πίνακας Λεπτομέρειες Παραγγελιών περιλαμβάνει κάποιες λεπτομέρειες για κάθε παραγγελία που καταχωρείται.

Τα πεδία που χρησιμοποιούμε και ο τύπος των δεδομένων τους παρουσιάζονται στον παρακάτω πίνακα :

♫ Πίνακας Πληρωμές

Ο Πίνακας Πληρωμές περιλαμβάνει τις πληρωμές που πραγματοποιούν οι πελάτες της επιχείρησης.

Τα πεδία που χρησιμοποιούμε και ο τύπος των δεδομένων τους παρουσιάζονται στον παρακάτω πίνακα :

Περιεχόμενα

35

♫ Πίνακας Τρόποι Πληρωμής

Ο Πίνακας SHIPPERS περιλαμβάνει τους πιθανούς τρόπους πληρωμής που είναι στην διάθεση των πελατών της επιχείρησης για την εξόφληση των παραγγελιών τους.

Τα πεδία που χρησιμοποιούμε και ο τύπος των δεδομένων τους παρουσιάζονται στον παρακάτω πίνακα :

♫ Πίνακας Τρόποι Αποστολής

Ο Πίνακας Τρόποι Αποστολής περιλαμβάνει τους πιθανούς τρόπους αποστολής των προϊόντων μιας παραγγελίας προς τους πελάτες.

Περιεχόμενα

36 Τα πεδία που χρησιμοποιούμε και ο τύπος των δεδομένων τους παρουσιάζονται στον παρακάτω πίνακα :

3.4 Διάγραμμα Οντότητας – Σχέσης (E-R)

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

 Οι οντότητες Παραγγελίες και Πελατολόγιο σχετίζονται σύμφωνα με το στιγμιότυπο (πεδίο) ΚώδΑγοραστή (Κωδικός Πελάτη) το οποίο αποτελεί αναγνωριστική ιδιότητα της οντότητας Πελατολόγιο. Η δυαδική σχέση που δημιουργείται είναι ένα προς πολλά (ένας πελάτη κάνει πολλές παραγγελίες-αγορές και συνεπώς κάθε εγγραφή του πίνακα Πελατολόγιο σχετίζεται με πολλές εγγραφές του πίνακα Παραγγελίες ενώ κάθε εγγραφή του πίνακα Παραγγελίες σχετίζεται με μόνο μια εγγραφή του πίνακα Πελατολόγιο).

 Οι οντότητες Παραγγελίες και Λεπτομέρειες παραγγελιών σχετίζονται σύμφωνα με το στιγμιότυπο ΚωδΠαραγγελίας το οποίο αποτελεί αναγνωριστική ιδιότητα της οντότητας Παραγγελίες. Η δυαδική σχέση που δημιουργείται είναι ένα προς πολλά (Μία παραγγελία μπορεί να έχει

Περιεχόμενα

37 πολλές εγγραφές στον πίνακα Λεπτομέρειες Παραγγελιών αλλά κάθε εγγραφή του πίνακα Λεπτομέρειες Παραγγελιών σχετίζεται με μόνο ένα Κωδικό Παραγγελίας).

 Οι οντότητες Παραγγελίες και Υπάλληλοι σχετίζονται σύμφωνα με το στιγμιότυπο ΚωδΥπαλλήλου το οποίο αποτελεί αναγνωριστική ιδιότητα της οντότητας Υπάλληλοι. Η δυαδική σχέση που δημιουργείται είναι ένα προς πολλά ( ένας υπάλληλος πραγματοποιεί πολλές πωλήσεις και συνεπώς σχετίζεται με πολλές εγγραφές του πίνακα Παραγγελίες αλλά κάθε εγγραφή του πίνακα Παραγγελίες αφορά μόνο έναν κωδικό υπαλλήλου.

 Οι οντότητες Παραγγελίες και Πληρωμές σχετίζονται σύμφωνα με το στιγμιότυπο ΚωδΠαραγγελίας το οποίο αποτελεί αναγνωριστική ιδιότητα της οντότητας Παραγγελίες. Η δυαδική σχέση που δημιουργείται είναι ένα προς πολλά (Μία παραγγελία μπορεί να έχει πολλές εγγραφές στον πίνακα Πληρωμές διότι μπορεί να εξοφληθεί σε περισσότερες από μια φορές αλλά κάθε εγγραφή του πίνακα Πληρωμές σχετίζεται και αφορά μόνο ένα Κωδικό Παραγγελίας).

 Οι οντότητες Παραγγελίες και Τρόποι αποστολής σχετίζονται σύμφωνα με το στιγμιότυπο ΚωδΤρόπουΑποστολής το οποίο αποτελεί αναγνωριστική ιδιότητα της οντότητας Τρόποι αποστολής. Η δυαδική σχέση που δημιουργείται είναι ένα προς πολλά (κάθε ένας από τους τρόπους αποστολής σχετίζεται με πολλές εγγραφές του πίνακα παραγγελίες αλλά κάθε εγγραφή του πίνακα παραγγελίες σχετίζεται με μόνο μια του πίνακα Τρόποι αποστολής).

Περιεχόμενα

38

 Οι οντότητες Λεπτομέρειες παραγγελιών και Προϊόντα σχετίζονται σύμφωνα με το στιγμιότυπο ΚωδΠροϊόντος το οποίο αποτελεί αναγνωριστική ιδιότητα της οντότητας Προϊόντα. Η δυαδική σχέση που δημιουργείται είναι ένα προς πολλά (κάθε εγγραφή του πίνακα Προϊόντα μπορεί να σχετίζεται με πολλές εγγραφές στον πίνακα Λεπτομέρειες Παραγγελιών αλλά κάθε εγγραφή του πίνακα Λεπτομέρειες Παραγγελιών σχετίζεται με μόνο μια εγγραφή του πίνακα Προϊόντα).

 Οι οντότητες Πληρωμές και Τρόποι πληρωμής σχετίζονται σύμφωνα με το στιγμιότυπο ΚωδΤρόπουΠληρωμής το οποίο αποτελεί αναγνωριστική ιδιότητα της οντότητας Τρόποι πληρωμής. Η δυαδική σχέση που δημιουργείται είναι ένα προς πολλά (κάθε ένας από τους τρόπους πληρωμής σχετίζεται με πολλές εγγραφές του πίνακα Πληρωμές αλλά κάθε εγγραφή του πίνακα πληρωμές σχετίζεται με μόνο μια του πίνακα Τρόποι αποστολής).

Το διάγραμμα οντότητας –σχέσης (Ε-R) που περιγράφει τις παραπάνω συσχετίσεις :

Περιεχόμενα

39

4.Περιβάλλον Χρήστη – User Interface (Αλληλεπίδραση)

Όπως προαναφέρθηκε μια εφαρμογή βάσης δεδομένων είναι ένα πρόγραμμα που δουλεύει με μια βάση δεδομένων για να διατηρεί και να παραδίδει τις επιθυμητές πληροφορίες. Η εφαρμογή βάσεων δεδομένων μπορεί να γραφτεί από ένα προγραμματιστή ή να δημιουργηθεί ημι- αυτόματα από ένα DBMS (Σύστημα Διαχείρισης Βάσεων Δεδομένων), όπως είναι η Access. Επιπλέον περιλαμβάνει φόρμες και εκθέσεις που επιτρέπουν στους χρήστες να αλληλεπιδρούν με την βάση δεδομένων, με στόχο να επιτευχθεί πάντα κάποιος σκοπός.

4.1 Σχεδίαση του Περιβάλλοντος Χρήστη μιας Εφαρμογής

Η διαδικασία της ανάκλησης πληροφοριών πρέπει να είναι πολύ εύκολη και φυσική για τους χρήστες της εφαρμογής. Οι χρήστες μπορεί να έχουν διαφορετικές ανάγκες και η εφαρμογή θα πρέπει να ανταποκρίνεται στις συγκεκριμένες ανάγκες των χρηστών της. Αυτό το θέμα αφορά την εμφάνιση και την λειτουργικότητα των οθόνων του περιβάλλοντος χρήστη.

Όταν σχεδιάζουμε αυτό το περιβάλλον, πρέπει να σκεφτούμε πως δουλεύουν οι χρήστες και τι χρειάζονται. Πιθανόν να πρέπει να κατασκευαστεί πρωτότυπο του προτεινόμενου περιβάλλοντος χρήστη. Τα σχόλια των χρηστών σε αυτό το σημείο μπορεί να εξοικονομήσουν πολύ χρόνο.

Περιεχόμενα

40 4.2 Ανάπτυξη εφαρμογών προσανατολισμένων στον χρήστη

Η καλύτερη, πιο δυνατή, πιο λειτουργική, πιο γρήγορη και πιο φθηνή εφαρμογή του κόσμου δεν έχει αξία αν δεν την χρησιμοποιούν οι χρήστες της. Αν οι χρήστες θεωρούν ότι η εφαρμογή δεν τους είναι οικεία, ότι δεν ανταποκρίνεται καλά, ότι είναι δύσκολη στην χρήση, δεν θα τη χρησιμοποιήσουν. Αν δεν την χρησιμοποιήσουν η επένδυση που έκανε η εταιρία τους θα πάει χαμένη. Αυτό δεν είναι απλό θέμα. Έτσι είναι σημαντικό να μετρήσουμε τις ανάγκες, τις επιθυμίες και την προηγούμενη εμπειρία των χρηστών όταν σχεδιάζουμε μια εφαρμογή.

4.3 Παρέχοντας την επιθυμητή λειτουργικότητα

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

Η εμπειρία των σχεδιαστών της εφαρμογής πιθανόν να έχει λίγα κοινά στοιχεία με την εμπειρία των διάφορων ατόμων για τα οποία κατασκευάζεται η εφαρμογή, καθένας πιθανόν να κατανοήσει διαφορετικά την Αναφορά Απαιτήσεων. Οι διαφορές αυτές θα πρέπει να ελαχιστοποιηθούν ώστε να ικανοποιηθούν όλοι οι συμμετέχοντες. Η καλύτερη στιγμή για να γίνει κατανοητό τι περιμένουν οι χρήστες από την εφαρμογή είναι στην αρχή του έργου. Θα πρέπει να διευκρινιστούν ερωτήματα όπως

☺ Τι θέλουν ο πελάτης

☺ Γιατί θέλει ο πελάτης την εφαρμογή

☺ Τι περιμένει ο πελάτης ότι θα κάνει η εφαρμογή για αυτόν.

Περιεχόμενα

41 Αφού διευκρινιστεί το τι πρέπει να κάνει η εφαρμογή και το τι ενέργειες πρέπει να γίνουν για να παραδοθεί αυτή η λειτουργικότητα, θα πρέπει να σχεδιαστεί το περιβάλλον χρήστη λαμβάνοντας πάντα υπόψη τους συγκεκριμένους χρήστες. Ένα περιβάλλον χρήστη θα πρέπει να είναι κατανοητό για τα άτομα που θα το χρησιμοποιήσουν. Θα πρέπει να είναι λογικό από την δική τους πλευρά που μπορεί να μην συμπίπτει με την θεώρηση του σχεδιαστή της εφαρμογής. Επιπλέον ένα περιβάλλον που είναι απλό και λογικό για ένα χρήστη, μπορεί να είναι δύσκολο για έναν άλλο. Για αυτό είναι πολύ σημαντικό να γνωρίζουμε αυτούς που θα χρησιμοποιήσουν την εφαρμογή (την εμπειρία τους, τις προτιμήσεις τους κ.λπ.). Ακόμη, δεν θα πρέπει να παρουσιάζονται στον χρήστη περισσότερα από πέντε ή έξι διαφορετικά πράγματα στα οποία πρέπει να αποκρίνεται σε μια οθόνη. Είναι καλύτερο να χρησιμοποιηθούν πολλαπλές οθόνες παρέχοντας πρόσβαση σε αυτές με καρτέλες ή με κουμπιά πλοήγησης. Τέλος όσον αφορά τις φόρμες και τις εκθέσεις θα πρέπει να διαμορφώνονται έτσι ώστε οι χρήστες να μπορούν εύκολα να τις καταλαβαίνουν και να τις χρησιμοποιούν.

4.5 Δημιουργία αλληλεπίδρασης με τον χρήστη.

Εκτός από τις φόρμες και εκθέσεις που είναι οι κυριότεροι φορείς αλληλεπίδρασης χρήστη και βάσης δεδομένων μπορούν επιπλέον να χρησιμοποιηθούν :

Περιεχόμενα

42

Βοήθεια κατά την εισαγωγή δεδομένων : Μπορούμε να χρησιμοποιήσουμε μάσκες εισόδου σε μια φόρμα εισαγωγής δεδομένων ώστε να βοηθήσουμε τους χρήστες να εισάγουν σωστά και πλήρη δεδομένα.

Συναρτήσεις Msgbox και Inputbox : Οι συναρτήσεις Msgbox και Inputbox δημιουργούν προκαθορισμένα παράθυρα διαλόγου που παραμένουν ανοιχτά μέχρι οι χρήστες να απαντήσουν στο μήνυμα που εμφανίζεται. Και οι δυο συναρτήσεις μπορεί να επιστρέψουν μια απόκριση από τον χρήστη. Η συνάρτηση Msgbox εστιάζεται περισσότερο στην παρουσίαση πληροφοριών στον χρήστη. Μπορεί να επιστρέψει μια τιμή

 ανάλογα με την ενέργεια του χρήστη. Η συνάρτηση Inputbox έχει σχεδιαστεί για να συλλέγει μια τιμή από τον χρήστη για να ολοκληρώσει μια ενέργεια. Π.χ. μια συνάρτηση Inputbox μπορεί να χρησιμοποιηθεί για την εισαγωγή από τον χρήστη του κωδικού πελάτη όταν αυτός επιθυμεί να παρακολουθεί υπόλοιπα των πελατών της επιχείρησης.

Τα πλαίσια μηνυμάτων (Msgbox) μπορούν επιπλέον να μεταφράσουν λάθη κατά την εκτέλεση μιας διαδικασίας καθώς επίσης υπάρχει η δυνατότητα να συμπεριληφθούν πιο πληροφοριακά μηνύματα όταν συμβεί ένα λάθος που ο χρήστης μπορεί να διορθώσει.

Τέλος μπορούμε να συνδυάσουμε μια συνάρτηση Msgbox με την συνάρτηση Inputbox αν επιθυμούμε να επιβεβαιώνεται η είσοδος του χρήστη ή να εμφανίζεται το στοιχείο σε ένα άλλο περιβάλλον.

Περιεχόμενα

43

ScreenTips: Οι συμβουλές Οθόνης (ScreenTips) μπορούν να χρησιμοποιηθούν ως επεξηγήσεις προς τους χρήστες για τα στοιχεία ελέγχου του παραθύρου μιας φόρμας. Είναι οι βοηθητικές πληροφορίες που εμφανίζονται όταν αφήνουμε τον δείκτη του ποντικιού σε ένα στοιχείο ελέγχου.

5.Παρουσίαση Εφαρμογής (Φόρμες-SQL Ερωτήματα- Κώδικάς VBA-Αναφορές)

Ανοίγοντας την εφαρμογή μας ελαχιστοποιείται το παράθυρο της βάσης δεδομένων και εμφανίζεται ο πίνακας επιλογών με όνομα MF CommercialWorks Junior.

Περιεχόμενα

44 Ο πίνακας αυτός δημιουργήθηκε από το μενού Εργαλεία  Βοηθήματα για βάσεις δεδομένων  διαχείριση Πίνακα Επιλογών. Η μόνη διαδικασία που δημιουργήσαμε για τον συγκεκριμένο πίνακα επιλογών είναι για την ελαχιστοποίηση του παραθύρου της βάσης δεδομένων και τον ορισμό των στοιχείων της εταιρίας που χρησιμοποιεί την εφαρμογή μας πριν ακόμα εμφανιστεί ο συγκεκριμένος πίνακας επιλογών.

Ανοίγοντας λοιπόν για πρώτη φορά την εφαρμογή και εφόσον δεν υπάρχει εγγραφή στον πίνακα Η εταιρεία μου εμφανίζεται το μήνυμα :

Και πιέζοντας το πλήκτρο ΟΚ στο παραπάνω παράθυρο διαλόγου εμφανίζεται η φόρμα Η εταιρεία μου :

Περιεχόμενα

45 εμφανίζεται ο κεντρικός πίνακας επιλογών μας.

Η διαδικασία συμβάντος που ενσωματώνεται στην λειτουργική μονάδα της φόρμας του πίνακα επιλογών για τις παραπάνω ενέργειες είναι η ακόλουθη :

PRIVATE SUB FORM_OPEN(CANCEL AS INTEGER) DIM DBS AS DATABASE

DIM RST AS RECORDSET

ON ERROR GOTO FORM_OPEN_ERR

DOCMD.SELECTOBJECT ACFORM,"ΠΙΝΑΚΑΣ ΕΠΙΛΟΓΩΝ",TRUE

DOCMD.MINIMIZE

DOCMD.HOURGLASS FALSE

SET DBS =CURRENTDB()

SET RST = DBS.OPENRECORDSET("Η ΕΤΑΙΡΕΙΑ ΜΟΥ") IF RST.RECORDCOUNT =0THEN

RST.ADDNEW

RST![ΔΙΕΥΘΥΝΣΗ]=NULL RST.UPDATE

MSGBOX ΡΙΝ ΧΡΗΣΙΜΟΠΟΙΗΣΕΤΕ ΑΥΤΗ ΤΗΝ ΕΦΑΡΜΟΓΗ, ΠΡΕΠΕΙ ΝΑ ΟΡΙΣΕΤΕ ΤΗΝ ΕΠΩΝΥΜΙΑ ΤΗΣ ΕΤΑΙΡΕΙΑΣ, ΤΗ ΔΙΕΥΘΥΝΣΗ ΚΑΙ ΣΧΕΤΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣ."

DOCMD.OPENFORM ΕΤΑΙΡΕΙΑ ΜΟΥ",,,,, ACDIALOG

END IF RST.CLOSE DBS.CLOSE

ME.FILTER ="[ITEMNUMBER]=0AND[ARGUMENT]='ΠΡΟΕΠΙΛΟΓΗ'"

ME.FILTERON =TRUE FORM_OPEN_EXIT: EXIT SUB

End Sub

46 √ Πιέζοντας το πλήκτρο Καταχώρηση_Διαχείριση Παραγγελιών Πελάτη της φόρμας (πίνακα επιλογών) MF CommercialWorks Junior ανοίγει η φόρμα Παραγγελίες κατά πελάτη οπού από αυτήν τη φόρμα γίνεται ουσιαστικά όλη η διαχείριση των παραγγελιών των πελατών μας (Καταχώρηση, εμφάνιση λεπτομερειών, πληρωμές, τιμολόγια) καθώς και η καταχώρηση των ίδιων των πελατών.

√ Πιέζοντας το πλήκτρο Προεπισκόπηση εκθέσεων ανοίγει ο πίνακας επιλογών Αναφορές, ο οποίος δημιουργήθηκε από τα βοηθήματα για βάσεις δεδομένων της Access, που περιλαμβάνει τις εκθέσεις που δημιουργήσαμε για την εξαγωγή αποτελεσμάτων σχετικά με την κατάσταση των πωλήσεων μας σε ορισμένα χρονικά διαστήματα, την ενηλικίωση των υπολοίπων των παραγγελιών των πελατών μας και μια αναφορά με τα στοιχεία των πελατών μας (Ανάλυση πελάτη).

√ Πιέζοντας το πλήκτρο Παράμετροι Παραγγελιών ανοίγει ο πίνακας επιλογών Παράμετροι μέσω του οποίου μπορούμε να καταχωρήσουμε και να μεταβάλουμε πληροφορίες για υπαλλήλους, προϊόντα, τρόπους πληρωμής παραγγελιών, τρόπους αποστολής παραγγελιών, οι οποίες πληροφορίες αποτελούν είσοδο για διάφορα πεδία και στοιχεία ελέγχου κατά την καταχώρηση και επεξεργασία παραγγελιών, Πληρωμών και πληροφοριών αποστολής. Επιπλέον μέσα από τον πίνακα επιλογών Παράμετροι μπορούμε να πραγματοποιήσουμε μεταβολές των στοιχείων της εταιρείας μας πιέζοντας το πλήκτρο Η εταιρεία μου.

√ Τέλος, πιέζοντας το πλήκτρο Έξοδος από την Εφαρμογή του κεντρικού πίνακα επιλογών η εφαρμογή μας κλείνει.

Περιεχόμενα

47

Η φόρμα Υπάλληλοι : H προέλευση των εγγραφών της είναι τα πεδία του αντίστοιχου πίνακα.

Η φόρμα Προϊόντα : H προέλευση των εγγραφών της είναι τα πεδία του αντίστοιχου πίνακα.

Περιεχόμενα

48

Η φόρμα Τρόποι πληρωμής : H προέλευση των εγγραφών της είναι τα πεδία του αντίστοιχου πίνακα.

Η φόρμα Τρόποι αποστολής (προϊόντων): H προέλευση των εγγραφών της είναι τα πεδία του αντίστοιχου πίνακα.

Η Φόρμα Παραγγελίες κατά πελάτη :

Το περιβάλλον της αποτελείται από τα πεδία του πίνακα Πελατολόγιο, από την Δευτερεύουσα φόρμα ‘Παραγγελίες κατά πελάτη’ που περιλαμβάνει συγκεντρωτικά στοιχεία για κάθε παραγγελία που πραγματοποίησε ο πελάτης

Περιεχόμενα

49 να καταχωρήσουμε ή να δούμε αναλυτικά τα στοιχεία μιας συγκεκριμένης παραγγελίας (π.χ. ποια προϊόντα αγοράστηκαν, σε τι ποσότητα , έξοδα αποστολής κ.λπ), πληρωμές από το οποίο πραγματοποιούμε την πληρωμή των παραγγελιών ή προβάλουμε τα στοιχεία μιας ήδη καταχωρημένης πληρωμής και Προεπισκόπηση όπου μας δίνεται η δυνατότητα προεπισκόπησης και εκτύπωσης τιμολογίων.

Με το άνοιγμα της φόρμας Παραγγελίες κατά πελάτη καλούνται τα δεδομένα της Δευτερεύουσας φόρμας ‘Παραγγελίες κατά πελάτη’ η οποία περιλαμβάνει συγκεντρωτικά ανά πεδίο τα στοιχεία κάθε παραγγελίας του πελάτη στου οποίου την εγγραφή βρισκόμαστε.

Η προέλευση των εγγραφών της δευτερεύουσας φόρμας παραγγελίες κατά πελάτη προέρχεται από το ερώτημα :

Περιεχόμενα

50 Οι συνολικές πληρωμές αποτελούν υποερώτημα το οποίο όταν καλείται επιστρέφει τις συνολικές πληρωμές ανά κωδικό παραγγελίας.

◊ Από την φόρμα παραγγελίες κατά πελάτη γίνεται και καταχώρηση των πελατών μας. Όταν επιθυμούμε να επεξεργαστούμε τις παραγγελίες ενός συγκεκριμένου πελάτη βρίσκουμε την εγγραφή της φόρμας Παραγγελίες κατά πελάτη οπού στο πάνω μέρος της αναγράφονται τα στοιχεία αυτού του πελάτη.

Περιεχόμενα SELECTDISTINCTROWΠΑΡΑΓΓΕΛΙΕΣΩΔΠΑΡΑΓΓΕΛΙΑΣ,

ΠΑΡΑΓΓΕΛΙΕΣΩΔΑΓΟΡΑΣΤΗΑΡΑΓΓΕΛΙΕΣ.[ΗΜ/ΝΙΑΠΑΡΑΓΓΕΛΙΑΣ], ΠΑΡΑΓΓΕΛΙΕΣΡΕΩΣΗΑΠΟΣΤΟΛΗΣΑΡΑΓΓΕΛΙΕΣΟΣΟΣΤΟΦΠΑ,

SUM(CLNG(NZ([ΠΟΣΟΤΗΤΑ]*[ΤΙΜΗΜΟΝΑΔΑΣ]*(1-[ΈΚΠΤΩΣΗ]))*100)/100)AS ΜΕΡΙΚΟΣΥΝΟΛΟΑΡΑΓΓΕΛΙΕΣ.[ΗΜ/ΝΙΑΑΠΟΣΤΟΛΗΣ],[ΣΥΝΟΛΟ ΠΛΗΡΩΜΩΝ].[ΣΥΝ ΠΛΗΡΩΜΕΣ]AS[ΣΥΝ ΠΛΗΡΩΜΕΣ]

FROM(ΠΑΡΑΓΓΕΛΙΕΣ LEFTJOIN[ΣΥΝΟΛΟ ΠΛΗΡΩΜΩΝ]ON

ΠΑΡΑΓΓΕΛΙΕΣΩΔΠΑΡΑΓΓΕΛΙΑΣ =[ΣΥΝΟΛΟ ΠΛΗΡΩΜΩΝ].ΚΩΔΠΑΡΑΓΓΕΛΙΑΣ) LEFTJOIN[ΛΕΠΤΟΜΕΡΕΙΕΣ ΠΑΡΑΓΓΕΛΙΩΝ]ONΠΑΡΑΓΓΕΛΙΕΣΩΔΠΑΡΑΓΓΕΛΙΑΣ

=[ΛΕΠΤΟΜΕΡΕΙΕΣ ΠΑΡΑΓΓΕΛΙΩΝ].ΚΩΔΠΑΡΑΓΓΕΛΙΑΣ

GROUPBYΠΑΡΑΓΓΕΛΙΕΣΩΔΠΑΡΑΓΓΕΛΙΑΣΑΡΑΓΓΕΛΙΕΣΩΔΑΓΟΡΑΣΤΗ, ΠΑΡΑΓΓΕΛΙΕΣ.[ΗΜ/ΝΙΑΠΑΡΑΓΓΕΛΙΑΣ],ΠΑΡΑΓΓΕΛΙΕΣΡΕΩΣΗΑΠΟΣΤΟΛΗΣ, ΠΑΡΑΓΓΕΛΙΕΣΟΣΟΣΤΟΦΠΑ,ΠΑΡΑΓΓΕΛΙΕΣ.[ΗΜ/ΝΙΑΑΠΟΣΤΟΛΗΣ],[ΣΥΝΟΛΟ ΠΛΗΡΩΜΩΝ].[ΣΥΝ ΠΛΗΡΩΜΕΣ];

SELECTDISTINCTROWΠΛΗΡΩΜΕΣΩΔΠΑΡΑΓΓΕΛΙΑΣ, SUMΛΗΡΩΜΕΣΟΣΟΠΛΗΡΩΜΗΣ)AS[ΣΥΝ ΠΛΗΡΩΜΕΣ]

FROMΠΛΗΡΩΜΕΣ

GROUPBYΠΛΗΡΩΜΕΣΩΔΠΑΡΑΓΓΕΛΙΑΣ;

51 Πιο αναλυτικά για να καταχωρήσουμε την παραγγελία ενός πελάτη θα πρέπει οπωσδήποτε στο πάνω μέρος της συγκεκριμένης φόρμας να έχουμε ορίσει τα στοιχεία του πελάτη μας και αυτό γιατί κάθε παραγγελία που καταχωρούμε πιέζοντας το πλήκτρο Παραγγελίες σχετίζεται με ένα συγκεκριμένο κωδικό Πελάτη.

◊ Αν δεν έχουμε ορίσει τα στοιχεία του πελάτη μας στο πάνω μέρος της φόρμας Παραγγελίες κατά πελάτη και προσπαθήσουμε να καταχωρήσουμε παραγγελία θα εμφανιστεί το μήνυμα :

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

Η διαδικασία συμβάντος για την εκτέλεση των παραπάνω περιλαμβάνεται στην λειτουργική μονάδα της φόρμας Παραγγελίες κατά πελάτη και είναι η εξής :

Περιεχόμενα

52 Το περιβάλλον της φόρμας παραγγελίες όπως προαναφέρθηκε σχετίζεται άμεσα με τον κωδικό του πελάτη και συγκεκριμένα τον κωδικό του πελάτη του οποίου την εγγραφή έχουμε ανοιχτή στην φόρμα Παραγγελίες κατά πελάτη και η προέλευση των εγγραφών του προέρχεται από το ερώτημα :

◊ Αν πρόκειται για την πρώτη παραγγελία του πελάτη πιέζοντας το πλήκτρο παραγγελίες ανοίγει η φόρμα παραγγελίες σε κατάσταση προσθήκης.

Περιεχόμενα PRIVATE SUB ΠΑΡΑΓΓΕΛΙΕΣ_CLICK()

ON ERROR GOTO ERRΑΡΑΓΓΕΛΙΕΣ_CLICK

IF ISNULL(ME![ΚΩΔΑΓΟΡΑΣΤΗ])THEN

MSGBOX ΡΙΣΤΕ ΤΙΣ ΠΛΗΡΟΦΟΡΙΕΣ ΓΙΑ ΤΟΝ ΠΕΛΑΤΗ ΠΡΙΝ ΟΡΙΣΕΤΕ ΤΗΝ ΠΑΡΑΓΓΕΛΙΑ"

ELSE

DOCMD.DOMENUITEM ACFORMBAR, ACRECORDSMENU, ACSAVERECORD,,

ACMENUVER70

DOCMD.OPENFORM ΑΡΑΓΓΕΛΙΕΣ",,,, ACEDIT

END IF END SUB

SELECTDISTINCTROWΠΑΡΑΓΓΕΛΙΕΣ.*, ΠΕΛΑΤΟΛΟΓΙΟΠΩΝΥΜΙΑΕΤΑΙΡΕΙΑΣ

FROMΠΕΛΑΤΟΛΟΓΙΟ INNERJOINΠΑΡΑΓΓΕΛΙΕΣ ON

ΠΕΛΑΤΟΛΟΓΙΟΩΔΑΓΟΡΑΣΤΗ ΑΡΑΓΓΕΛΙΕΣΩΔΑΓΟΡΑΣΤΗ

WHERE(((ΠΑΡΑΓΓΕΛΙΕΣΩΔΑΓΟΡΑΣΤΗ)=[FORMS]![ΠΑΡΑΓΓΕΛΙΕΣ ΚΑΤΑ ΠΕΛΑΤΗ]![ΚΩΔΑΓΟΡΑΣΤΗ]));

53

◊ Αν θέλουμε να δούμε τα στοιχεία μιας ήδη καταχωρημένης παραγγελίας του τότε πρέπει να επιλέξουμε την συγκεκριμένη παραγγελία της οποίας τα στοιχεία θέλουμε να εμφανίσουμε ( από την Δευτερεύουσα φόρμα ‘Παραγγελίες κατά πελάτη) και να πιέσουμε το πλήκτρο Παραγγελίες.

Η διαδικασία συμβάντος που εκτελείται για την παραπάνω ενέργεια του χρήστη της εφαρμογής ενσωματώνεται στην λειτουργική μονάδα της φόρμας Παραγγελίες είναι η ακόλουθη :

© Το περιβάλλον της φόρμας Παραγγελίες αποτελείται από πεδία του πίνακα παραγγελίες, από την Δευτερεύουσα φόρμα ‘Ανάλυση παραγγελιών’ που περιλαμβάνει τις λεπτομέρειες της συγκεκριμένης παραγγελίας που ανοίγουμε (σύμφωνα με τον κωδικό παραγγελίας) και τον υπολογισμό του πεδίου μερικό σύνολο καθώς και υπολογιζόμενα πεδία με τα οικονομικά στοιχεία της παραγγελίας.

Η φόρμα παραγγελίες :

PRIVATE SUB FORM_ACTIVATE()

ON ERROR GOTO ERR_FORM_ACTIVATE

ME.REQUERY

IF ISLOADED("ΠΑΡΑΓΓΕΛΊΕΣ ΚΑΤΆ ΠΕΛΆΤΗ")THEN

IF FORMS![ΠΑΡΑΓΓΕΛΊΕΣ ΚΑΤΆ ΠΕΛΆΤΗ]![ΔΕΥΤΕΡΕΎΟΥΣΑ ΦΌΡΜΑ

ΑΡΑΓΓΕΛΊΕΣ ΚΑΤΆ ΠΕΛΑΤΗ'].FORM.RECORDSETCLONE.RECORDCOUNT >0THEN

DOCMD.GOTOCONTROL ΩΔΠΑΡΑΓΓΕΛΊΑΣ"

DOCMD.FINDRECORD FORMS![ΠΑΡΑΓΓΕΛΙΕΣ ΚΑΤΑ ΠΕΛΑΤΗ]![ΔΕΥΤΕΡΕΥΟΥΣΑ ΦΟΡΜΑ ΑΡΑΓΓΕΛΙΕΣ ΚΑΤΑ ΠΕΛΑΤΗ'].FORM![ΚΩΔΠΑΡΑΓΓΕΛΙΑΣ]

END IF

END IF

END SUB

54

© Η προέλευση των εγγραφών της δευτερεύουσας φόρμας ‘Ανάλυση παραγγελιών’ που περιλαμβάνει όπως προαναφέρθηκε τις λεπτομέρειες του συγκεκριμένου κωδικού παραγγελίας που επεξεργαζόμαστε προέρχεται από το ερώτημα :

© Αν διαγραφή η μια από τις εγγραφές της για την ανανέωση των δεδομένων της και κατ’ επέκταση τον σωστό υπολογισμό των οικονομικών στοιχείων της παραγγελίας ξανακαλούμε το ερώτημα της προέλευσης των εγγραφών της με την διαδικασία η οποία ενσωματώνεται στην λειτουργική μονάδα της και είναι η εξής :

Περιεχόμενα SELECTDISTINCTROW[ΛΕΠΤΟΜΕΡΕΙΕΣ ΠΑΡΑΓΓΕΛΙΩΝ].*,

CLNG(([ΠΟΣΟΤΗΤΑ]*[ΤΙΜΗΜΟΝΑΔΑΣ])*(1-[ΈΚΠΤΩΣΗ])*100)/100AS [ΜΕΡ ΣΥΝΟΛΟ]

FROM[ΛΕΠΤΟΜΕΡΕΙΕΣ ΠΑΡΑΓΓΕΛΙΩΝ];

55

© Ακόμη όταν σε μια νέα εγγραφή επιλέγουμε στην στήλη προϊόν ένα από τα προϊόντα μας αυτόματα στην στήλη Τιμή μονάδος εισάγεται η τιμή του συγκεκριμένου προϊόντος. Η διαδικασία αυτή ενσωματώνεται στην λειτουργική μονάδα της φόρμας Δευτερεύουσα φόρμα ‘Ανάλυση παραγγελιών‘ και είναι η εξής :

© Μπορούμε να ανοίξουμε την φόρμα Παραγγελίες και να εμφανίσουμε τις λεπτομέρειες μιας ήδη καταχωρημένης παραγγελίας κάνοντας διπλό κλικ σε μια από τις στήλες Κωδικός Παραγγελίας, Ημερομηνία Παραγγελίας, Αποστολή, Συνολικές πωλήσεις και οφειλόμενα της φόρμας Δευτερεύουσα φόρμα ‘Παραγγελίες κατά πελάτη’ που είναι ενσωματωμένη στην φόρμα Παραγγελίες κατά πελάτη. Οι διαδικασίες συμβάντος για τις παραπάνω ενέργειες του χρήστη ενσωματώνονται στην λειτουργική μονάδα της Δευτερεύουσας φόρμας ‘Παραγγελίες κατά πελάτη είναι οι εξής :

Περιεχόμενα PRIVATE SUB FORM_AFTERDELCONFIRM(STATUS AS INTEGER)

FORMS![ΠΑΡΑΓΓΕΛΙΕΣ]![ΔΕΥΤΕΡΕΥΟΥΣΑ ΦΟΡΜΑ ΝΑΛΥΣΗ

ΠΑΡΑΓΓΕΛΙΩΝ’].REQUERY

END SUB

PRIVATE SUB ΚΩΔΠΡΟΪΌΝΤΟΣ_AFTERUPDATE()

ME![ΤΙΜΉΜΟΝΆΔΑΣ]=ME![ΚΩΔΠΡΟΪΌΝΤΟΣ].COLUMN(2) END SUB

56

© Όταν καταχωρούμε μια νέα παραγγελία για έναν πελάτη μας αν στα πεδία Υπάλληλος, αποστολή μέσω και στην στήλη προϊόν της Δευτερεύουσας φόρμας ‘Ανάλυση παραγγελιών’ πληκτρολογήσουμε με το χέρι, δηλαδή χωρίς να πιέσουμε το βελάκι του σύνθετου πλαισίου και να αναζητήσουμε τον

Περιεχόμενα PRIVATE SUB ΠΡΟΒΟΛΗΠΑΡΑΓΓΕΛΙΑΣ()

ON ERROR GOTO ERRΡΟΒΟΛΗΠΑΡΑΓΓΕΛΙΑΣ

DOCMD.OPENFORM ΑΡΑΓΓΕΛΙΕΣ"

EXITΡΟΒΟΛΗΠΑΡΑΓΓΕΛΙΑΣ: EXIT SUB

END SUB

PRIVATE SUB ΚΩΔΠΑΡΑΓΓΕΛΙΑΣ_DBLCLICK(CANCEL AS INTEGER) ΠΡΟΒΟΛΗΠΑΡΑΓΓΕΛΙΑΣ

END SUB

PRIVATE SUB ΗΜ_ΝΙΑΠΑΡΑΓΓΕΛΙΑΣ_DBLCLICK(CANCEL AS INTEGER) ΠΡΟΒΟΛΗΠΑΡΑΓΓΕΛΙΑΣ

END SUB

PRIVATE SUB ΗΜ_ΝΙΑΑΠΟΣΤΟΛΗΣ_DBLCLICK(CANCEL AS INTEGER) ΠΡΟΒΟΛΗΠΑΡΑΓΓΕΛΙΑΣ

END SUB

PRIVATE SUB ΣΥΝ_ΠΩΛΗΣΕΙΣ_DBLCLICK(CANCEL AS INTEGER) ΠΡΟΒΟΛΗΠΑΡΑΓΓΕΛΙΑΣ

END SUB

57 υπάλληλο, τον τρόπο αποστολής και το προϊόν, τον κωδικό ή το όνομα ενός Υπαλλήλου, ενός προϊόντος και ενός τρόπου αποστολής αντίστοιχα που δεν υπάρχουν εμφανίζεται το μήνυμα:

√ Κάνοντας διπλό κλικ στα αντίστοιχα πεδία ανοίγουν οι φόρμες των υπαλλήλων, των τρόπων αποστολής και των προϊόντων σε κατάσταση προσθήκης.

Οι διαδικασίες που αφορούν τους υπαλλήλους και τον τρόπο πληρωμής ενσωματώνονται στην λειτουργική μονάδα της φόρμας Παραγγελίες ενώ η διαδικασία που αφορά τα προϊόντα ανήκει στην λειτουργική μονάδα της φόρμας Δευτερεύουσα φόρμα ‘Ανάλυση παραγγελιών’ και είναι οι εξής :

Περιεχόμενα

58 Περιεχόμενα PRIVATE SUB ΚΩΔΤΡΌΠΟΥΑΠΟΣΤΟΛΉΣ_NOTINLIST(NEWDATA AS STRING,

RESPONSE AS INTEGER)

MSGBOX ΑΝΤΕ ΔΙΠΛΟ ΚΛΙΚ ΣΤΟ ΠΕΔΙΟ ΑΥΤΟ ΓΙΑ ΝΑ ΠΡΟΣΘΕΣΕΤΕ ΔΕΔΟΜΕΝΑ ΣΤΗ ΛΙΣΤΑ."

RESPONSE = ACDATAERRCONTINUE

END SUB

PRIVATE SUB ΚΩΔΤΡΌΠΟΥΑΠΟΣΤΟΛΉΣ_DBLCLICK(CANCEL AS INTEGER) ON ERROR GOTO ERRΩΔΤΡΌΠΟΥΑΠΟΣΤΟΛΉΣ_DBLCLICK

DIM LNGSHIPPINGMETHODIDAS LONG

IF ISNULL(ME![ΚΩΔΤΡΌΠΟΥΑΠΟΣΤΟΛΉΣ])THEN

ME![ΚΩΔΤΡΌΠΟΥΑΠΟΣΤΟΛΉΣ].TEXT =""

ELSE

LNGSHIPPINGMETHODID=ME![ΚΩΔΤΡΟΠΟΥΑΠΟΣΤΟΛΗΣ] ME![ΚΩΔΤΡΟΠΟΥΑΠΟΣΤΟΛΗΣ]=NULL

END IF

DOCMD.OPENFORM ΡΌΠΟΙ ΑΠΟΣΤΟΛΉΣ",,,,, ACDIALOG,"GOTONEW"

ME![ΚΩΔΤΡΌΠΟΥΑΠΟΣΤΟΛΉΣ].REQUERY

IF LNGSHIPPINGMETHODID<>0THEN ME![ΚΩΔΤΡΌΠΟΥΑΠΟΣΤΟΛΉΣ]=

LNGSHIPPINGMETHODID

EXITΩΔΤΡΌΠΟΥΑΠΟΣΤΟΛΉΣ_DBLCLICK: EXIT SUB

END SUB

59 Περιεχόμενα PRIVATE SUB ΚΩΔΥΠΑΛΛΉΛΟΥ_NOTINLIST(NEWDATA AS STRING,RESPONSE AS INTEGER)

MSGBOX ΑΝΤΕ ΔΙΠΛΟ ΚΛΙΚ ΣΤΟ ΠΕΔΙΟ ΑΥΤΟ ΓΙΑ ΝΑ ΠΡΟΣΘΕΣΕΤΕ ΔΕΔΟΜΕΝΑ ΣΤΗ ΛΙΣΤΑ."

RESPONSE = ACDATAERRCONTINUE END SUB

PRIVATE SUB ΚΩΔΥΠΑΛΛΉΛΟΥ_DBLCLICK(CANCEL AS INTEGER) ON ERROR GOTO ERRΩΔΥΠΑΛΛΉΛΟΥ_DBLCLICK

DIM LNGPRODUCTIDAS LONG

IF ISNULL(ME![ΚΩΔΥΠΑΛΛΉΛΟΥ])THEN

ME![ΚΩΔΥΠΑΛΛΉΛΟΥ].TEXT =""

ELSE

LNGPRODUCTID=ME![ΚΩΔΥΠΑΛΛΉΛΟΥ] ME![ΚΩΔΥΠΑΛΛΉΛΟΥ]=NULL

END IF

DOCMD.OPENFORM ΠΆΛΛΗΛΟΙ",,,,, ACDIALOG,"GOTONEW"

ME![ΚΩΔΥΠΑΛΛΉΛΟΥ].REQUERY

IF LNGPRODUCTID<>0THEN ME![ΚΩΔΥΠΑΛΛΉΛΟΥ]= LNGPRODUCTID EXITΩΔΥΠΑΛΛΉΛΟΥ_DBLCLICK:

EXIT SUB

END SUB

60

Περιεχόμενα PRIVATE SUB ΚΩΔΠΡΟΪΌΝΤΟΣ_NOTINLIST(NEWDATA AS STRING,

RESPONSE AS INTEGER)

MSGBOX ΑΝΤΕ ΔΙΠΛΟ ΚΛΙΚ ΣΤΟ ΠΕΔΙΟ ΑΥΤΟ ΓΙΑ ΝΑ ΠΡΟΣΘΕΣΕΤΕ ΔΕΔΟΜΕΝΑ ΣΤΗ ΛΙΣΤΑ."

RESPONSE = ACDATAERRCONTINUE

END SUB

PRIVATE SUB ΚΩΔΠΡΟΪΟΝΤΟΣ_AFTERUPDATE()

ME![ΤΙΜΗΜΟΝΑΔΑΣ]=ME![ΚΩΔΠΡΟΪΟΝΤΟΣ].COLUMN(2) END SUB

PRIVATE SUB ΚΩΔΠΡΟΪΌΝΤΟΣ_DBLCLICK(CANCEL AS INTEGER) ON ERROR GOTO ERRΩΔΠΡΟΪΌΝΤΟΣ_DBLCLICK

DIM LNGPRODUCTIDAS LONG

IF ISNULL(ME![ΚΩΔΠΡΟΪΌΝΤΟΣ])THEN ME![ΚΩΔΠΡΟΪΌΝΤΟΣ].TEXT =""

ELSE

LNGPRODUCTID=ME![ΚΩΔΠΡΟΪΌΝΤΟΣ] ME![ΚΩΔΠΡΟΪΌΝΤΟΣ]=NULL

END IF

DOCMD.OPENFORM ΡΟΪΌΝΤΑ",,,,, ACDIALOG,"GOTONEW"

MEΩΔΠΡΟΪΌΝΤΟΣ.REQUERY

IF LNGPRODUCTID<>0THEN ME![ΚΩΔΠΡΟΪΌΝΤΟΣ]= LNGPRODUCTID EXITΩΔΠΡΟΪΌΝΤΟΣ_DBLCLICK:

EXIT SUB

EXIT SUB

61

© Επιπλέον όταν εισάγουμε μια νέα παραγγελία στο πεδίο Ημερ.Παραγγελίας εισάγεται αυτόματα η ημερομηνία του συστήματος. Η διαδικασία αυτή ανήκει στη λειτουργική μονάδα της φόρμας Παραγγελίες και είναι η ακόλουθη :

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

√ Με την παραπάνω ενέργεια ανοίγει η φόρμα Πληροφορίες παράδοσης όπου στον κωδικό παραγγελίας της φόρμας αυτής εισάγεται αυτόματα ο κωδικός της παραγγελίας που επεξεργαζόμαστε Η διαδικασία αυτή ανήκει στην λειτουργική μονάδα της φόρμας Παραγγελίες και είναι η εξής :

PRIVATE SUB ΔΕΥΤΕΡΕΥΟΥΣΑ_ΦΟΡΜΑ__ΑΝΑΛΥΣΗ_ΠΑΡΑΓΓΕΛΙΩΝ__ENTER() ON ERROR GOTO

ERRΕΥΤΕΡΕΥΟΥΣΑ_ΦΟΡΜΑ__ΑΝΑΛΥΣΗ_ΠΑΡΑΓΓΕΛΙΩΝ__ENTER IF ISNULL(ME![ΚΩΔΠΑΡΑΓΓΕΛΙΑΣ])THEN

ME![ΗΜ/ΝΙΑΠΑΡΑΓΓΕΛΙΑΣ]=DATE

DOCMD.DOMENUITEM ACFORMBAR, ACRECORDSMENU, ACSAVERECORD,,

ACMENUVER70 END IF

EXITΕΥΤΕΡΕΥΟΥΣΑ_ΦΟΡΜΑ__ΑΝΑΛΥΣΗ_ΠΑΡΑΓΓΕΛΙΩΝ__ENTER: EXIT SUB

EXIT SUB

62 Το περιβάλλον της φόρμας Πληροφορίες αποστολής αποτελείται από τα πεδία του πίνακα Παραγγελίες που αποτελούν πληροφορίες αποστολής και στις ιδιότητες της έχει οριστεί ως φίλτρο ο κωδικός παραγγελίας.

Η φόρμα Πληροφορίες αποστολής : PRIVATE SUB ΕΠΙΛΟΓΈΣΑΠΟΣΤΟΛΉΣ_CLICK()

ΟN ERROR GOTO ERRΠΙΛΟΓΈΣΑΠΟΣΤΟΛΉΣ_CLICK

DOCMD.DOMENUITEM ACFORMBAR, ACRECORDSMENU, ACSAVERECORD,,

ACMENUVER70

DOCMD.OPENFORM ΛΗΡΟΦΟΡΙΕΣ ΑΠΟΣΤΟΛΗΣ",,,"[ΚΩΔΠΑΡΑΓΓΕΛΙΑΣ]=

FORMS![ΠΑΡΑΓΓΕΛΙΕΣ]![ΚΩΔΠΑΡΑΓΓΕΛΙΑΣ]",, ACDIALOG EXITΠΙΛΟΓΕΣΑΠΟΣΤΟΛΗΣ_CLICK:

EXIT SUB

END SUB

63

© Τέλος όσο αναφορά την φόρμα Παραγγελίες αν προσπαθήσουμε να την ανοίξουμε από το παράθυρο της βάσης δεδομένων χωρίς να είναι ανοιχτή η φόρμα Παραγγελίες κατά πελάτη θα εμφανιστούν τα μηνύματα:

Αυτό συμβαίνει επειδή ανοίγοντας την φόρμα Παραγγελίες σύμφωνα με αυτά που έχουμε ορίσει στην προέλευση των εγγραφών της προσπαθεί να ανοίξει μια εγγραφή του πίνακα Παραγγελίες όπου ο κωδικός πελάτη της είναι ίδιος με τον κωδικό πελάτη της φόρμας Παραγγελίες κατά πελάτη, αλλά επειδή η φόρμα Παραγγελίες κατά πελάτη είναι κλειστή και δεν μπορεί να βρεθεί το στοιχείο ελέγχου Φόρμες!Παραγγελίεςκατάπελάτη!ΚωδΑγοραστή εμφανίζεται το πρώτο μήνυμα.

64 Η διαδικασία για την εμφάνιση του δεύτερου μηνύματος ενσωματώνεται στην λειτουργική μονάδα της φόρμας Παραγγελίες και είναι η ακόλουθη :

Η φόρμα Πληρωμές :

PRIVATE SUB FORM_OPEN(CANCEL AS INTEGER) IF NOT ISLOADED("ΠΑΡΑΓΓΕΛΙΕΣ ΚΑΤΑ ΠΕΛΑΤΗ")THEN

MSGBOX ΙΑ ΝΑ ΑΝΟΙΞΕΤΕ ΤΗ ΦΟΡΜΑ ΑΡΑΓΓΕΛΙΕΣ', ΠΑΤΗΣΤΕ ΤΟ ΚΟΥΜΠΙ

ΑΡΑΓΓΕΛΙΕΣ' ΤΗΣ ΦΟΡΜΑΣ ΑΡΑΓΓΕΛΙΕΣ ΚΑΤΑ ΠΕΛΑΤΗ'."

CANCEL =TRUE END IF

END SUB

65

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

☼ Αν προσπαθήσουμε να ανοίξουμε την φόρμα αυτή από το παράθυρο της βάσης δεδομένων χωρίς να είναι ανοιχτή η φόρμα Παραγγελίες κατά πελάτη και κατ’ επέκταση και η Δευτερεύουσα φόρμα ‘Παραγγελίες κατά πελάτη’ θα εμφανιστούν τα μηνύματα :

Αυτό συμβαίνει γιατί η προέλευση των εγγραφών της συγκεκριμένης φόρμας συνδέεται άμεσα με ένα συγκεκριμένο κωδικό παραγγελίας και προέρχεται από το ερώτημα :

Περιεχόμενα

66 Δηλαδή όταν δεν είναι ανοιχτή η φόρμα παραγγελίες κατά πελάτη δεν μπορεί να βρεθεί η παράμετρος :

[forms]![Παραγγελίες κατά πελάτη]![Δευτερεύουσα φόρμα 'Παραγγελίες κατά πελάτη'].[form]![ΚωδΠαραγγελίας] και εμφανίζεται το πρώτο μήνυμα.

Για την εμφάνιση του δεύτερου μηνύματος η διαδικασία συμβάντος ενσωματώνεται στην λειτουργική μονάδα της φόρμας Πληρωμές.

☼ Αν δεν υπάρχει καταχωρημένη παραγγελία και πιέσουμε το πλήκτρο πληρωμές εμφανίζεται το μήνυμα :

Περιεχόμενα SELECTDISTINCTROWΠΛΗΡΩΜΕΣ.*

FROMΠΛΗΡΩΜΕΣ

WHERE(((ΠΛΗΡΩΜΕΣΩΔΠΑΡΑΓΓΕΛΙΑΣ)=[FORMS]![ΠΑΡΑΓΓΕΛΙΕΣ ΚΑΤΑ ΠΕΛΑΤΗ]![ΔΕΥΤΕΡΕΥΟΥΣΑ ΦΟΡΜΑ ΑΡΑΓΓΕΛΙΕΣ ΚΑΤΑ

ΠΕΛΑΤΗ'].[FORM]![ΚΩΔΠΑΡΑΓΓΕΛΙΑΣ]))

PRIVATE SUB FORM_OPEN(CANCEL AS INTEGER) IF NOT ISLOADED("ΠΑΡΑΓΓΕΛΙΕΣ ΚΑΤΑ ΠΕΛΑΤΗ")THEN

MSGBOX ΙΑ ΝΑ ΑΝΟΙΞΕΤΕ ΤΗ ΦΟΡΜΑ ΛΗΡΩΜΕΣ', ΠΙΕΣΤΕ ΤΟ ΚΟΥΜΠΙ

ΛΗΡΩΜΕΣ' ΤΗΣ ΦΟΡΜΑΣ ΑΡΑΓΓΕΛΙΕΣ ΚΑΤΑ ΠΕΛΑΤΗ'."

CANCEL =TRUE

END IF

END SUB

67 διαφορετικά ανοίγει η φόρμα πληρωμές για την συγκεκριμένη παραγγελία που έχουμε επιλεγμένη στην δευτερεύουσα φόρμα ‘Παραγγελίες κατά πελάτη’ και στο πεδίο κωδικός Παραγγελίας εισάγεται αυτόματα ο κωδικός της παραγγελίας την οποία επεξεργαζόμαστε.

Η διαδικασία συμβάντος ενσωματώνεται στην λειτουργική μονάδα της φόρμας Παραγγελίες κατά πελάτη.

68

☼ Επιπλέον μπορούμε να ανοίξουμε την φόρμα πληρωμές κάνοντας διπλό κλικ στην στήλη Συνολικές πληρωμές της φόρμας Δευτερεύουσα φόρμα

‘Παραγγελίες κατά πελάτη’

Η διαδικασία συμβάντος ενσωματώνεται στην λειτουργική μονάδα της φόρμας Δευτερεύουσα φόρμα ‘Παραγγελίες κατά πελάτη’.

PRIVATE SUB ΠΛΗΡΩΜΕΣ_CLICK()

ON ERROR GOTO ERRΛΗΡΩΜΕΣ_CLICK

IF FORMS![ΠΑΡΑΓΓΕΛΙΕΣ ΚΑΤΑ ΠΕΛΑΤΗ]![ΔΕΥΤΕΡΕΥΟΥΣΑ ΦΟΡΜΑ ΑΡΑΓΓΕΛΙΕΣ ΚΑΤΑ ΠΕΛΑΤΗ'].FORM.RECORDSETCLONE.RECORDCOUNT =0THEN

MSGBOX ΡΙΣΤΕ ΠΛΗΡΟΦΟΡΙΕΣ ΓΙΑ ΤΗΝ ΠΑΡΑΓΓΕΛΙΑ ΠΡΙΝ ΠΡΟΒΑΛΕΤΕ ΤΗ ΦΟΡΜΑ

ΛΗΡΩΜΕΣ'"

ELSE

DOCMD.DOMENUITEM ACFORMBAR, ACRECORDSMENU, ACSAVERECORD,,

ACMENUVER70

DOCMD.OPENFORM ΛΗΡΩΜΕΣ",,,"[ΚΩΔΠΑΡΑΓΓΕΛΙΑΣ]=FORMS![ΠΑΡΑΓΓΕΛΙΕΣ ΚΑΤΑ ΠΕΛΑΤΗ]![ΔΕΥΤΕΡΕΥΟΥΣΑ ΦΟΡΜΑ ΑΡΑΓΓΕΛΙΕΣ ΚΑΤΑ

ΠΕΛΑΤΗ'].FORM![ΚΩΔΠΑΡΑΓΓΕΛΙΑΣ]"

END IF

EXITΛΗΡΩΜΕΣ_CLICK: EXIT SUB

END SUB

PRIVATE SUB ΣΥΝ_ΠΛΗΡΩΜΕΣ_DBLCLICK(CANCEL AS INTEGER)

DOCMD.OPENFORM ΛΗΡΩΜΕΣ",,,"[ΠΛΗΡΩΜΕΣ]![ΚΩΔΠΑΡΑΓΓΕΛΙΑΣ]="&

ME![ΚΩΔΠΑΡΑΓΓΕΛΙΑΣ] END SUB

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

Η διαδικασία συμβάντος ενσωματώνεται στην λειτουργική μονάδα της φόρμας Πληρωμές.

☼ Αν ο τρόπος πληρωμής που επιλέγουμε στο πεδίο Πληρωμή σε της φόρμας Πληρωμές είναι πιστωτική κάρτα εισάγεται αυτόματα στο πεδίο κάτοχος της ίδιας φόρμας το επώνυμο και το όνομα του Πελάτη της παραγγελίας που επεξεργαζόμαστε και η προέλευση των στοιχείων αυτών είναι τα πεδία ΕπώνυμοΕπαφής και ΌνομαΕπαφής της φόρμας Παραγγελίες κατά πελάτη (Λεζάντες Όνομα και Επώνυμο) αντίστοιχα.

PRIVATE SUB FORM_BEFOREINSERT(CANCEL AS INTEGER) ON ERROR GOTO ERR_FORM_BEFOREINSERT

ME![ΗΜ/ΝΙΑΠΛΗΡΩΜΗΣ]=DATE

ME![ΠΟΣΟΠΛΗΡΩΜΗΣ]=[FORMS]![ΠΑΡΑΓΓΕΛΙΕΣ ΚΑΤΑ ΠΕΛΑΤΗ]![ΔΕΥΤΕΡΕΥΟΥΣΑ ΦΟΡΜΑ ΑΡΑΓΓΕΛΙΕΣ ΚΑΤΑ ΠΕΛΑΤΗ'].FORM![ΟΦΕΙΛΟΜΕΝΑ]

EXIT_FORM_BEFOREINSERT: EXIT SUB

END SUB

70 Πληρωμές.

☼ Όταν καταχωρούμε τις πληροφορίες μιας πληρωμής για έναν πελάτη μας αν στο πεδίο Πληρωμή σε πληκτρολογήσουμε με το χέρι, δηλαδή χωρίς να πιέσουμε το βελάκι του σύνθετου πλαισίου και να αναζητήσουμε τον τρόπο πληρωμής, του κωδικό ή την περιγραφή ενός τρόπου πληρωμής που δεν υπάρχει εμφανίζεται το μήνυμα :

Περιεχόμενα PRIVATE SUB ΚΩΔΤΡΟΠΟΥΠΛΗΡΩΜΗΣ_AFTERUPDATE()

ON ERROR GOTO ERRΩΔΤΡΟΠΟΥΠΛΗΡΩΜΗΣ_AFTERUPDATE

IF NOT ISNULL(ME![ΚΩΔΤΡΟΠΟΥΠΛΗΡΩΜΗΣ])THEN

IF ME![ΚΩΔΤΡΟΠΟΥΠΛΗΡΩΜΗΣ].COLUMN(2)=TRUE THEN

ME![ΚΑΤΟΧΟΣΚΑΡΤΑΣ]=[FORMS]![ΠΑΡΑΓΓΕΛΙΕΣ ΚΑΤΑ

ΠΕΛΑΤΗ]![ΌΝΟΜΑΕΠΑΦΗΣ]&""&[FORMS]![ΠΑΡΑΓΓΕΛΙΕΣ ΚΑΤΑ ΠΕΛΑΤΗ]![ΕΠΩΝΥΜΟΕΠΑΦΗΣ]

END IF

END IF

EXITΩΔΤΡΟΠΟΥΠΛΗΡΩΜΗΣ_AFTERUPDATE EXIT SUB

END SUB

71 του πεδίου πληρωμή σε εισάγεται και ο νέος τρόπος πληρωμής

Οι διαδικασίες συμβάντος ενσωματώνονται στην λειτουργική μονάδα της φόρμας Πληρωμές και είναι οι ακόλουθες :

PRIVATE SUB ΚΩΔΤΡΟΠΟΥΠΛΗΡΩΜΗΣ_DBLCLICK(CANCEL AS INTEGER) ON ERROR GOTO ERRΩΔΤΡΟΠΟΥΠΛΗΡΩΜΗΣ_DBLCLICK

DIM LNGPAYMENTMETHODIDAS LONG

IF ISNULL(ME![ΚΩΔΤΡΟΠΟΥΠΛΗΡΩΜΗΣ])THEN

ME![ΚΩΔΤΡΟΠΟΥΠΛΗΡΩΜΗΣ].TEXT =""

ELSE

LNGPAYMENTMETHODID=ME![ΚΩΔΤΡΟΠΟΥΠΛΗΡΩΜΗΣ]

ME![ΚΩΔΤΡΟΠΟΥΠΛΗΡΩΜΗΣ]=NULL END IF

DOCMD.OPENFORM ΡΟΠΟΙ ΠΛΗΡΩΜΗΣ",,,,, ACDIALOG,"GOTONEW"

ME![ΚΩΔΤΡΟΠΟΥΠΛΗΡΩΜΗΣ].REQUERY

IF LNGPAYMENTMETHODID<>0THEN ME![ΚΩΔΤΡΟΠΟΥΠΛΗΡΩΜΗΣ]=

LNGPAYMENTMETHODID

EXITΩΔΤΡΟΠΟΥΠΛΗΡΩΜΗΣ_DBLCLICK: EXIT SUB

END SUB

72

♫ Προεπισκόπηση – Εκτύπωση Τιμολογίου

Για να εμφανίσουμε το τιμολόγιο που αφορά μια συγκεκριμένη παραγγελία (Έκθεση Τιμολόγιο) θα πρέπει να πιέσουμε το πλήκτρο Τιμολόγιο της φόρμας Παραγγελίες κατά πελάτη.

♫ Αν προσπαθήσουμε να ανοίξουμε την έκθεση αυτή από το παράθυρο της βάσης δεδομένων θα εμφανιστεί το μήνυμα

Η δέσμευση αυτή υπάρχει διότι η προέλευση εγγραφών και οι πληροφορίες που εμφανίζει (υπολογιζόμενες και μη) η συγκεκριμένη έκθεση σχετίζονται άμεσα με τα στοιχεία της φόρμας Παραγγελίες κατά πελάτη και της φόρμας Εκτύπωση Τιμολογίου.

Περιεχόμενα PRIVATE SUB ΚΩΔΤΡΟΠΟΥΠΛΗΡΩΜΗΣ_NOTINLIST(NEWDATA AS STRING,

RESPONSE AS INTEGER)

MSGBOX ΑΝΤΕ ΔΙΠΛΟ ΚΛΙΚ ΣΤΟ ΠΕΔΙΟ ΑΥΤΟ ΓΙΑ ΝΑ ΠΡΟΣΘΕΣΕΤΕ ΔΕΔΟΜΕΝΑ ΣΤΗ ΛΙΣΤΑ."

RESPONSE = ACDATAERRCONTINUE END SUB

73

♫ Πιέζοντας το πλήκτρο Τιμολόγιο της φόρμας Παραγγελίες κατά πελάτη ανοίγει η φόρμα Εκτύπωση τιμολογίου :

PRIVATE SUB REPORT_OPEN(CANCEL AS INTEGER) IF NOT ISLOADED("ΠΑΡΑΓΓΕΛΙΕΣ ΚΑΤΑ ΠΕΛΑΤΗ")THEN

MSGBOX ΙΑ ΝΑ ΑΝΟΙΞΕΤΕ ΤΗΝ ΕΚΘΕΣΗ ΙΜΟΛΟΓΙΟ', ΠΙΕΣΤΕ ΤΟ ΚΟΥΜΠΙ

ΙΜΟΛΟΓΙΟ' ΤΗΣ ΦΟΡΜΑΣ ΑΡΑΓΓΕΛΙΕΣ ΚΑΤΑ ΠΕΛΑΤΗ'"

CANCEL =TRUE

ELSE

DOCMD.OPENFORM ΚΤΥΠΩΣΗ ΤΙΜΟΛΟΓΙΟΥ",,,,, ACDIALOG

IF NOT ISLOADED("ΕΚΤΥΠΩΣΗ ΤΙΜΟΛΟΓΙΟΥ")THEN

CANCEL =TRUE END IF

END IF END SUB

74

‘Παραγγελίες κατά πελάτη’ της φόρμας παραγγελίες κατά πελάτη εμφανίζεται το μήνυμα :

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

Οι ρυθμίσεις που αφορούν την ημερομηνία του συστήματος και το οφειλόμενο ποσό έχουν προεπιλεγεί σαν τιμή στα αντίστοιχα μη δεσμευμένα αντικείμενα της φόρμας Εκτύπωση τιμολογίου ενώ η διαδικασία συμβάντος για το παραπάνω μήνυμα και την αυτόματη εισαγωγή του κωδικού παραγγελίας ενσωματώνεται στην λειτουργική μονάδα της φόρμας Παραγγελίες κατά πελάτη και είναι η εξής:

Περιεχόμενα

75

♫ Αν προσπαθήσουμε να ανοίξουμε την φόρμα Εκτύπωση τιμολογίου από το παράθυρο της βάσης δεδομένων και η φόρμα Παραγγελίες κατά πελάτη δεν είναι ανοιχτή εμφανίζεται το μήνυμα :

Περιεχόμενα ON ERROR GOTO ERRΡΟΕΠΙΣΚΟΠΗΣΗΤΙΜΟΛΟΓΙΟΥ_CLICK

IF FORMS![ΠΑΡΑΓΓΕΛΙΕΣ ΚΑΤΑ ΠΕΛΑΤΗ]![ΔΕΥΤΕΡΕΥΟΥΣΑ ΦΟΡΜΑ ΑΡΑΓΓΕΛΙΕΣ ΚΑΤΑ ΠΕΛΑΤΗ'].FORM.RECORDSETCLONE.RECORDCOUNT =0THEN

MSGBOX ΡΙΝ ΑΝΟΙΞΕΤΕ ΤΟ ΤΙΜΟΛΟΓΙΟ ΣΤΗΝ ΚΑΤΑΣΤΑΣΗ ΠΡΟΕΠΙΣΚΟΠΗΣΗΣ ΟΡΙΣΤΕ ΠΛΗΡΟΦΟΡΙΕΣ ΓΙΑ ΤΗΝ ΠΑΡΑΓΓΕΛΙΑ"

ELSE

DOCMD.DOMENUITEM ACFORMBAR, ACRECORDSMENU, ACSAVERECORD,,

ACMENUVER70

DOCMD.OPENREPORT ΙΜΟΛΟΓΙΟ", ACPREVIEW,,"[ΚΩΔΠΑΡΑΓΓΕΛΙΑΣ]= FORMS![ΠΑΡΑΓΓΕΛΙΕΣ ΚΑΤΑ ΠΕΛΑΤΗ]![ΔΕΥΤΕΡΕΥΟΥΣΑ ΦΟΡΜΑ ΑΡΑΓΓΕΛΙΕΣ ΚΑΤΑ ΠΕΛΑΤΗ'].FORM![ΚΩΔΠΑΡΑΓΓΕΛΙΑΣ]"

END IF

EXITΡΟΕΠΙΣΚΟΠΗΣΗΤΙΜΟΛΟΓΙΟΥ_CLICK: EXIT SUB

END SUB

76 Ο περιορισμός αυτός υπάρχει γιατί όπως προαναφέρθηκε η συγκεκριμένη φόρμα συνδέεται άμεσα με έναν συγκεκριμένο κωδικό παραγγελίας της φόρμας Παραγγελίες κατά πελάτη. Η διαδικασία συμβάντος ενσωματώνεται στην λειτουργική μονάδα της φόρμας Εκτύπωση τιμολογίου.

♫ Αν η διαδικασία Προεπισκόπησης του τιμολογίου πραγματοποιηθεί σωστά από το πλήκτρο Τιμολόγιο της φόρμας Παραγγελίες κατά πελάτη και στην συνέχεια πιέσουμε το πλήκτρο ΟΚ της φόρμας Εκτύπωση τιμολογίου εμφανίζεται κανονικά η προεπισκόπηση της έκθεσης Τιμολόγιο.

Η έκθεση Τιμολόγιο :

Περιεχόμενα PRIVATE SUB FORM_OPEN(CANCEL AS INTEGER)

IF NOT ISLOADED("ΠΑΡΑΓΓΕΛΙΕΣ ΚΑΤΑ ΠΕΛΑΤΗ")THEN

MSGBOX ΙΑ ΝΑ ΑΝΟΙΞΕΤΕ ΤΗ ΦΟΡΜΑ ΚΤΥΠΩΣΗ ΤΙΜΟΛΟΓΙΟΥ', ΠΑΤΗΣΤΕ ΤΟ ΚΟΥΜΠΙ ΙΜΟΛΟΓΙΟ' ΤΗΣ ΦΟΡΜΑΣ ΑΡΑΓΓΕΛΙΕΣ ΚΑΤΑ ΠΕΛΑΤΗ'"

CANCEL =TRUE

END IF

END SUB

77 Εγνατίας 54

Καβάλα, Κηπούπολη 45871 Ελλάδα

Τηλέφωνο: 2510-456213 Φαξ: 2510-456214

Ημ 08/03/2006 Όνομα επαφής Σοφία Μήτσιου Κωδ πελάτη 5

Κωδ παραγγ 8 Όροι Αποστολή01/03/2006

Παραγγελία 01/03/2006 Αποστολή με ΕΛΤΑ Αρ παραγγ

Χρέωση σε: Αποστολή προς:

Μήτσιου Σοφία Μήτσιου Σοφία

Μ. Αλεξάνδρου 100 Μ. Αλεξάνδρου 100

Κατερίνη, Μ. Αλεξάνδρου 100 60063 Κατερίνη, Μ. Αλεξάνδρου 100 60063

Κέντρο Κέντρο

ΚωδΌνομα προϊόντος Ποσότητα Τιμή μον Έκπτωση Μερ σύνολο

6Keyboard 1 25,00 € 0,00% 25,00 €

1 UPS 1 100,00 € 0,00% 100,00€

Υποσύνολο 125,00 € Χρέωση 4,00 €

ΦΠΑ 11,25 €

Συν παραγγελία 140,25 € Συν πληρωμές 80,00 € Συν οφειλόμενα 60,25 €

Τετάρτη, 8 Μαρτίου 2006 Σελίδα 1 από 1

78 Η προέλευση των εγγραφών της Έκθεσης Τιμολόγιο προέρχεται από το ερώτημα :

Περιεχόμενα SELECTΠΑΡΑΓΓΕΛΙΕΣ.*,[ΛΕΠΤΟΜΕΡΕΙΕΣ

ΠΑΡΑΓΓΕΛΙΩΝ].ΚΩΔΛΕΠΤΟΜΕΡΕΙΑΣΠΑΡΑΓΓΕΛΙΑΣ,[ΛΕΠΤΟΜΕΡΕΙΕΣ

ΠΑΡΑΓΓΕΛΙΩΝ].ΚΩΔΠΡΟΪΟΝΤΟΣ,[ΛΕΠΤΟΜΕΡΕΙΕΣ ΠΑΡΑΓΓΕΛΙΩΝ].ΠΟΣΟΤΗΤΑ, [ΛΕΠΤΟΜΕΡΕΙΕΣ ΠΑΡΑΓΓΕΛΙΩΝ].ΤΙΜΗΜΟΝΑΔΑΣ,[ΛΕΠΤΟΜΕΡΕΙΕΣ

ΠΑΡΑΓΓΕΛΙΩΝ].ΈΚΠΤΩΣΗΕΛΑΤΟΛΟΓΙΟΠΩΝΥΜΙΑΕΤΑΙΡΕΙΑΣ, ΠΕΛΑΤΟΛΟΓΙΟΝΟΜΑΕΠΑΦΗΣΕΛΑΤΟΛΟΓΙΟΠΩΝΥΜΟΕΠΑΦΗΣ, ΠΕΛΑΤΟΛΟΓΙΟΙΕΥΘΥΝΣΗΧΡΕΩΣΗΣΕΛΑΤΟΛΟΓΙΟΟΛΗ,

ΠΕΛΑΤΟΛΟΓΙΟ.[ΝΟΜΟΣΕΡΙΟΧΗ],ΠΕΛΑΤΟΛΟΓΙΟΑΧΥΔΡΟΜΙΚΟΣΚΩΔΙΚΑΣ, ΠΕΛΑΤΟΛΟΓΙΟ.[ΧΩΡΑΕΡΙΟΧΗ],ΠΕΛΑΤΟΛΟΓΙΟΗΛΕΦΩΝΟ,

ΠΕΛΑΤΟΛΟΓΙΟΝΟΜΑΕΠΑΦΗΣ &""&ΠΕΛΑΤΟΛΟΓΙΟΠΩΝΥΜΟΕΠΑΦΗΣ AS [ΌΝΟΜΑ ΕΠΑΦΗΣ],[ΤΡΟΠΟΙ ΑΠΟΣΤΟΛΗΣ].ΤΡΟΠΟΣΑΠΟΣΤΟΛΗΣ,

ΠΡΟΪΟΝΤΑΝΟΜΑΠΡΟΪΟΝΤΟΣ

FROMΥΠΑΛΛΗΛΟΙ RIGHTJOIN([ΤΡΟΠΟΙ ΑΠΟΣΤΟΛΗΣ]RIGHTJOIN (ΠΡΟΪΟΝΤΑ INNERJOIN((ΠΕΛΑΤΟΛΟΓΙΟ RIGHTJOINΠΑΡΑΓΓΕΛΙΕΣ ON ΠΕΛΑΤΟΛΟΓΙΟΩΔΑΓΟΡΑΣΤΗ ΑΡΑΓΓΕΛΙΕΣΩΔΑΓΟΡΑΣΤΗ)RIGHTJOIN [ΛΕΠΤΟΜΕΡΕΙΕΣ ΠΑΡΑΓΓΕΛΙΩΝ]ONΠΑΡΑΓΓΕΛΙΕΣΩΔΠΑΡΑΓΓΕΛΙΑΣ =

ΕΠΤΟΜΕΡΕΙΕΣ ΠΑΡΑΓΓΕΛΙΩΝ].ΚΩΔΠΑΡΑΓΓΕΛΙΑΣ)ON

ΠΡΟΪΟΝΤΑΩΔΠΡΟΪΟΝΤΟΣ =[ΛΕΠΤΟΜΕΡΕΙΕΣ ΠΑΡΑΓΓΕΛΙΩΝ].ΚΩΔΠΡΟΪΟΝΤΟΣ) ON[ΤΡΟΠΟΙ ΑΠΟΣΤΟΛΗΣ].ΚΩΔΤΡΟΠΟΥΑΠΟΣΤΟΛΗΣ =

ΠΑΡΑΓΓΕΛΙΕΣΩΔΤΡΟΠΟΥΑΠΟΣΤΟΛΗΣ)ONΥΠΑΛΛΗΛΟΙΩΔΥΠΑΛΛΗΛΟΥ = ΠΑΡΑΓΓΕΛΙΕΣΩΔΥΠΑΛΛΗΛΟΥ

ORDERBYΠΑΡΑΓΓΕΛΙΕΣ.[ΗΜ/ΝΙΑΑΠΟΣΤΟΛΗΣ];

79

♀ Έκθεση Ανάλυση Πελάτη : Περιλαμβάνει τα στοιχεία των πελατών. Η προέλευση των εγγραφών της είναι ο πίνακας Πελατολόγιο. Όταν δεν υπάρχουν καταχωρήσεις πελατών εμφανίζεται το μήνυμα :

Η διαδικασίες συμβάντος για το παραπάνω μήνυμα ενσωματώνεται στην λειτουργική μονάδα της έκθεσης Ανάλυση πελάτη.

Ανοίγουμε την συγκεκριμένη έκθεση Πιέζοντας το πλήκτρο Ανάλυση πελάτη του πίνακα επιλογών Αναφορές.

Ανάλυση πελάτη

Πελάτης Όνομα επαφής Πόλη Περιοχή Τηλέφωνο Αριθμός φαξ Μήτσιου Σοφία Μήτσιου, Σοφία Κατερίνη Μ. Αλεξάνδρου 100 23520-42100 23520-42101

PRIVATE SUB REPORT_NODATA(CANCEL AS INTEGER)

MSGBOX ΠΑΡΟΥΣΙΑΣΗ ΤΗΣ ΕΚΘΕΣΗΣ ΑΚΥΡΩΝΕΤΑΙ ΔΙΟΤΙ ΔΕΝ ΥΠΑΡΧΟΥΝ ΑΝΤΙΣΤΟΙΧΑ ΔΕΔΟΜΕΝΑ."

CANCEL =-1 END SUB

80

Έκθεση Ενηλικίωση Υπολοίπων : Περιλαμβάνει το χρονοδιάγραμμα των υπολοίπων των παραγγελιών των πελατών.

Μπορούμε να ανοίξουμε την συγκεκριμένη έκθεση από το πλήκτρο Ενηλικίωση υπολοίπων του πίνακα επιλογών Αναφορές. Η προέλευση των εγγραφών της προέρχεται από το ερώτημα :

SELECTDISTINCTROWSUM(IIF((DATE()-

Μ/ΝΙΑΑΠΟΣΤΟΛΗΣ])<31,[ΜΕΡΙΚΟΣΥΝΟΛΟ]*(1+[ΠΟΣΟΣΤΟΦΠΑ])+[ΧΡΕΩΣΗΑΠΟΣ ΤΟΛΗΣ]-NZ([ΣΥΝ ΠΛΗΡΩΜΕΣ]),0))ASΤΡΕΧΟΝ,SUM(IIF((DATE()-

Μ/ΝΙΑΑΠΟΣΤΟΛΗΣ])<61AND (DATE()-

Μ/ΝΙΑΑΠΟΣΤΟΛΗΣ]>30),[ΜΕΡΙΚΟΣΥΝΟΛΟ]*(1+[ΠΟΣΟΣΤΟΦΠΑ])+[ΧΡΕΩΣΗΑΠΟΣ ΤΟΛΗΣ]-NZ([ΣΥΝ ΠΛΗΡΩΜΕΣ]),0))AS[ΗΜΕΡΕΣ 31-60],SUM(IIF((DATE()-

Μ/ΝΙΑΑΠΟΣΤΟΛΗΣ])<91AND (DATE()-

Μ/ΝΙΑΑΠΟΣΤΟΛΗΣ]>60),[ΜΕΡΙΚΟΣΥΝΟΛΟ]*(1+[ΠΟΣΟΣΤΟΦΠΑ])+[ΧΡΕΩΣΗΑΠΟΣ ΤΟΛΗΣ]-NZ([ΣΥΝ ΠΛΗΡΩΜΕΣ]),0))AS[ΗΜΕΡΕΣ 61-90],SUM(IIF((DATE()-

Μ/ΝΙΑΑΠΟΣΤΟΛΗΣ])>90,[ΜΕΡΙΚΟΣΥΝΟΛΟ]*(1+[ΠΟΣΟΣΤΟΦΠΑ])+[ΧΡΕΩΣΗΑΠΟΣ ΤΟΛΗΣ]-NZ([ΣΥΝ ΠΛΗΡΩΜΕΣ]),0))AS[ΗΜΕΡΕΣ 91+],

SUM([ΜΕΡΙΚΟΣΥΝΟΛΟ]*(1+[ΠΟΣΟΣΤΟΦΠΑ])+[ΧΡΕΩΣΗΑΠΟΣΤΟΛΗΣ]-NZ([ΣΥΝ ΠΛΗΡΩΜΕΣ]))ASΥΠΟΛΟΙΠΟ,[ΕΡΩΤΗΜΑ ΤΗΣ ΕΚΘΕΣΗΣ ΝΗΛΙΚΙΩΣΗ

ΥΠΟΛΟΙΠΩΝ'].ΕΠΩΝΥΜΙΑΕΤΑΙΡΕΙΑΣ

FROM[ΕΡΩΤΗΜΑ ΤΗΣ ΕΚΘΕΣΗΣ ΝΗΛΙΚΙΩΣΗ ΥΠΟΛΟΙΠΩΝ']

WHERE((([ΕΡΩΤΗΜΑ ΤΗΣ ΕΚΘΕΣΗΣ ΝΗΛΙΚΙΩΣΗ ΥΠΟΛΟΙΠΩΝ'].[ΗΜ/ΝΙΑΑΠΟΣΤΟΛΗΣ])IS NOT NULL)) GROUPBY[ΕΡΩΤΗΜΑ ΤΗΣ ΕΚΘΕΣΗΣ ΝΗΛΙΚΙΩΣΗ ΥΠΟΛΟΙΠΩΝ'].ΕΠΩΝΥΜΙΑΕΤΑΙΡΕΙΑΣ

HAVING(((SUM([ΜΕΡΙΚΟΣΥΝΟΛΟ]*(1+[ΠΟΣΟΣΤΟΦΠΑ])+[ΧΡΕΩΣΗΑΠΟΣΤΟΛΗΣ]-

NZ([ΣΥΝ ΠΛΗΡΩΜΕΣ])))>0));

81

Ενηλικίωση υπολοίπων

Πελάτης Τρέχον Ημέρες 31-60 Ημέρες 61-90 Ημέρες 91 Υπόλοιπο

Μήτσιου Σοφία 60,25 € 0,00 € 0,00 € 24,85 € 85,10€

Τελικό σύνολο 60,25 € 0,00 € 0,00 € 24,85 € 85,10€

® Εκθέσεις : Πωλήσεις κατά πελάτη, προϊόν, Υπάλληλο :

Όταν ανοίγουμε τις παραπάνω εκθέσεις εμφανίζεται η φόρμα Περιοχή ημερομηνιών έκθεσης για να ορίσουμε το διάστημα των πωλήσεων που επιθυμούμε να ελέγξουμε.

Για την εμφάνιση της φόρμας Περιοχή ημερομηνιών έκθεσης με το άνοιγμα των εκθέσεων η διαδικασία συμβάντος ενσωματώνεται στις λειτουργικές μονάδες των εκθέσεων Πωλήσεις κατά πελάτη, προϊόν και υπάλληλο αντίστοιχα.

Περιεχόμενα

82 Όταν δεν υπάρχουν δεδομένα προς εμφάνιση σύμφωνα με τις ημερομηνίες που ορίζουμε εμφανίζεται το μήνυμα :

Για την εμφάνιση του παραπάνω μηνύματος η διαδικασία συμβάντος ενσωματώνεται στις λειτουργικές μονάδες των εκθέσεων Πωλήσεις κατά πελάτη, προϊόν, υπάλληλο αντίστοιχα.

PRIVATE SUB REPORT_OPEN(CANCEL AS INTEGER)

DOCMD.OPENFORM ΕΡΙΟΧΗ ΗΜΕΡΟΜΗΝΙΩΝ ΕΚΘΕΣΗΣ",,,,, ACDIALOG,

ΩΛΗΣΕΙΣ ΚΑΤΑ ΠΕΛΑΤΗ"

IF NOT ISLOADED("ΠΕΡΙΟΧΗ ΗΜΕΡΟΜΗΝΙΩΝ ΕΚΘΕΣΗΣ")THEN

CANCEL =TRUE

END IF

END SUB

PRIVATE SUB REPORT_NODATA(CANCEL AS INTEGER)

MSGBOX ΠΑΡΟΥΣΙΑΣΗ ΤΗΣ ΕΚΘΕΣΗΣ ΑΚΥΡΩΝΕΤΑΙ ΔΙΟΤΙ ΔΕΝ ΥΠΑΡΧΟΥΝ ΑΝΤΙΣΤΟΙΧΑ ΔΕΔΟΜΕΝΑ."

CANCEL =-1 END SUB

PRIVATE SUB REPORT_CLOSE()

DOCMD.CLOSE ACFORM,"ΠΕΡΙΟΧΗ ΗΜΕΡΟΜΗΝΙΩΝ ΕΚΘΕΣΗΣ"

END SUB

83

√ Αν στην φόρμα Περιοχή ημερομηνιών έκθεσης δεν πληκτρολογήσουμε ημερομηνία έναρξης και λήξης ελέγχου εμφανίζεται το μήνυμα :

√ Ενώ αν η ημερομηνία λήξης για τον έλεγχο που επιθυμούμε να πραγματοποιήσουμε είναι μικρότερη από την ημερομηνία έναρξης (λόγω λάθος πληκτρολόγησης) εμφανίζεται το μήνυμα :

Περιεχόμενα

84 Η διαδικασία συμβάντος για τα παραπάνω μηνύματα ενσωματώνεται στην λειτουργική μονάδα της φόρμας Περιοχή ημερομηνιών έκθεσης :

► Η προέλευση των εγγραφών της έκθεσης Πωλήσεις κατά πελάτη βασίζεται στο ερώτημα :

Περιεχόμενα PRIVATE SUB ΠΡΟΕΠΙΣΚΟΠΗΣΗ_CLICK()

IF ISNULL([ΗΜ/ΝΙΑ ΕΝΑΡΞΗΣ])OR ISNULL([ΗΜ/ΝΙΑ ΛΗΞΗΣ])THEN

MSGBOX ΡΕΠΕΙ ΝΑ ΟΡΙΣΕΤΕ ΗΜΕΡΟΜΗΝΙΑ ΚΑΙ ΓΙΑ ΤΗΝ ΕΝΑΡΞΗ ΚΑΙ ΓΙΑ ΤΗ ΛΗΞΗ."

DOCMD.GOTOCONTROL Μ/ΝΙΑ ΕΝΑΡΞΗΣ"

ELSE

IF Μ/ΝΙΑ ΕΝΑΡΞΗΣ]>[ΗΜ/ΝΙΑ ΛΗΞΗΣ]THEN

MSGBOX ΗΜΕΡΟΜΗΝΙΑ ΛΗΞΗΣ ΠΡΕΠΕΙ ΝΑ ΕΙΝΑΙ ΜΕΓΑΛΥΤΕΡΗ ΑΠΟ ΤΗΝ ΗΜΕΡΟΜΗΝΙΑ ΕΝΑΡΞΗΣ."

DOCMD.GOTOCONTROL Μ/ΝΙΑ ΕΝΑΡΞΗΣ"

ELSE

ME.VISIBLE =FALSE

END IF

END IF

END SUB

85

►Η προέλευση των εγγραφών της έκθεσης Πωλήσεις κατά προϊόν βασίζεται στο ερώτημα :

SELECTDISTINCTROWΠΡΟΪΟΝΤΑΝΟΜΑΠΡΟΪΟΝΤΟΣ,

SUM(CLNG([ΛΕΠΤΟΜΕΡΕΙΕΣ ΠΑΡΑΓΓΕΛΙΩΝ].ΠΟΣΟΤΗΤΑ*[ΛΕΠΤΟΜΕΡΕΙΕΣ ΠΑΡΑΓΓΕΛΙΩΝ].ΤΙΜΗΜΟΝΑΔΑΣ*(1-[ΛΕΠΤΟΜΕΡΕΙΕΣ

ΠΑΡΑΓΓΕΛΙΩΝ].ΈΚΠΤΩΣΗ)*100)/100)AS[ΣΥΝ ΠΩΛΗΣΕΙΣ],SUM([ΛΕΠΤΟΜΕΡΕΙΕΣ ΠΑΡΑΓΓΕΛΙΩΝ].ΠΟΣΟΤΗΤΑ)AS[ΣΥΝ ΜΟΝΑΔΕΣ]

FROMΠΡΟΪΟΝΤΑ INNERJOIN(ΠΑΡΑΓΓΕΛΙΕΣ INNERJOIN[ΛΕΠΤΟΜΕΡΕΙΕΣ ΠΑΡΑΓΓΕΛΙΩΝ]ONΠΑΡΑΓΓΕΛΙΕΣΩΔΠΑΡΑΓΓΕΛΙΑΣ =[ΛΕΠΤΟΜΕΡΕΙΕΣ

ΠΑΡΑΓΓΕΛΙΩΝ].ΚΩΔΠΑΡΑΓΓΕΛΙΑΣ)ONΠΡΟΪΟΝΤΑΩΔΠΡΟΪΟΝΤΟΣ = [ΛΕΠΤΟΜΕΡΕΙΕΣ ΠΑΡΑΓΓΕΛΙΩΝ].ΚΩΔΠΡΟΪΟΝΤΟΣ

WHERE(((ΠΑΡΑΓΓΕΛΙΕΣ.[ΗΜ/ΝΙΑΠΑΡΑΓΓΕΛΙΑΣ])>=[FORMS]![ΠΕΡΙΟΧΗ ΗΜΕΡΟΜΗΝΙΩΝ ΕΚΘΕΣΗΣ]![ΗΜ/ΝΙΑ ΕΝΑΡΞΗΣ]AND

ΑΡΑΓΓΕΛΙΕΣ.[ΗΜ/ΝΙΑΠΑΡΑΓΓΕΛΙΑΣ])<=[FORMS]![ΠΕΡΙΟΧΗ ΗΜΕΡΟΜΗΝΙΩΝ ΕΚΘΕΣΗΣ]![ΗΜ/ΝΙΑ ΛΗΞΗΣ]))

GROUPBYΠΡΟΪΟΝΤΑΝΟΜΑΠΡΟΪΟΝΤΟΣ

SUM([ΔΕΥΤΕΡΕΥΟΝ ΕΡΩΤΗΜΑ ΩΛΗΣΕΙΣ ΚΑΤΑ ΠΕΛΑΤΗ'].[ΣΥΝ ΠΩΛΗΣΕΙΣ])AS [ΣΥΝ ΠΩΛΗΣΕΙΣ],SUM(CLNG([ΔΕΥΤΕΡΕΥΟΝ ΕΡΩΤΗΜΑ ΩΛΗΣΕΙΣ ΚΑΤΑ ΠΕΛΑΤΗ'].[ΣΥΝ ΠΩΛΗΣΕΙΣ]*[ΔΕΥΤΕΡΕΥΟΝ ΕΡΩΤΗΜΑ ΩΛΗΣΕΙΣ ΚΑΤΑ

ΠΕΛΑΤΗ'].ΠΟΣΟΣΤΟΦΠΑ*100)/100)ASΦΠΑ,SUM([ΔΕΥΤΕΡΕΥΟΝ ΕΡΩΤΗΜΑ

ΩΛΗΣΕΙΣ ΚΑΤΑ ΠΕΛΑΤΗ'].ΧΡΕΩΣΗΑΠΟΣΤΟΛΗΣ)AS[ΣΥΝ ΦΟΡΤΙΟ],

SUM([ΔΕΥΤΕΡΕΥΟΝ ΕΡΩΤΗΜΑ ΩΛΗΣΕΙΣ ΚΑΤΑ ΠΕΛΑΤΗ'].[ΣΥΝ ΜΟΝΑΔΕΣ])AS [ΣΥΝ ΜΟΝΑΔΕΣ]

FROMΠΕΛΑΤΟΛΟΓΙΟ INNERJOIN[ΔΕΥΤΕΡΕΥΟΝ ΕΡΩΤΗΜΑ ΩΛΗΣΕΙΣ ΚΑΤΑ ΠΕΛΑΤΗ']ONΠΕΛΑΤΟΛΟΓΙΟΩΔΑΓΟΡΑΣΤΗ =[ΔΕΥΤΕΡΕΥΟΝ ΕΡΩΤΗΜΑ

ΩΛΗΣΕΙΣ ΚΑΤΑ ΠΕΛΑΤΗ'].ΚΩΔΑΓΟΡΑΣΤΗ

WHERE((([ΔΕΥΤΕΡΕΥΟΝ ΕΡΩΤΗΜΑ ΩΛΗΣΕΙΣ ΚΑΤΑ

ΠΕΛΑΤΗ'].[ΗΜ/ΝΙΑΠΑΡΑΓΓΕΛΙΑΣ])>=[FORMS]![ΠΕΡΙΟΧΗ ΗΜΕΡΟΜΗΝΙΩΝ ΕΚΘΕΣΗΣ]![ΗΜ/ΝΙΑ ΕΝΑΡΞΗΣ]AND ([ΔΕΥΤΕΡΕΥΟΝ ΕΡΩΤΗΜΑ ΩΛΗΣΕΙΣ ΚΑΤΑ ΠΕΛΑΤΗ'].[ΗΜ/ΝΙΑΠΑΡΑΓΓΕΛΙΑΣ])<=[FORMS]![ΠΕΡΙΟΧΗ ΗΜΕΡΟΜΗΝΙΩΝ ΕΚΘΕΣΗΣ]![ΗΜ/ΝΙΑ ΛΗΞΗΣ]))

GROUPBYΠΕΛΑΤΟΛΟΓΙΟΠΩΝΥΜΙΑΕΤΑΙΡΕΙΑΣ;

86

▼ Η προέλευση των εγγραφών της έκθεσης Πωλήσεις κατά υπάλληλο βασίζεται στο ερώτημα :

► Μπορούμε να ανοίξουμε την έκθεση Πωλήσεις κατά πελάτη πιέζοντας το πλήκτρο Πωλήσεις κατά πελάτη του πίνακα επιλογών Αναφορές.

Περιεχόμενα SELECT DISTINCTROW [Επώνυμο] & ", " & [Όνομα] AS [Όνομα

υπαλλήλου], Sum([Δευτερεύον ερώτημα 'Πωλήσεις κατά υπάλληλο'].[Συν πωλήσεις]) AS [Συν πωλήσεις], Sum(CLng([Δευτερεύον ερώτημα

'Πωλήσεις κατά υπάλληλο'].[Συν πωλήσεις]*[Δευτερεύον ερώτημα 'Πωλήσεις κατά υπάλληλο'].ΠοσοστόΦΠΑ*100)/100) AS ΦΠΑ, Sum([Δευτερεύον ερώτημα 'Πωλήσεις κατά

υπάλληλο'].ΧρέωσηΑποστολής) AS [Συν φορτίο], Sum([Δευτερεύον ερώτημα 'Πωλήσεις κατά υπάλληλο'].[Συν μονάδες]) AS [Συν μονάδες]

FROM Υπάλληλοι INNER JOIN [Δευτερεύον ερώτημα 'Πωλήσεις κατά υπάλληλο'] ON Υπάλληλοι.ΚωδΥπαλλήλου = [Δευτερεύον ερώτημα 'Πωλήσεις κατά υπάλληλο'].ΚωδΥπαλλήλου

WHERE ((([Δευτερεύον ερώτημα 'Πωλήσεις κατά

υπάλληλο'].[Ημ/νίαΠαραγγελίας])>=[forms]![Περιοχή ημερομηνιών έκθεσης]![Ημ/νία έναρξης] And ([Δευτερεύον ερώτημα 'Πωλήσεις κατά υπάλληλο'].[Ημ/νίαΠαραγγελίας])<=[forms]![Περιοχή ημερομηνιών έκθεσης]![Ημ/νία λήξης]))

GROUP BY [Επώνυμο] & ", " & [Όνομα];

87

Για παραγγελίες μεταξύ: 01/01/2005 και 31/01/2006

Πελάτης Συν μονάδες Συν πωλήσεις ΦΠΑ Συν φορτίο Τιμολογούμενο ποσό

Ελευθεριάδης Ο.Ε 1 15,00 € 1,35 € 5,00 € 21,35

Μήτσιου Σοφία 5 290,00 € 26,10 € 4,00 € 320,10 €

Χατζής ΑΕ 5 265,00 € 0,00 € 0,00 € 265,00 €

Τελικό σύνολο 11 570,00 € 27,45 € 9,00 € 606,45 €

► Μπορούμε να ανοίξουμε την έκθεση Πωλήσεις κατά υπάλληλο πιέζοντας το πλήκτρο Πωλήσεις κατά υπάλληλο του πίνακα επιλογών Αναφορές.

Πωλήσεις κατά υπάλληλο

Για παραγγελίες μεταξύ: 01/01/2005 και 31/12/2006

Υπάλληλος Συν μονάδες Συν πωλήσεις ΦΠΑ Συν φορτίο Τιμολογούμενο ποσό

Αθανασιάδης,Ελευθέριος 3 35,00 € 1,35 € 5,00 € 71,35

Βασιλειάδης,Αριστείδης 3 165,00 € 14,85 € 0,00 € 179,85 €

Βαφειάδου,Ελένη 5 340,00 € 11,25 € 4,00 € 335,25 €

Τελικό σύνολο 11 570,00 € 27,45 € 9,00 € 606,45 €

88 ▼ Μπορούμε να ανοίξουμε την έκθεση Πωλήσεις κατά προϊόν πιέζοντας το πλήκτρο Πωλήσεις κατά προϊόν του πίνακα επιλογών Αναφορές.

Πωλήσεις κατά προϊόν

Για παραγγελίες μεταξύ: 01/01/2005 και 31/12/2006

Προϊόν Συν μονάδες Συν πωλήσεις

Epson 1 50,00 € Keyboard 3 75,00 € Mouse 2 30,00 € Scaner 1 70,00 € UPS 3 300,00 € Οθόνη philips 1 45,00 € Τελικό σύνολο 11 570,00 €

Λειτουργικές Μονάδες Κλάσης :

Οι λειτουργικές μονάδες κλάσης της Access αποθηκεύονται στις λειτουργικές μονάδες του παραθύρου της βάσης δεδομένων και είναι στην διάθεση όλων των αντικειμένων της βάσης δεδομένων.

Κατά την εκτέλεση διαδικασιών που αφορούσαν λειτουργίες των φορμών της εφαρμογής μας έγινε αρκετές φορές ο έλεγχος για τον αν μια συγκεκριμένη φόρμα βρίσκεται σε κατάσταση ‘Loaded’.

89 Μια φόρμα βρίσκεται σε κατάσταση ‘Loaded’ είτε όταν είναι ανοιχτή είτε όταν βρίσκεται σε κατάσταση προβολής σχεδίασης.

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

Περιεχόμενα FUNCTION ISLOADED(BYVAL STRFORMNAME AS STRING)AS INTEGER

CONST CONOBJSTATECLOSED =0 CONST CONDESIGNVIEW =0

IF SYSCMD(ACSYSCMDGETOBJECTSTATE, ACFORM, STRFORMNAME)<>

CONOBJSTATECLOSED THEN

IF FORMS(STRFORMNAME).CURRENTVIEW <> CONDESIGNVIEW THEN

ISLOADED =TRUE

END IF

END IF

END FUNCTION

Documentos relacionados