ΚΕΝΤΡΟ ΠΛΗ.ΝΕ.Τ. Ν. ΦΛΩΡΙΝΑΣ

Μάθετε την Access με Απλές Ερωτήσεις

 

ΠΙΝΑΚΕΣ (Tables)

Τι είναι το Πρωτεύον Κλειδί (Primary Key) ενός πίνακα της Access;

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

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

 

Τι είναι το Ευρετήριο (Index) και ποια η χρησιμότητά του;

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

Για τα πεδία που έχουμε ορίσει να έχουν δικό τους ευρετήριο, η Access δημιουργεί μόνη της έναν κατάλογο που δεν τον βλέπουμε εμείς, όπου σε κάθε γραμμή του καταλόγου υπάρχει ο αριθμός της εγγραφής και η τιμή του πεδίου. Ο κατάλογος αυτός ταξινομείται αυτόματα βάσει της τιμής του πεδίου. Όταν η Access κάνει αναζήτηση, για να βρει π.χ. ποιοι πελάτες έχουν το επώνυμο “Παπαδόπουλος”, τότε, εφ’ όσον, βέβαια, έχουμε ορίσει το πεδίο επώνυμο να έχει ευρετήριο δικό του, η Access ψάχνει πολύ γρήγορα στο ταξινομημένο ευρετήριο και βρίσκει όσους πελάτες έχουν το επώνυμο “Παπαδόπουλος”.

Για τα πεδία που έχουμε ορίσει να έχουν ευρετήριο, μπορούμε να πούμε στην Access να ελέγξει αν το πεδίο αυτό θα έχει μοναδικές τιμές (no duplicates) ή αν θα έχει πολλές ίδιες τιμές (yes duplicates). Για παράδειγμα, σ’ έναν πίνακα μαθητών, μπορούμε να έχουμε σαν πρωτεύον κλειδί τον κωδικό μαθητή και να ορίσουμε ευρετήριο, με αποδεκτές πολλαπλές τιμές, για το επώνυμο και ευρετήριο, χωρίς την αποδοχή πολλαπλών τιμών, για τον αριθμό μητρώου μαθητή. Ο αριθμός μητρώου του μαθητή δεν είναι, βέβαια, το πρωτεύον κλειδί, αλλά δεν μπορούν να υπάρχουν δύο ή περισσότεροι μαθητές με τον ίδιο αριθμό μητρώου.

 

Σε τι διαφέρουν το πρωτεύον κλειδί ενός πίνακα από το ευρετήριο που δεν αποδέχεται πολλαπλές τιμές;

Σ’ έναν πίνακα μπορούμε να έχουμε ένα μόνο πρωτεύον κλειδί, το οποίο μπορεί να αποτελείται από ένα ή περισσότερα πεδία, αλλά μπορούμε να έχουμε συγχρόνως και πολλά ευρετήρια πεδίων που δεν αποδέχονται πολλαπλές τιμές. Το πρωτεύον κλειδί είναι εκείνο που χαρακτηρίζει μοναδιαία έναν πίνακα και όχι το ευρετήριο.

 

Τι είναι ο Κανόνας Επικύρωσης (Validation Rule) και το Κείμενο Επικύρωσης (Validation Text) και ποια η χρησιμότητά τους;

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

Για παράδειγμα, αν καταχωρούμε τους βαθμούς μαθητών, τότε ο κανόνας επικύρωσης που θα πρέπει να δώσουμε, είναι ο : >= 0 and <=20 ή between 0 and 20. Αν, βέβαια, ο σωστός βαθμός είναι ο 15 και εμείς γράψουμε 17, τότε αυτό δεν θα μπορέσει να το ελέγξει η Access.

Αν εισάγουμε στοιχεία για πελάτες, και αυτοί προέρχονται μόνο από τις πόλεις Αθήνα, Θεσ/νίκη και Πάτρα, τότε ο κανόνας επικύρωσης θα είναι ο : ‘Αθήνα’ or ‘Θεσ/νίκη’ or ‘Πάτρα’.

Το Κείμενο Επικύρωσης είναι ένα μήνυμα που εμφανίζει η Access σ’ ένα παράθυρο, όταν παραβούμε τον κανόνα επικύρωσης ενός πεδίου. Μπορούμε να γράψουμε ένα δικό μας μήνυμα, που θα υπενθυμίζει στον χρήστη ποιες είναι οι αποδεκτές τιμές.

Η χρησιμότητα του κανόνα επικύρωσης είναι ότι απλά, περιορίζει τα λάθη που μπορεί να κάνουμε κατά την πληκτρολόγηση.

 

Τι είναι, πώς ορίζεται και ποια είναι η χρησιμότητα μιας Σχέσης (Relationship) ανάμεσα σε δύο πίνακες της Access;

Είναι μια αντιστοίχηση ανάμεσα σ’ ένα πεδίο ενός πίνακα, μ’ ένα πεδίο ενός άλλου πίνακα. Τα πεδία αυτά πρέπει να είναι του ιδίου τύπου δεδομένων και του ιδίου μεγέθους. Το ένα είναι το πρωτεύον κλειδί στον έναν πίνακα και το άλλο είναι ένα απλό πεδίο στον άλλον πίνακα.

Για να ορίσουμε μια σχέση ανάμεσα σε δύο πίνακες, ανοίγουμε το παράθυρο Show Relationships της Βάσης Δεδομένων μας και επιλέγουμε (προσθέτουμε) τους πίνακες που θέλουμε να συσχετίσουμε. Μετά, πατάμε με το ποντίκι στο πεδίο του ενός πίνακα, το μεταφέρουμε και το αφήνουμε πάνω στο αντίστοιχο πεδίο του άλλου πίνακα. Η Access εμφανίζει τότε μια γραμμή που συνδέει τους δύο πίνακες και που έχει το σύμβολο 1 στο πρωτεύον πεδίο του ενός πίνακα και το σύμβολο του άπειρου στο αντίστοιχο πεδίο του άλλου πίνακα. Αυτό σημαίνει ότι αυτή είναι μια σχέση ένα προς πολλά (one to many).

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

