• Nenhum resultado encontrado

43

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

5.Παρουσίαση Εφαρμογής (Φόρμες-SQL Ερωτήματα-

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