Η χρησιμότητα μιας σχέσης ανάμεσα σε δύο πίνακες, είναι ότι μέσω αυτής μπορούμε να αντλήσουμε στοιχεία και πληροφορίες που ανήκουν και στους δύο πίνακες. Για παράδειγμα, αν έχω έναν πίνακα πελατών και έναν πίνακα παραγγελιών που κάνουν οι πελάτες μου, τότε ορίζω το πεδίο κωδικός πελάτη (ID_?aeάτη) να υπάρχει και στους δύο πίνακες, στον πίνακα πελατών σαν πρωτεύον κλειδί βέβαια, και διασυνδέω τους δύο πίνακες με το πεδίο αυτό.

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

 

Τι σημαίνει η Ακεραιότητα Αναφοράς (Referential Integrity);

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

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

Ένα άλλο παράδειγμα. Σε μια Υπηρεσία Μεταφορών-Επικοινωνιών, μπορούμε να ορίσουμε έναν πίνακα υπαλλήλων και έναν πίνακα αδειών κυκλοφορίας αυτοκινήτων, όπου υπάρχει η σχέση ένα προς πολλά, αφού ένας υπάλληλος μπορεί να γράψει πολλές άδειες κυκλοφορίας, αλλά μια άδεια κυκλοφορίας γράφεται μόνο από έναν υπάλληλο. Εφ’ όσον υπάρχει ακεραιότητα αναφοράς, για να γράψω μια καινούργια άδεια κυκλοφορίας, πρέπει να δώσω και τον κωδικό του υπαλλήλου που κάνει την καταχώρηση.

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

 

Τι σημαίνει η Διαδοχική Ενημέρωση (Cascade Update);

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

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

 

Τι σημαίνει η Διαδοχική Διαγραφή (Cascade Delete);

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

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

 

Τι σημαίνει η σχέση ένα προς πολλά (one to many);

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

Παραδείγματα :

Ένας πελάτης κάνει πολλές παραγγελίες, αλλά μια παραγγελία ανήκει μόνο σ’ έναν πελάτη.

Σ’ ένα νοσοκομείο, ένας γιατρός μπορεί να παρακολουθεί πολλούς ασθενείς, αλλά ένας ασθενής παρακολουθείται μόνο από έναν γιατρό.

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

 

Τι σημαίνει η σχέση πολλά προς πολλά (many to many);

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

Παραδείγματα :

Ένας καθηγητής διδάσκει σε πολλούς μαθητές, αλλά και ένας μαθητής διδάσκεται από πολλούς καθηγητές.

Ένας ιδιοκτήτης μπορεί να έχει στην κατοχή του πολλά ακίνητα, αλλά και ένα ακίνητο μπορεί να ανήκει σε πολλούς ιδιοκτήτες.

Ένας αθλητής παίρνει μέρος σε πολλούς αγώνες, αλλά και σ’ έναν αγώνα παίρνουν μέρος πολλοί αθλητές.

 

Τι σημαίνει η σχέση ένα προς ένα (one to one);

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

Παραδείγματα :

Ένας οδηγός μπορεί να έχει ένα μόνο δίπλωμα οδήγησης, αλλά και ένα δίπλωμα οδήγησης ανήκει μόνο σ’ έναν οδηγό.

Ένα αυτοκίνητο μπορεί να έχει μόνο μία μηχανή, αλλά και μία μηχανή ανήκει μόνο σ’ ένα αυτοκίνητο.

Ένας νομός μπορεί να έχει μόνο μία πόλη σαν πρωτεύουσα, αλλά και μία πόλη μπορεί να είναι πρωτεύουσα μόνο ενός νομού.

 

Η Access υποστηρίζει μόνο σχέσεις ένα προς πολλά. Αν, όμως, έχω μια σχέση πολλά προς πολλά, τότε τι πρέπει να κάνω;

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

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

 

Η Access υποστηρίζει μόνο σχέσεις ένα προς πολλά. Αν, όμως, έχω μια σχέση ένα προς ένα, τότε τι πρέπει να κάνω;

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

 

Τι είναι ένα Ερώτημα (Query);

Είναι μια διαδικασία της Access που μας επιτρέπει να φιλτράρουμε (απομονώνουμε) κάποια πεδία ή/και κάποιες εγγραφές από έναν ή περισσότερους πίνακες. Οι νέες πληροφορίες εμφανίζονται στην οθόνη σαν ένας καινούργιος πίνακας. Ο παλιός πίνακας παραμένει άθικτος. Αυτό λέγεται Ερώτημα Επιλογής (Select Query).

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

Μπορώ, όμως, να κάνω και συνδυασμούς. Π.χ. μπορεί να θέλω να δω μόνο εκείνους τους πελάτες που μένουν στη Θεσ/νίκη και χρωστάνε από 100.000 έως 300.000 δρχ.

Μπορεί, όμως, να θέλω να δω στην οθόνη μου μόνο τα πεδία επώνυμο και όνομα απ’ όλους τους πελάτες, χωρίς να βάλω κάποιον περιορισμό.

 

Τι είναι τα Κριτήρια της Access και πώς κάνω συνδυασμούς Κριτηρίων;

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

Για να λειτουργήσει ο τελεστής Or πρέπει να γράψω τα κριτήριά μου στη γραμμή Or, που είναι κάτω από τη γραμμή Criteria. Μπορεί, όμως, στη γραμμή Criteria και μέσα σ’ ένα πεδίο, να χρησιμοποιήσω τους τελεστές And και Or για να θέσω ό,τι κριτήρια θέλω.

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

LIKE ‘Αθήνα’ ® να είναι ίσο με ‘Αθήνα’

LIKE ‘Α*’ ® να αρχίζει με ‘Α’

LIKE ‘*ίδης’ ® να τελειώνει σε ‘ίδης’

LIKE ‘*α*’ ® να έχει το ‘α’ ενδιάμεσα

LIKE ‘[ΑΒΓ]*’ ® να αρχίζει μ’ ένα από τα γράμματα ΑΒΓ

ΙΝ (‘Αθήνα, ‘Θεσ/νίκη’, ’Πάτρα’) ® να είναι μια από τις τρεις πόλεις

‘Αθήνα’ Or ‘Ηράκλειο’ ® να είναι ίσο με ‘Αθήνα’ ή ‘Ηράκλειο’

>20 and <40 ® να είναι μεταξύ 20 και 40, χωρίς να περιέχει το 20 ή το 40

between 10 and 30 ® να είναι μεταξύ 10 και 30, περιέχοντας το 10 και το 30

<= 100 Or > 200 ® μικρότερο ή ίσο του 100 ή μεγαλύτερο του 200

LIKE ‘??α*’ ® να έχει δύο χαρακτήρες στη αρχή, μετά το ‘α’ και μετά ο,τιδήποτε

LIKE ‘##00’ ® ένας τετραψήφιος αριθμός που τελειώνει σε 00

LIKE ‘[!ΑΒ]*’ ® να μην αρχίζει από τα γράμματα Α ή Β και μετά να έχει ο,τιδήποτε

 

Τι σημαίνει η ένδειξη Show στα Ερωτήματα της Access;

Σημαίνει ότι, το πεδίο που έχει την ένδειξη Show σημαδεμένη (Χ), θα εμφανιστεί στην οθόνη του ερωτήματος. Αν δεν είναι σημαδεμένη η ένδειξη, τότε δεν θα εμφανιστεί όταν εκτελέσουμε το ερώτημα.

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

Δείτε το παρακάτω παράδειγμα : από τον πίνακα των αθλητών θέλω να δημιουργήσω ένα ερώτημα και να δω μόνο εκείνους τους αθλητές που είναι από την Ελλάδα. Θα πρέπει να επιλέξω το πεδίο χώρα και να βάλω το κριτήριο LIKE ’Ελλάδα’. Τότε, όμως, όταν θα εκτελεστεί το ερώτημα, θα βλέπω σ’ όλους τους αθλητές και στη στήλη χώρα τη λέξη Ελλάδα.

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

 

Τι σημαίνει η ένδειξη Totals στα Ερωτήματα της Access;

Σημαίνει ότι μπορώ να χρησιμοποιήσω κάποιες αριθμητικές συναρτήσεις για να κάνω υπολογισμούς σε πεδία ενός ερωτήματος. Οι σημαντικότερες από τις συναρτήσεις αυτές είναι οι : Sum (Άθροισμα), Count (Μέτρηση), Avg (Μέσος Όρος), Min (Εύρεση μικρότερου) και Max (Εύρεση μεγαλύτερου).

Για να μπορέσω να χρησιμοποιήσω σωστά αυτές τις συναρτήσεις, πρέπει πρώτα να έχω χρησιμοποιήσει την Ομαδοποίηση (Group by). Η ομαδοποίηση ανήκει κι’ αυτή στην ομάδα Totals.

 

Τι σημαίνει η Ομαδοποίηση (Group by) στα Ερωτήματα της Access;

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

Για παράδειγμα, για να δω πόσες παραγγελίες έχει κάνει ο κάθε πελάτης, ομαδοποιώ (group by) το πεδίο κωδικός πελάτη και χρησιμοποιώ τη συνάρτηση count στο πεδίο κωδικός παραγγελίας.

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

 

Τι είναι τα Ερωτήματα Δράσης (Action Queries);

Είναι ερωτήματα της Access με τα οποία μπορώ να κάνω αλλαγές στα στοιχεία των πινάκων όπου εφαρμόζονται αυτά τα ερωτήματα. Για να εφαρμοστούν αυτές οι αλλαγές, μπορώ να ορίσω και κάποια κριτήρια για να μην ισχύσουν οι αλλαγές για όλες τις εγγραφές του πίνακα.

Υπάρχουν Ερωτήματα Ενημέρωσης (Update Queries), όπου μπορώ να αλλάξω την τιμή σε κάποια πεδία του πίνακά μου, Ερωτήματα Διαγραφής (Delete Queries), όπου μπορώ να διαγράψω κάποιες εγγραφές του πίνακα, Ερωτήματα Προσθήκης (Add Queries), όπου μπορώ να προσθέσω στοιχεία ενός πίνακα σ’ έναν άλλον πίνακα και Ερωτήματα Δημιουργίας Πίνακα (Make Table Queries), όπου μπορώ να δημιουργήσω έναν καινούργιο πίνακα από τα στοιχεία ενός άλλου πίνακα.

 

Πώς μπορώ να κάνω υπολογισμούς πάνω σε πεδία της Access;

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

Για παράδειγμα, για να δω πόσο θα αλλάξουν οι μισθοί των υπαλλήλων μιας εταιρείας, αν αυτοί αυξηθούν κατά 10%, θα πρέπει να δημιουργήσω ένα ερώτημα και να γράψω σε κάποια στήλη την έκφραση :

[μισθός] * 1.1

Μπορώ να δω το αποτέλεσμα στην οθόνη, αλλά δεν μπορώ να αλλάξω μ’ αυτόν τον τρόπο τις τιμές των μισθών.

Μπορώ, ακόμη, να γράψω και εκφράσεις που θα περιέχουν περισσότερα από ένα πεδία :

[επίδομα γάμου] + [επίδομα παραγωγικότητας] * 1.2

Για να μπορέσω, όμως, να αλλάξω τις τιμές κάποιων πεδίων της Access, πρέπει να χρησιμοποιήσω είτε τα Ερωτήματα Ενημέρωσης (Update Queries) ή να γράψω μια υπομονάδα εντολών (module).

 

ΦΟΡΜΕΣ (Forms)

Τι είναι οι Φόρμες της Access και ποια η χρησιμότητά τους;

Οι φόρμες της Access είναι ένας όμορφος τρόπος απεικόνισης των περιεχομένων των Πινάκων (Tables) ή των Ερωτημάτων (Queries) μιας Βάσης Δεδομένων. Μια φόρμα αναφέρεται πάντα σ’ έναν πίνακα (table) ή σ’ ένα ερώτημα (query) της Access απ’ όπου και παίρνει τα δεδομένα που απεικονίζει στην οθόνη. Σ’ έναν πίνακα μπορούμε να αντιστοιχίσουμε όσες φόρμες θέλουμε, δηλ. διαφορετικούς τρόπους εμφάνισης των δεδομένων μας.

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

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

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

Ό,τι καταχωρίσεις και διορθώσεις κάνουμε στη φόρμα, θα μπορούμε να τις δούμε και στην άποψη φύλλου δεδομένων (datasheet) του πίνακα και το αντίθετο. Απλούστατα, με τη φόρμα έχουμε έναν ωραίο τρόπο εμφάνισης των περιεχομένων ενός πίνακα, αλλά και άλλα πολλά πλεονεκτήματα.

 

Ποια είναι τα πλεονεκτήματα που έχει η χρήση των φορμών;

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

Για να το κάνουμε αυτό, θα πρέπει να δημιουργήσουμε ένα ειδικό χειριστήριο (control box) με το εργαλείο πλαισίου κειμένου (ab½ ), όπου θα γράψουμε τον τύπο : ([βαθμός-1]+[βαθμός-2]+...)/10, αν ο μαθητής έχει βαθμούς σε δέκα μαθήματα. Ο μέσος όρος θα υπολογίζεται τότε και θα εμφανίζεται σε κάθε εγγραφή μαθητή, χωρίς να αποτελεί ξέχωρο πεδίο.

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

Μπορούμε, ακόμα, να εμφανίσουμε και εικόνες, ζωγραφιές, φωτογραφίες, ήχους ή και κινούμενες εικόνες (video) από άλλα προγράμματα των Windows μέσα σε ειδικά πλαίσια της φόρμας. Όλα αυτά λέγονται Αντικείμενα ΣΕΑ και περισσότερα γι' αυτά παρακάτω.

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

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

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

 

Τι είναι η Εργαλειοθήκη και τι το Φύλλο Ιδιοτήτων;

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

Oi φύλλο ιδιοτήτων (properties) περιέχει όλες τις ιδιότητες ενός αντικειμένου και μπορεί να αναφέρεται σ’ ολόκληρη τη φόρμα, στο τμήμα λεπτομερειών της (details), σ’ ένα χειριστήριο, σ’ ένα πλαίσιο, σ’ ένα κουμπί εντολής και γενικά σε οποιοδήποτε αντικείμενο. Οι ιδιότητες που εμφανίζονται στο φύλλο ιδιοτήτων, χωρίζονται σε τέσσερις κατηγορίες : Format (Εμφάνιση), Data (Δεδομένα), Event (Συμβάντα), Other (Διάφορα Άλλα) και η επιλογή All (Όλα) έχει όλες τις ιδιότητες συγκεντρωμένες.

 

Τι είναι οι Ετικέτες και τι τα Πλαίσια Κειμένου;

Σε μια φόρμα, τα κείμενα και οι τιμές των πεδίων εμφανίζονται μέσα σε πλαίσια. Υπάρχουν, όμως, δύο είδη πλαισίων : οι ετικέτες (labels) και τα πλαίσια κειμένου (text boxes).

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

Τα πλαίσια κειμένου συνδέονται με κάποιο πεδίο ή πεδία του πίνακα στο οποίο βασίζεται η φόρμα. Έτσι, αν αλλάξουμε το περιεχόμενο ενός πλαισίου κειμένου, τότε αλλάζει και η τιμή του πεδίου με το οποίο είναι συνδεδεμένο. Μπορούμε, ακόμη, να χρησιμοποιήσουμε ένα πλαίσιο κειμένου για να υπολογίζουμε τιμές χρησιμοποιώντας αριθμητικές παραστάσεις. Σ’ αυτή την περίπτωση, όμως, δεν μπορούμε να αλλάξουμε τιμές, αλλά απλά κάνουμε υπολογισμούς τιμών από τις τιμές άλλων πεδίων. Το πλήκτρο (εργαλείο) της εργαλειοθήκης με το οποίο δημιουργούμε πλαίσια κειμένου είναι αυτό που έχει τα γράμματα ab½ .

Οι ετικέτες και τα πλαίσια κειμένου αποκαλούνται και χειριστήρια (control boxes) και μπορούμε να αλλάξουμε το μέγεθός τους και να τα μετακινήσουμε μαζί ή και ξέχωρα.

 

Τι είναι το Εργαλείο Ομάδας Επιλογών (Option Group);

Είναι ένα χρήσιμο εργαλείο με το οποίο δημιουργούμε ένα πλαίσιο όπου μπορούμε να τοποθετήσουμε μέσα ένα ή περισσότερα κουμπιά επιλογών (option buttons), πλαίσια ελέγχου (check boxes) ή κουμπιά διακόπτη (toggle buttons). Σε κάθε κουμπί μπορούμε να αντιστοιχίσουμε μια ξεχωριστή αριθμητική τιμή. Τα κουμπιά επιλογών έχουν ένα μαύρο σημάδι σ’ έναν κύκλο όταν είναι επιλεγμένα, τα πλαίσια ελέγχου έχουν ένα σημάδι O μέσα σ’ ένα τετράγωνο πλαίσιο και τα κουμπιά διακόπτη μοιάζουν με ηλεκτρικό διακόπτη.

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

Για παράδειγμα, η εταιρεία κινητής τηλεφωνίας Telestet έχει κατατάξει τους πελάτες της σε τέσσερις κατηγορίες, ανάλογα με το οικονομικό πακέτο που έχουν επιλέξει : economy, business, city και business plus. Ένας πελάτης της Telestet θα ανήκει υποχρεωτικά σε μία από τις τέσσερις παραπάνω κατηγορίες.

Για να διευκολύνουμε, λοιπόν, την καταχώριση των στοιχείων των πελατών και για να μην κάνουμε λάθη κατά την πληκτρολόγηση, μπορούμε να δημιουργήσουμε μια ομάδα επιλογών, όπου θα τοποθετήσουμε τέσσερα κουμπιά επιλογών, που το καθένα θα αντιστοιχεί σε μια από τις κατηγορίες πελατών της Telestet. Έτσι, πατώντας με το ποντίκι στην κατηγορία που θέλουμε, το αντίστοιχο πεδίο παίρνει αυτόματα την τιμή, χωρίς να χρειαστεί να την πληκτρολογήσουμε. Θα πρέπει να τοποθετήσουμε και τις αντίστοιχες ετικέτες (labels) δίπλα στην κάθε επιλογή.

 

Τι είναι οι Κατάλογοι και τι τα Σύνθετα Πλαίσια (List Box - Combo Box);

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

Είδαμε σε μια προηγούμενη παράγραφο ένα παράδειγμα με τις τρεις πόλεις (Θεσ/νίκη - Κατερίνη - Λάρισα), απ’ όπου επιλέγουμε αυτήν που θέλουμε. Αν, όμως, κάποιος πελάτης δεν μένει σε μια από τις τρεις αυτές πόλεις, τότε μπορούμε να παρακάμψουμε τις τρεις αυτές επιλογές και να δώσουμε μια καινούργια επιλογή, χωρίς να υπάρχει κανένα απολύτως πρόβλημα.

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

Δημιουργούμε πρώτα τον κατάλογο ή το σύνθετο πλαίσιο και μετά το συνδέουμε με το πεδίο που θέλουμε. Η λίστα των τιμών που θα ανήκει στο σύνθετο πλαίσιο, μπορεί να προέρχεται είτε από έναν άλλον πίνακα ή να είναι μια λίστα τιμών που θα τη δημιουργήσουμε εμείς. Αν θέλουμε να περιοριστούμε μόνο στις επιλογές της λίστας επιλέγουμε Limit To List - Yes, αλλιώς επιλέγουμε Limit To List - No και μπορούμε να γράψουμε και άλλες τιμές εκτός λίστας.

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

Έτσι, επιλέγουμε για λίστα τιμών τις τιμές του πίνακα πελατών και στο πλαίσιο όπου θα πρέπει να γράψουμε τον κωδικό του πελάτη μέσα στη φόρμα των παραγγελιών, επιλέγουμε τον πελάτη που θέλουμε από τη λίστα των πελατών, χωρίς να ανησυχούμε αν γράψαμε σωστά τον κωδικό του ή το επώνυμό του. Σ’ αυτή την περίπτωση, η τιμή που θα επιλέξουμε πρέπει οπωσδήποτε να είναι από τη λίστα των πελατών (Limit To List - Yes).

 

Τι είναι τα Αντικείμενα ΣΕΑ (OLE Objects);

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

 

Τι είναι τα Κουμπιά Εντολών (Command Buttons);

Είναι ειδικά πλήκτρα στα οποία μπορούμε να αντιστοιχίσουμε μια μακροεντολή ή μια διαδικασία της γλώσσας προγραμματισμού Visual Basic for Applications (VBA) που έχει η Access. Δημιουργούμε αυτό το πλήκτρο μέσα στη φόρμα, του δίνουμε ένα χαρακτηριστικό όνομα και όταν κάνουμε κλικ πάνω του με το ποντίκι, τότε εκτελείται η αντίστοιχη μακροεντολή ή η διαδικασία. Το ποια μακροεντολή ή διαδικασία θα εκτελεστεί, το ορίζουμε στον πίνακα των ιδιοτήτων του κουμπιού εντολών.

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

 

Τι είναι η Υποφόρμα (SubForm);

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

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

 

ΑΝΑΦΟΡΕΣ (Reports)

Τι είναι οι Αναφορές της Access και ποια η χρησιμότητά τους;

Οι αναφορές (reports) της Access είναι ένας ωραίος τρόπος εκτύπωσης των δεδομένων που υπάρχουν σ’ έναν πίνακα (table) ή σ’ ένα ερώτημα (query) της Access. Τα δεδομένα ενός πίνακα μπορούμε να τα εκτυπώσουμε και με την αντίστοιχη εντολή (εικονίδιο) που υπάρχει στις επιλογές ενός πίνακα, αλλά με τις αναφορές μπορούμε να κάνουμε πολλά περισσότερα πράγματα, με κυριότερο την ομαδοποίηση και την εμφάνιση αθροισμάτων (sum) για τα αριθμητικά πεδία.

Για να μπορέσουμε να δουλέψουμε πιο αποτελεσματικά με τις αναφορές, είναι πάρα πολύ χρήσιμοι οι Οδηγοί Αναφορών (Report Wizards). Αν, παρ’ όλα αυτά, αποφασίσουμε να δημιουργήσουμε μόνοι μας μια αναφορά, θα συναντήσουμε αρκετές δυσκολίες στη δημιουργία της.

 

Τι σημαίνει και πώς δηλώνεται η Ομαδοποίηση (Grouping);

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

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

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

 

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

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

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

Μπορώ, ακόμη, να κάνω ομαδοποίηση και σύμφωνα με το πρώτο γράμμα του κάθε πελάτη, δηλ. να είναι μαζί αυτοί που αρχίζουν από Α, μετά αυτοί που αρχίζουν από Β, κοκ.

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

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

 

ΜΑΚΡΟΕΝΤΟΛΕΣ (Macros)

Τι είναι οι Μακροεντολές της Access και ποια η χρησιμότητά τους;

Οι μακροεντολές (macros) είναι ένα σύνολο εντολών της Access που εκτελείται κάθε φορά που το καλούμε. Μπορούμε, μέσα στις εντολές που υπάρχουν σε μια μακροεντολή, να προσθέσουμε και συνθήκες (conditions), ώστε η μακροεντολή να μην εκτελείται πάντα, παρά μόνο όταν είναι αληθείς οι συνθήκες που έχουμε θέσει.

Η Access έχει ένα συγκεκριμένο σύνολο εντολών για μακροεντολές, απ’ όπου μπορούμε να επιλέξουμε αυτές που θέλουμε να εκτελέσουμε. Δηλ., δεν μπορούμε να δημιουργήσουμε δικές μας εντολές, αλλά περιοριζόμαστε σ’ αυτές που έχει έτοιμες η Access.

Μερικές απ’ αυτές τις εντολές είναι οι εξής :

Μια μακροεντολή μπορεί να αποτελείται από μία ή περισσότερες από τις εντολές που είδαμε παραπάνω και μπορούμε ακόμη να ομαδοποιήσουμε και κάποιες εντολές μέσα σε μια μακροεντολή και να τις δώσουμε ένα όνομα. Έτσι, μια μακροεντολή μπορεί να αποτελείται από ομάδες εντολών και μπορούμε να καλέσουμε μόνο αυτή την ομάδα εντολών της μακροεντολής ως εξής :

[ΌνομαΜακροεντολής].[ΟμάδαΜακροεντολής]

Για να έχουμε πρόσβαση στις τιμές των πεδίων (χειριστηρίων) μιας φόρμας, μπορούμε να χρησιμοποιήσουμε τον εξής τύπο :

Forms![ΌνομαΦόρμας]![ΌνομαΧειριστηρίου]

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

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

 

ΥΠΟΜΟΝΑΔΕΣ (Modules)

Τι είναι οι Υπομονάδες της Access και ποια η χρησιμότητά τους;

Οι υπομονάδες (modules) της Access είναι στην ουσία η γλώσσα προγραμματισμού που έχει η Access. Επειδή οι μακροεντολές της Access είναι περιορισμένες σε κάποιες συγκεκριμένες εντολές, υπάρχουν και οι υπομονάδες που έχουν απεριόριστες δυνατότητες.

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

Η Visual Basic for Applications (VBA), η γλώσσα προγραμματισμού της Access, δεν διαφέρει και δεν υστερεί σε τίποτα από τις άλλες γλώσσες προγραμματισμού. Κάθε πρόγραμμα (κώδικας) της VBA αποθηκεύεται σε υπομονάδες (modules). Υπάρχουν δύο τρόποι δημιουργίας υπομονάδων : σαν αντικείμενο υπομονάδας ή σαν μέρος ενός αντικειμένου φόρμας ή αναφοράς.

 

Τι είναι το Αντικείμενο Υπομονάδας;

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

Μπορούμε να δούμε τα αντικείμενα υπομονάδων μιας βάσης δεδομένων πατώντας στην καρτέλα Modules (Υπομονάδες).

 

Τι είναι οι Υπομονάδες Φορμών και Αναφορών;

Είναι υπομονάδες που ανήκουν αποκλειστικά σε κάποια φόρμα ή αναφορά. Μπορούμε να διορθώσουμε την υπομονάδα μιας φόρμας ή αναφοράς ανοίγοντας τη φόρμα ή την αναφορά σε Άποψη Σχεδιασμού και πατώντας στο κουμπί Code (Eώδικας) της γραμμής εργαλείων ή επιλέγοντας την εντολή Code από το μενού View.

 

Περιγράψτε το Παράθυρο Υπομονάδας

Το παράθυρο υπομονάδας δημιουργείται όταν ανοίξουμε μια υπομονάδα σε Άποψη Σχεδιασμού. Η Access μάς τοποθετεί αυτόματα στο τμήμα Declarations (Δηλώσεις), όπου μπορούμε να ορίσουμε εκείνες τις μεταβλητές που θα τις μοιράζονται όλες οι διαδικασίες της υπομονάδας.

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

Πλαίσιο Καταλόγου Αντικειμένων (Object)

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

Πλαίσιο Καταλόγου Διαδικασιών (Proc)

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

 

Πώς δημιουργώ μια νέα Διαδικασία σε μια Υπομονάδα;

Μέσα στο παράθυρο υπομονάδας, γράφουμε την εντολή Function (Συνάρτηση) ή Sub (Υπορουτίνα) και μετά πατάμε στο κουμπί Εισαγωγής Διαδικασίας (Insert Procedure) της γραμμής εργαλείων ή επιλέγουμε την εντολή Procedure από το μενού Insert. Η Access θα ξεκινήσει τότε αυτόματα μια νέα διαδικασία και θα βάλει στο τέλος την εντολή End Function ή End Sub αντίστοιχα.

 

Τύποι Δεδομένων της VBA

Οι τύποι δεδομένων της VBA είναι παρόμοιοι με τους τύπους δεδομένων των πεδίων μιας βάσης δεδομένων.

Οι τύποι δεδομένων είναι : Byte, Integer (%), Long (&), Single (!), Double (#), Currency (@), String ($), Boolean, Date Object, Variant και User-defined. Τα σύμβολα μέσα στην παρένθεση είναι ο χαρακτήρας που τοποθετείται μετά το όνομα της μεταβλητής για να προσδιορίσει τον τύπο της.

 

Εμβέλεια Μεταβλητών και Σταθερών

Μια μεταβλητή ή μια σταθερά μπορεί να είναι “ορατή” σε μία μόνο διαδικασία (τοπική εμβέλεια), σ’ όλες τις διαδικασίες μιας υπομονάδας ή σ’ όλες τις διαδικασίες της βάσης δεδομένων μας (καθολική εμβέλεια).

Για να δηλώσουμε μια καθολική μεταβλητή, χρησιμοποιούμε την εντολή Public στο τμήμα Declarations ενός αντικειμένου υπομονάδας. Για να δηλώσουμε μια καθολική σταθερά, χρησιμοποιούμε τη λέξη Public μαζί με μια εντολή Const στο τμήμα Declarations.

Για να δηλώσουμε μια μεταβλητή ή σταθερά που θα μπορεί να χρησιμοποιηθεί απ’ όλες τις διαδικασίες μιας υπομονάδας, την ορίζουμε στο τμήμα Declarations της υπομονάδας.

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

Σε μια βάση δεδομένων, μπορούμε να δώσουμε ίδια ονόματα σε μεταβλητές που ανήκουν σε διαφορετικές υπομονάδες καθώς και σε μεταβλητές που έχουν καθολική ή τοπική εμβέλεια. Στην πρώτη περίπτωση, για να ξεχωρίσουμε τις μεταβλητές, γράφουμε πριν απ’ το όνομά τους, το όνομα της υπομονάδας που ανήκουν. Π.χ., οι μεταβλητές module1.intx και module2.intx έχουν ίδιο όνομα (intx) αλλά ανήκουν σε διαφορετικές υπομονάδες.

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

 

Εντολές της VBA

Εντολές για Ορισμό Σταθερών και Μεταβλητών

Const

Με την εντολή αυτή ορίζουμε σταθερές.

Π.χ.

Public Const PI = 3.14159

 

Dim

Δηλώνουμε μια μεταβλητή ή έναν πίνακα μεταβλητών στο τμήμα Declarations μιας υπομονάδας που θα μπορεί να χρησιμοποιηθεί σ’ όλες τις διαδικασίες της υπομονάδας. Μπορούμε, ακόμη, να χρησιμοποιήσουμε την εντολή Dim μέσα σε μια διαδικασία για να δηλώσουμε μια τοπική μεταβλητή στη διαδικασία αυτή.

Π.χ.

Dim intMyInteger As Integer

Dim dbMyDatabase As Database

Dim strMyString (51 To 100) As String * 20

 

Public

Με την εντολή αυτή δηλώνουμε καθολικές μεταβλητές στο τμήμα Declarations μιας υπομονάδας.

Π.χ.

Public lngMyNumber As Long

Υπάρχει και η εντολή Private, με την οποία δηλώνουμε μια μεταβλητή ή σταθερή που θα είναι διαθέσιμη μόνο μέσα στην υπομονάδα όπου γίνεται η δήλωση. Η δήλωση Private είναι default.

 

ReDim

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

Π.χ.

ReDim strProductNames(20) As String * 25

 

Static

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

Π.χ.

Static intMyInteger As Integer

Static strMyString (51 To 100) As String * 20

 

Type

Την χρησιμοποιούμε σ’ ένα τμήμα Declarations για να δημιουργήσουμε μια δομή δεδομένων ορισμένη από το χρήστη που θα περιέχει μία ή περισσότερες μεταβλητές. Μπορούμε επίσης να χρησιμοποιήσουμε την εντολή Type για να δηλώσουμε μια δομή εγγραφής.

Αφού δηλώσουμε μια δομή δεδομένων ορισμένη από το χρήστη, θα μπορούμε να χρησιμοποιήσουμε το όνομα τύπου σε οποιαδήποτε επόμενη εντολή Dim, Public ή Static για να δημιουργήσουμε μια μεταβλητή αυτού του τύπου.

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

Π.χ.

Type MyRecord

    lngID As Long

    strLast As String

    strFirst As String

    strMid As String

End Type

...

Dim usrContacts As MyRecord

usrContacts.strLast = ‘Jones’

 

Οι Πίνακες στην Access

Πίνακες μπορούμε να δηλώσουμε με τις εντολές Dim, ReDim και Static. Σ’ έναν πίνακα μπορούμε να έχουμε μέχρι και 60 διαστάσεις. Αν δεν ορίσουμε το κάτω όριο σε μια διάσταση ενός πίνακα, η προεπιλογή είναι το 0. Μπορούμε να αλλάξουμε την προεπιλεγμένη τιμή του κάτω ορίου με την εντολή Option Base στο τμήμα Declarations της υπομονάδας :

Option Base 1

Το κάτω όριο μιας διάστασης ενός πίνακα θα πρέπει να είναι μεγαλύτερο από τον αριθμό -32.768 και το πάνω όριο θα πρέπει να είναι μικρότερο από τον αριθμό 32.767.

 

Η Εντολή Set

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

Dim dbMyDB As Database

Set dbMyDB = CurrentDb()

Η μεταβλητή dbMyDB αναφέρεται στην τρέχουσα βάση δεδομένων.

Dim tblMyTable As TableDef

Set tblMyTable = dbMyDB.TableDefs![tblClubs]

Η μεταβλητή tblMyTable αναφέρεται στον πίνακα tblClubs της τρέχουσας βάσης δεδομένων.

Dim fldMyField As Field

Set fldMyField = tblMyTable![Notes]

Η μεταβλητή fldMyField αναφέρεται στο πεδίο Notes του πίνακα tblClubs της τρέχουσας βάσης δεδομένων.

 

Επεξεργασία των Εγγραφών μιας Βάσης Δεδομένων

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

Dim dbEntSched As Database

Dim rcdClubs As RecordSet

Set dbEntSched = CurrentDb()

Set rcdClubs = dbEntSched.OpenRecordSet(‘tblClubs’, dbOpenTable)

Μπορούμε να χρησιμοποιήσουμε μια από τις μεθόδους Move για να μετακινηθούμε σε μια συγκεκριμένη εγγραφή. Π.χ. recordset.MoveFirst για να μετακινηθούμε στην πρώτη εγγραφή. Άλλες επιλογές είναι οι MoveLast, MoveNext και MovePrevious.

Για να μετακινηθούμε σε μια άλλη εγγραφή, πρέπει να χρησιμοποιήσουμε τη μέθοδο Find με κάποια κριτήρια. Για παράδειγμα, για να βρούμε το πρώτο στοιχείο ενός συνόλου εγγραφών του οποίου η τιμή AmountOwed είναι μικρότερη από 100$, δίνουμε :

Dim dbEntSched As Database

Dim rcdAPContracts As RecordSet

Set dbEntSched = CurrentDb()

rcdAPContracts.FindFirst ‘AmountOwed > 100’

Για να διαγράψουμε μια εγγραφή, πρώτα μετακινούμαστε στην εγγραφή αυτή και μετά χρησιμοποιούμε τη μέθοδο Delete. Για παράδειγμα, για να διαγράψουμε το πρώτο στοιχείο ενός συνόλου εγγραφών του οποίου η τιμή AmountOwed είναι ίση με 0, δίνουμε :

rcdAPContracts.FindFirst ‘AmountOwed = 0’

If Not rcdAPContracts.NoMatch Then

    rcdAPContracts.Delete

End If

Για να ενημερώσουμε κάποιες εγγραφές, πρώτα πηγαίνουμε στην πρώτη εγγραφή που θέλουμε να ενημερώσουμε και μετά χρησιμοποιούμε τη μέθοδο Edit. Τέλος, θα πρέπει να χρησιμοποιήσουμε και τη μέθοδο Update για να ισχύσουν οι αλλαγές. Για παράδειγμα, για να αυξήσουμε κατά 10% την καταχώριση AmountOwed της πρώτης εγγραφής με τιμή μεγαλύτερη από 100, δίνουμε :

rcdAPContracts.FindFirst ‘AmountOwed > 100’

If Not rcdAPContracts.NoMatch Then

    rcdAPContracts.Edit

    rcdAPContracts![AmountOwed] = rcdAPContracts![AmountOwed] * 1.1

    rcdAPContracts.Update

End If

Για να εισάγουμε μια νέα εγγραφή σ’ ένα σύνολο εγγραφών, πρέπει να χρησιμοποιήσουμε τη μέθοδο AddNew. Δίνουμε όλες τις τιμές που θέλουμε στα πεδία και τέλος χρησιμοποιούμε και τη μέθοδο Update για να γίνει η αποθήκευση.

rcdClubs.AddNew

rcdClubs![ClubName] = ‘Winthrop Brewing Co.’

rcdClubs![StreetAddress] = ‘155 Riverside ave.’

rcdClubs![City] = ‘Winthrop’

rcdClubs![State] = ‘WA’

rcdClubs![ZipCode] = ‘98862’

rcdClubs![PhoneNumber] = ‘(509) 996-3183’

rcdClubs.Update

 

Συναρτήσεις και Υπορουτίνες

Στη VBA υπάρχουν, όπως και στις άλλες γλώσσες προγραμματισμού, δύο είδη διαδικασιών : οι Συναρτήσεις (Functions) και οι Υπορουτίνες (Subroutines). Και οι τύποι διαδικασιών μπορούν να δεχθούν παραμέτρους. Οι συναρτήσεις μπορούν να επιστρέψουν μια τιμή δεδομένων, ενώ οι υπορουτίνες όχι.

Function

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

Θα πρέπει να δηλώσουμε τον τύπο δεδομένων όλων των ορισμάτων που μπορεί να δεχθεί η συνάρτηση στη λίστα παραμέτρων της. Αν χρησιμοποιήσουμε τη δεσμευμένη λέξη ByVal για να δηλώσουμε ένα όρισμα, τότε αυτή θα είναι κλήση με τιμή. Δηλαδή, οποιαδήποτε αλλαγή κάνουμε σ’ ένα όρισμα ByVal μέσα στη συνάρτηση, δεν θα αλλάξει την αρχική μεταβλητή.

Αν χρησιμοποιήσουμε τη δεσμευμένη λέξη ByRef για να δηλώσουμε ένα όρισμα, τότε αυτή θα είναι κλήση με αναφορά. Δηλαδή, οποιαδήποτε αλλαγή κάνουμε σ’ ένα όρισμα ByRef μέσα στη συνάρτηση, θα αλλάξει και την αρχική μεταβλητή.

Μπορούμε να χρησιμοποιήσουμε την εντολή Exit Function σε οποιοδήποτε σημείο της συνάρτησης, για να βγούμε από τη συνάρτηση ομαλά και να επιστρέψουμε στη διαδικασία κλήσης.

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

Function MyFunction (intArg1 As Integer, strArg2 As String) As Double

    <εντολές συνάρτησης>

End Function

Sub

Μπορούμε να χρησιμοποιήσουμε μια εντολή Sub για να δηλώσουμε μια νέα υπορουτίνα, τις παραμέτρους που θα δέχεται και τον κώδικά της.

Μπορούμε να χρησιμοποιήσουμε την εντολή Exit Sub σε οποιοδήποτε σημείο της υπορουτίνας, για να βγούμε από την υπορουτίνα ομαλά και να επιστρέψουμε στη διαδικασία κλήσης.

Για παράδειγμα, για να δημιουργήσουμε μια υπορουτίνα με όνομα MySub που θα δέχεται δύο αλφαριθμητικά ορίσματα, αλλά θα μπορεί να τροποποιήσει μόνο το δεύτερο, γράφουμε :

Sub MySub (ByVal strArg1 As String, ByRef strArg2 As String)

    <εντολές υπορουτίνας>

End Sub

 

Έλεγχος της Ροής των Εντολών

Call

Μεταφέρει τον έλεγχο σε μια υπορουτίνα.

Π.χ.

Call MySub (intMyInteger, curPrice * intQty)

 

Do ... Loop

Εκτελεί ένα σύνολο εντολών πολλές φορές μέχρις ότου γίνει ψευδής ή αληθής μια συνθήκη. Δέχεται και τις δύο εκφράσεις While και Until, τις οποίες μπορούμε να βάλουμε στην αρχή ή στο τέλος του βρόχου.

Π.χ.

Do Until rcdClubs.EOF

    <εντολές διαδικασίας>

    rcdClubs.MoveNext

Loop

 

For ... Next

Εκτελεί ένα σύνολο εντολών συγκεκριμένες φορές.

Π.χ.

For intI = 0 To 4

    Debug.Print dbEntSched.QueryDefs(intI).Name

Next intI

 

For Each ... Next

Εκτελεί ένα σύνολο εντολών για κάθε στοιχείο μιας συλλογής ή μήτρας.

Π.χ.

For Each qdf In dbEntSched.QueryDefs

    Debug.Print qdf.Name

Next qdf

 

GoTo

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

Π.χ.

GoTo SkipOver

 

If ... Then ... Else

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

Π.χ.

Dim strMyString As String, strFirst As String, intVal As Integer

strFirst = Ucase$(Mid$(strMyString, 1, 1))

If strFirst >= ‘A’ And strFirst <= ‘F’ Then

    intVal = 1

ElseIf strFirst >= ‘G’ And strFirst <= ‘N’ Then

    intVal = 2

ElseIf strFirst >= ‘O’ And strFirst <= ‘Z’ Then

    intVal = 3

Else

    intVal = 0

End If

 

Select Case

Εκτελεί εντολές υπό συνθήκη, με βάση το αποτέλεσμα της σύγκρισης της τιμής μιας παράστασης μ’ έναν κατάλογο ή ένα εύρος τιμών.

Π.χ.

Dim strMyString As String, intVal As Integer

Select Case Ucase$(Mid$(strMyString, 1, 1))

    Case ‘A’ To ‘F’

        intVal = 1

    Case ‘G’ To ‘N’

        intVal = 2

    Case ‘O’ To ‘Z’

        intVal = 3

    Case Else

        intVal = 0

End Select

 

Stop

Αναστέλλει προσωρινά την εκτέλεση μιας διαδικασίας.

 

While ... Wend

Εκτελεί συνέχεια ένα σύνολο εντολών για όσο διάστημα είναι αληθής μια συνθήκη.

Π.χ.

While Not rcdClubs.EOF

    <εντολές διαδικασίας>

    rcdClubs.MoveNext

Wend

 

With

Είναι παρόμοια με την εντολή With της Pascal.

Π.χ.

Dim rst As Recordset, db As Database

Set db = CurentDb()

Set rst = db.OpenRecordset(‘MyTable’, dbOpenDynaset, dbAppendOnly)

With rst

    .Addnew

    ![FieldOne] = ‘1’

    ![FieldTwo] = ‘John’

    ![FieldThree] = ‘Viescas’

    .Update

    .Close

End With

 

Εκτέλεση Ενεργειών Μακροεντολών

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

DoCmd

Π.χ. για να ανοίξουμε τη φόρμα Customer στην Άποψη Φόρμας για να εισαγάγουμε δεδομένα, γράφουμε :

DoCmd.OpenForm ‘Customer’, acNormal, , ,acAdd

Για να κλείσουμε τη φόρμα Supplier, γράφουμε :

DoCmd.Close acForm, ‘Supplier’

 

back.gif (9867 bytes)

Επιστροφή