Για την υλοποίηση της
άσκησης αυτής ακολουθήστε τα παρακάτω βήματα:
Χρησιμοποιείτε
κεφαλαία γράμματα για την ονομασία Βάσεων δεδομένων, πινάκων, πεδίων για την
διευκόλυνσή σας.
Επίσης εάν θέλετε
το όνομα βάσης, πίνακα ή πεδίου να
αποτελείται από δύο ή περισσότερες λέξεις καλό είναι να τις ενώνετε με την κάτω
παύλα (_) όπως βλέπετε και στο παραπάνω όνομα της βάσης
Β. Δημιουργήστε τον παραπάνω πίνακα: FILOI
ΠΑΡΑΤΗΡΗΣΗ: Για να έχει ένα
πεδίο Αυτόματη αρίθμηση θα πρέπει να αλλάξετε τις ιδιότητες Identity=Yes (Not for replication), Seed=1 που αναφέρετε στον γόνο από όπου θα ξεκινήσει η αρίθμηση, Increment=1 όπου ορίζετε το βήμα με το οποίο θα
αυξάνει η αρίθμηση
Δώστε αυτόματη
αρίθμηση στο πεδίο ΑΑ.
Γ. Καταχωρήστε 5 νέες εγγραφές στον πίνακα
Για να ανοίξετε τον
πίνακα και να καταχωρήσετε εγγραφές πιέστε : Δεξί κλίκ πάνω στον πίνακα και
επιλέξτε Open Tableà Return all rows
AA |
EPITHETO |
ONOMA |
ON_PATROS |
HM_GENNHSIS |
ODOS |
AR |
TK |
1 |
Γεωργίου |
Απόστολος |
Δημήτριος |
7/4/1997 |
Βενιζέλου |
12 |
62100 |
2 |
Παπαδόπουλος |
Γεώργιος |
Ιωάννης |
4/5/1999 |
Μεραρχείας
|
7 |
62100 |
3 |
Μιχαηλίδης |
Αντώνιος |
Αθανάσιος |
4/5/1997 |
Δελφών |
34 |
45678 |
4 |
Καραλής |
Ανδρέας |
Περικλής |
3/3/1984 |
Κηφησίας |
67 |
12345 |
5 |
Τριανταφύλλου |
Γρηγόριος |
Βασίλειος |
7/8/1997 |
Δωδώνης |
90 |
65100 |
Συνέχεια κάθε εγγραφής
POLH |
THL_ERGASIAS |
THL_SPITIOY |
KINHTO |
SXOLIA |
ΣΕΡΡΕΣ |
23210-73234 |
23210-74321 |
6973434343 |
Φίλος |
ΣΕΡΡΕΣ |
23210-45667 |
23210-56789 |
6789032455 |
Γνωστός |
ΘΕΣΣΑΛΟΝΙΚΗ |
2310-554566 |
2310-567890 |
6945342312 |
Φίλος |
ΑΘΗΝΑ |
210-3456790 |
210-2345678 |
6967345673 |
Φίλος |
ΙΩΑΝΝΙΝΑ |
26510-32145 |
26510-89076 |
6978987654 |
Γνωστός |
Δ. Δημιουργήστε όψεις (Views), εκτελέστε
και αποθηκεύστε τα παρακάτω ερωτήματα.
1. Εμφανίστε όλα τα
στοιχεία των φίλων σας που το επίθετό τους αρχίζει πχ από Κ
(Select * From FILOI Where EPITHETO
Like ‘K%’)
2. Εμφανίστε
Επίθετο, Όνομα και Κινητό των φίλων σας που γεννήθηκαν μετά το 1997 και είναι από την πόλη Σέρρες.
3. Ομαδοποιήστε
τους φίλους σας ανά πόλη και μετρήστε πόσοι είναι από κάθε πόλη
(Select POLH, Count(AA) As PLHTHOS
From FILOI
Group By POLH)
4. Ομαδοποιήστε τους
φίλους σας ανά Σχόλιο και μετρήστε πόσοι είναι φίλοι και πόσοι γνωστοί
(Select SXOLIA, Count(AA) As PLHTHOS
From FILOI
Group By SXOLIO)
5. Προβάλετε τις
καταχωρήσεις που κατάγονται από την ίδια πόλη που κατάγεται ο Γεωργίου
(φωλιασμένο ερώτημα)
6. Προβάλετε σε ένα
ερώτημα τις καταχωρήσεις που κατάγονται από Αθήνα και αυτές από Θεσσαλονίκη
Ε. Πάρτε Backup την
βάση δεδομένων.
1. Δεξί κλικ πάνω
στην βάση ΑΤΖΕΝΤΑ_ΕΠΙΘΕΤΟ à Όλες οι Εργρασίες à Backup Database
2. Στο παράθυρο που
θα εμφανιστεί στην επιλογή Destination πιέστε το κουμπί Add… ώστε να προσθέσετε τη θέση προορισμού του αντιγράφου
ασφαλείας.
.
3. Στο νέο παράθυρο
που θα εμφανιστεί στην επιλογή File name πιέζοντας το κουμπί browse επιλέξτε τη θέση προορισμού. Στην περίπτωση
των εργαστηρίων όπου υπάρχουν περιορισμένα δικαιώματα πρόσβασης σε φακέλους
πληκτρολογήστε την θέση του φακέλου σας στην θέση FileName. Πχ
C:\AYTOMATISMOY\ΒΑΣΕΙΣ2\ΤΡ_8_10\ΕΠΙΘΕΤΟ_ΣΑΣ
και στην συνέχεια πατήστε ΟΚ στις καρτέλες.
Z. Διαγράψτε την Βάση ΑΤΖΕΝΤΑ_ΕΠΙΘΕΤΟ.
1. Δεξί κλικ πάνω
στην βάση ΑΤΖΕΝΤΑ_ΕΠΙΘΕΤΟ à Διαγραφή à Yes
H. Κάντε Restore ή Attach την βάση που πήρατε πριν Backup
1. Δεξί κλικ πάνω
στον φάκελο Databases à Όλες οι εργασίες à Restore database
2. Στο παράθυρο που
θα εμφανιστεί δώστε τι παρακάτω επιλογές όπως φαίνεται στην παραπάνω εικόνα,
α.
Πληκτρολογήστε στην επιλογή Restore as Database: το όνομα της
βάσης δεδομένων που διαγράψατε πχ. ΑΤΖΕΝΤΑ_ΕΠΙΘΕΤΟ_ΣΑΣ
β. Restore à From device
γ. Select Devices..
δ. Στο
νέο παράθυρο που θα ανοίξει πιέστε Add..
ε. στην
επιλογή File Name πιέστε το κουμπί browse και επιλέξτε τη θέση στον δίσκο από την οποία
θα πάρετε το αντίγραφο ασφαλείας και θα το επαναφέρετε.
Στην περίπτωση των
εργαστηρίων όπου υπάρχουν περιορισμένα δικαιώματα πρόσβασης σε φακέλους
πληκτρολογήστε την θέση του φακέλου σας στην θέση FileName. Πχ
C:\AYTOMATISMOY\ΒΑΣΕΙΣ2\ΤΡ_8_10\ΕΠΙΘΕΤΟ_ΣΑΣ\ΒΑΣΗ_BACKUP
και στην συνέχεια
πατήστε ΟΚ στις καρτέλες.
Θ. Δημιουργήστε στον φάκελο σας στον δίσκο μια κενή βάση σε ACCESS με όνομα ΑΤΖΕΝΤΑ_ΕΠΙΘΕΤΟ. Κλείστε την ACCESS. Μετατρέψτε και μεταφέρετε την δομή με τα δεδομένα της
βάσης που δημιουργήσατε από τον SQL Server στην ACCESS με τις επιλογές του Data Transformation Services
1. Toolsà Data
Transformation Services à Export DataàΕπόμενο
Βήμα1 Βήμα2
![]() |
![]() |
||
Βήμα3 Βήμα4
Στο βήμα 1 πηγή δεδομένων είναι η βάση ΑΤΖΕΝΤΑ από DataSource=Microsoft OLE DB Provider for SQL Server
Στο
βήμα 2 προορισμός δεδομένων είναι η
βάση ΤΕΣΤ της ACCESS από Destination=Microsoft Access
Μπορείτε να διαλέξετε ως πηγή ή προορισμό δεδομένων όλους τους διαθέσιμους οδηγούς που παρέχει ο SQL Server.
1. Κάντε Restore την
βάση ΑΤΖΕΝΤΑ_ΕΠΙΘΕΤΟ που πήρατε Backup στην άσκηση 1
2. Ανοίξτε τον Builder και
στην φόρμα που θα παρουσιασθεί τοποθετήστε τα παρακάτω χειριστήρια (components).
ADOConnection (γραμμή
εργαλείων
ADOQuery ή εναλλακτικά
ADOTable (γραμμή εργαλείων
DataSource (γραμμή
εργαλείων Data Aceess)
DBGrid (γραμμή εργαλείων Data Controls)
DBNavigator (γραμμή εργαλείων Data Controls)
2. Αποθηκεύστε το Project σε νέο υποφάκελο μέσα στον φάκελό σας πχ.
ΕΠΙΘΕΤΟ\ΕΡΓΑΣΙΑ3
3. Σύνδεση Βάσης Δεδομένων με C++ BUILDER
Ρυθμίστε τις παρακάτω ιδιότητες για τα παραπάνω χειριστήρια
ADOConnection Connection StringàBuildàMicrosoft OLEDB Provider for SQL Serverà 1.
Επιλογή διακομιστή
2. Όνομα Χρήστη=sa
Κωδικός πρόσβασης =κενό
3. Επιλογή βάσης δεδομένων=ΑΤΖΕΝΤΑ
4. Δοκιμή σύνδεσης
Connected=true
ADOQuery Connection=ADOConnection1
SQL … = Select * From FILOI
Active
=true
DataSource DataSet
=ADOQuery1
Στην ιδιότητα SQL του ADOQuery μπορεί να γραφεί
οποιοδήποτε ερώτημα SQL. Στον SQLServer υπάρχει η δυνατότητα σύνδεσης με πίνακα με
το χειριστήριο ADOTable με το οποίο μπορεί να γίνει σύνδεση με οποιονδήποτε πίνακα
της βάσης ρυθμίζοντας αντίστοιχα την ιδιότητα TableName
DBGrid DataSource= DataSource1
DBNavigator DataSource= DataSource1
5. Αποθηκεύστε το Project του
Builder με την επιλογή Save All και εκτελέστε το με την επιλογή Run Κάντε συχνά Αποθήκευση των αλλαγών σας.
4. Επεξεργαστείτε τα δεδομένα του πίνακα με τα
πλήκτρα του Navigator
6. Εκτελέστε τα παρακάτω ερωτήματα με τον ίδιο τρόπο
και προβάλετε τα αποτελέσματα σε νέα DBGrid μέσα
στην ίδια φόρμα.
a. Select * from FILOI
where POLH=’ΣΕΡΡΕΣ’
b. Select EPITHETO, ONOMA, KINHTO from FILOI where KINHTO Like ‘69%’
Προσοχή δεν χρειάζεται να
τοποθετείτε νέο ADOConnection, αρκεί μόνο ένα για
την σύνδεση με την βάση δεδομένων. Χρειάζονται νέα ADOQuery, DataSource, DBGrid και DBNavigator
Για την υλοποίηση
της άσκησης αυτής ακολουθήστε τα παρακάτω βήματα:
1. Δημιουργήστε μία νέα βάση δεδομένων στον SQL Server
με όνομα ENOIKIASEIS_AYTOKINHTON_EPITHETO
Χρησιμοποιείτε
κεφαλαία γράμματα για την ονομασία Βάσεων δεδομένων, πινάκων, πεδίων για την
διευκόλυνσή σας.
Επίσης εάν θέλετε
το όνομα βάσης, πίνακα ή πεδίου να αποτελείται
από δύο ή περισσότερες λέξεις καλό είναι να τις ενώνετε με την κάτω παύλα (_)
όπως βλέπετε και στο παραπάνω όνομα της βάσης
ΑΥΤΟΚΙΝΗΤΑ PELATES
2. Δημιουργήστε τους πίνακες ΑΥΤΟΚΙΝΗΤΑ, PELATES, ENOIKIASH
ENOIKIASH
ΠΑΡΑΤΗΡΗΣΗ: Για να έχει ένα
πεδίο Αυτόματη αρίθμηση θα πρέπει να αλλάξετε τις ιδιότητες Identity=Yes (Not
for replication), Seed=1 που αναφέρετε στον γόνο από όπου θα ξεκινήσει η
αρίθμηση, Increment=1 όπου ορίζετε το βήμα με το οποίο θα αυξάνει η αρίθμηση.
Ορίστε το πεδίο ΚΕΝ
(που αναφέρεται στον Κωδικό Ενοικίασης αυτοκινήτου) να έχει αυτόματη αρίθμηση.
3.Δημιουργήστε νέο διάγραμμα (Diagram) και ορίστε τις συσχετίσεις μεταξύ των πινάκων
όπως βλέπετε στην παρακάτω εικόνα.
4.Καταχωρήστε τις παρακάτω εγγραφές για κάθε πίνακα
ΠΕΛΑΤΕΣ
KP |
EPITHETO |
ONOMA |
ON_PATROS |
HM_GENNHSIS |
ODOS |
AR |
TK |
1 |
Γεωργίου |
Απόστολος |
Ιωάννης |
1/1/1999 |
ΔΕΛΦΩΝ |
23 |
62100 |
2 |
Παπαδόπουλος |
Γεώργιος |
Δημήτριος |
1/2/1966 |
ΒΕΝΙΖΕΛΟΥ |
45 |
62100 |
3 |
Μιχαηλίδης |
Αντώνιος |
Βασίλειος |
6/7/1998 |
ΕΡΜΟΥ |
12 |
23456 |
4 |
Καραλής |
Ανδρέας |
Ιωάννης |
3/4/1979 |
ΤΣΙΜΙΣΚΗ |
67 |
45567 |
5 |
Τριανταφύλλου |
Γρηγόριος |
Νικόλαος |
5/5/1995 |
ΔΩΔΩΝΗΣ |
123 |
65100 |
POLH |
AFM |
DOY |
THL_ERGASIAS |
KINHTO |
THL_SPITIOY |
SXOLIA |
ΣΕΡΡΕΣ |
34455678 |
Α ΣΕΡΡΩΝ |
23210-45678 |
6947898989 |
23210-56156 |
ΠΡΟΣΕΚΤΙΚΟΣ |
ΣΕΡΡΕΣ |
54378922 |
Β ΣΕΡΡΩΝ |
23210-34567 |
6947676767 |
23210-45456 |
ΑΣΤΑΤΟΣ |
ΑΘΗΝΑ |
67846445 |
ΣΤ ΑΘΗΝΩΝ |
210-3438438 |
6732212121 |
210-2324455 |
ΕΠΙΚΙΝΔΥΝΟΣ |
ΘΕΣΣΑΛΟΝΙΚΗ |
53739292 |
ΦΑΕ ΘΕΣ/ΝΙΚΗΣ |
2310-937473 |
6946343434 |
2310-473476 |
ΠΡΟΣΕΚΤΙΚΟΣ |
ΙΩΑΝΝΙΝΑ |
189378737 |
Α ΙΩΑΝΝΙΝΩΝ |
26510-83748 |
6978318976 |
26510-45354 |
ΑΠΑΡΑΔΕΚΤΟΣ |
…συνέχεια πεδίων πίνακα…
ΑΥΤΟΚΙΝΗΤΑ
KA |
MARKA |
MONTELO |
AR_KYKLOFORIAS |
THESIS |
PORTES |
XROMA |
1 |
FIAT |
STILO |
43567 |
5 |
5 |
KOKKINO |
2 |
OPEL |
CORSA |
32456 |
5 |
5 |
ΛΕΥΚΟ |
3 |
MERCEDES |
SLK |
45677 |
2 |
2 |
ΑΣΗΜΙ |
4 |
VW |
GOLF |
32134 |
5 |
3 |
ΜΠΚΛΕ |
5 |
ALFA ROMEO |
156 |
89890 |
5 |
5 |
KOKKINO |
…συνέχεια πεδίων πίνακα…
TIMH_ENOIKIASIS |
TYPOS_KAYSIMOY |
HMEROM_KYKLOFORIAS |
XILIOMETRA |
20 |
BENZINH |
1/1/2004 |
56000 |
18 |
ΒΕΝΖΙΝΗ |
1/5/2000 |
87000 |
70 |
ΒΕΝΖΙΝΗ |
1/6/2006 |
12000 |
35 |
ΠΕΤΡΕΛΑΙΟ |
1/2/2003 |
120000 |
45 |
BENZINH |
1/3/2001 |
112000 |
ΕΝΟΙΚΙΑSH
KEN |
KP |
KA |
HMER_ENOIKIASHS |
HMER_EPISTROFHS |
POSO_PLHROMHS |
1 |
1 |
1 |
7/7/2007 |
17/7/2007 |
200 |
2 |
2 |
5 |
21/8/2007 |
25/8/2007 |
225 |
3 |
2 |
3 |
20/9/2007 |
25/9/2007 |
420 |
4 |
3 |
1 |
1/10/2007 |
2/10/2007 |
20 |
5 |
4 |
1 |
3/10/2007 |
13/10/2007 |
200 |
6 |
5 |
2 |
1/10/2007 |
10/10/2007 |
180 |
…συνέχεια πεδίων πίνακα…
PERIGRAFH_ZHMIAS |
XREOSH_ZHMIAS |
TELIKO_POSO |
|
0 |
200 |
|
0 |
225 |
|
0 |
420 |
ΛΑΣΤΙΧΟ ΕΜΠΡΟΣ ΔΕΞΙΑ |
20 |
40 |
|
|
200 |
|
|
180 |
5. Δημιουργήστε τα παρακάτω ερωτήματα SQL με την μορφή όψεων (Views)
i. Εμφανίστε αναλυτικά το ιστορικό
ενοικιάσεων των πελατών
ii. Εμφανίστε τα αυτοκίνητα που δεν
ενοικιάστηκαν ποτέ
iii. Προβάλετε τα στοιχεία του κάθε πελάτη με
το συνολικό ποσό που πλήρωσε.
iv. Προβάλετε τα στοιχεία του κάθε πελάτη με
το μέγιστο συνολικό ποσό.
v. Προβάλετε τα στοιχεία του αυτοκινήτου που
προτιμούν να νοικιάζουν οι πελάτες.
vi. Εμφανίστε το ποσοστό των ενοικιάσεων κατά
το οποίο συνέβη ζημία σε ενοικιαζόμενο αυτοκίνητο.
6. Πάρτε αντίγραφο ασφαλείας (Backup) από την βάση και αποθηκεύστε το με όνομα
ΕΠΙΘΕΤΟ_ΑΥΤΟΚΙΝΗΤΑ_ΑΝΤΙΓΡΑΦΟ
7. Χρονοπρογραμματίστε τον SQL Server ώστε να παίρνει
αντίγραφο ασφαλείας της βάσης σας κάθε
Τετάρτη στις 10:00 το βράδυ.
ToolsàDatabase
Maintenance Planer… à Επόμενο à Επόμενο à Επόμενο à Επόμενο à
Επιλέξτε την βάση
σας, την θέση που θα αποθηκευτεί το Backup, την ημέρα και ώρα
που θα ξεκινήσει, κάθε πότε, την διάρκεια κά.
8. Σταματήστε τον SQL Server (δεξί κλικ στο εικονίδιο του SQL Server στην γραμμή εργασιώνà Stop)
9. Βρείτε τα
αρχεία ENOIKIASEIS_AYTOKINHTON_EPITHETO.MDF και ENOIKIASEIS_AYTOKINHTON_EPITHETO.LDF που αντιστοιχούν
στην βάση δεδομένων που δημιουργήσατε και αντιγράψτε τα στον φάκελό σας πχ.
ΕΠΙΘΕΤΟ\ΕΡΓΑΣΙΑ3
ΠΡΟΣΟΧΗ: Η αντιγραφή αυτών των αρχείων .mdf και .ldf γίνεται μόνο στην περίπτωση που ο Server δεν τρέχει.
Η σύνδεση θα γίνει
με ADO (ActiveX Data Object)
1. Κάντε Restore την
βάση ΕΠΙΘΕΤΟ_ΑΥΤΟΚΙΝΗΤΑ_ΑΝΤΙΓΡΑΦΟ
2. Ανοίξτε τον Builder και στην
φόρμα που θα παρουσιασθεί τοποθετήστε τα παρακάτω χειριστήρια (components) όπως στο παρακάτω σχήμα.
ADOConnection (1 φορά) (γραμμή εργαλείων
ADOQuery (3
φορές) (γραμμή
εργαλείων
DataSource (3 φορές) (γραμμή εργαλείων Data Aceess)
DBEdit (ένα για κάθε
πεδίο) (γραμμή
εργαλείων Data Controls)
DBNavigator (1 φορά) (γραμμή εργαλείων Data Controls)
Label (ένα για κάθε
πεδίο) (γραμμή
εργαλείων Standard)
PageControl (1 φορά) (γραμμή εργαλείων Win32)
3. Αποθηκεύστε το Project σε νέο υποφάκελο μέσα στον φάκελό σας πχ.
ΕΠΙΘΕΤΟ\ΕΡΓΑΣΙΑ4
4. Σύνδεση Βάσης Δεδομένων με C++ BUILDER και ρύθμιση ιδιοτήτων
Ρυθμίστε τις παρακάτω ιδιότητες για τα παραπάνω χειριστήρια
όπως στην Άσκηση2
ADOConnection Connection StringàBuildàMicrosoft OLEDB Provider for SQL Serverà 1. Επιλογή διακομιστή
2.
Όνομα Χρήστη=sa
Κωδικός πρόσβασης =κενό
3.
Επιλογή βάσης δεδομένων=ΑΥΤΟΚΙΝΗΤΑ
4. Δοκιμή σύνδεσης
Connected=true
Για κάθε πίνακα της
βάσης θα υπάρχει ένα ADOQuery και ένα DataSource τα οποία ρυθμίζονται όπως παρακάτω για τον
πίνακα PELATES
ADOQuery Connection=ADOConnection1
SQL … = Select * From PELATES
Active
=true
DataSource DataSet
=ADOQuery1
Κάντε το ίδιο για
τους υπόλοιπους πίνακες της βάσης.
PageControl Δεξί κλικ πάνω του à New Page προσθέστε
3 σελίδες
Κλικ στο κέντρο ενός TabSheetàCaption=’Πελάτες’ το ίδιο για τις άλλες καρτέλες
DBEdit DataSource= DataSource1
DataField=ΠΕΔΙΟ του ΠΙΝΑΚΑ
DBNavigator DataSource= DataSource1
Label Caption=Κείμενο πχ που περιγράφει τα πεδία
5. Αποθηκεύστε το Project του
Builder με την επιλογή Save All και εκτελέστε το με την επιλογή Run
6.
Επεξεργαστείτε τα δεδομένα του πίνακα με τα πλήκτρα του Navigator
7. Σε κάθε σελίδα του PageControl κάντε καρτέλες για
κάθε πίνακα όπως στην εικόνα
Η σύνδεση θα γίνει
με ADO (ActiveX Data Object)
1. Κάντε Restore την
βάση ΕΠΙΘΕΤΟ_ΑΥΤΟΚΙΝΗΤΑ_ΑΝΤΙΓΡΑΦΟ
2. Ανοίξτε τον Builder και
το project της άσκησης 3.
Στην φόρμα 1
παρουσιάζονται όλα τα components που τοποθετήθηκαν
στην προηγούμενη άσκηση, τα οποία τα αφήνουμε και δεν τα πειράζουμε.
3. Προσθέστε νέα φόρμα : Fileà New Form
4. Στην φόρμα 2 που θα παρουσιασθεί τοποθετήστε τα
παρακάτω χειριστήρια (components) όπως στο παρακάτω
σχήμα.
ADOQuery (2 φορές) (γραμμή
εργαλείων
DataSource (1 φορά) (γραμμή
εργαλείων Data Aceess)
DBLookUpComboBox (1
φορά)
(γραμμή
εργαλείων Data Controls)
DBGrid (1 φορά) (γραμμή
εργαλείων Data Controls)
Label (4 φορές) (γραμμή
εργαλείων Standard)
(όπου απαιτείται πχ
Τίτλος καρτέλας)
Στην Form1 τοποθετήστε ένα κουμπί Button το οποίο θα ανοίγει την Form2 μέσα από την Form1
Button (1 φορά) (γραμμή
εργαλείων Standard)
όπως φαίνονται στην
παρακάτω εικόνα
4. Επικοινωνία φορμών
Μεταβείτε
στην Form1 κάνοντας κλικ πάνω στην φόρμα
FileàInclude Unit Hdr à Unit2
Μεταβείτε
στην Form2 κάνοντας κλικ πάνω στην φόρμα
FileàInclude Unit Hdr à Unit1
Με τον τρόπο αυτό η
κάθε φόρμα μπορεί να «βλέπει» τα αντικείμενα της άλλης φόρμας.
5. Ρυθμίσεις χειριστηρίων (components) της Φόρμας 2
ADOQuery1àConnection= Form1à ADOConnection1
DataSource1àDataSet=ADOQuery1
DBGridàDataSource= DataSource1
ADOQuery2àConnection= Form1à ADOConnection1
DBLookUpComboBox1à ListSource=Form1àDataSource1 (αντιστοιχεί στους
Πελάτες)
DBLookUpComboBox1à ListField=EPITHETO (το
πεδίο που θα εμφανίζεται)
DBLookUpComboBox1à KeyField=KP (το
πρωτεύον κλειδί του πίνακα )
Με τις ρυθμίσεις
αυτές στο DBLookUpComboBox1 ορίζουμε ότι θα συνδέεται
με τα στοιχεία που θα προβάλει το ADOQuery1 της Form1 και όχι της Form2, και θα επιλέγει
ένα από τα επίθετα του πίνακα PELATES.
ΠΡΟΣΟΧΗ: Η Ιδιότητα DataSource του DBLookupComboBox1 θα πρέπει να είναι κενή.
6. Εκτέλεση Δυναμικού Ερωτήματος SQL
Αφού επιλεχθεί το
επιθυμητό επίθετο, θα εκτελεστεί ένα ερώτημα SQL και θα προβληθεί το ιστορικό
ενοικιάσεων αυτοκινήτων του πελάτη που επιλέχθηκε στο DBGrid.
Επίσης σε ένα Label θα παρουσιάζεται το άθροισμα των ποσών που έχει πληρώσει ο πελάτης συνολικά.
Πατήστε διπλό κλικ
πάνω στο DBLookUpComboBox1 ώστε να ανοίξει
το παράθυρο του Unit2.cpp για να γραφτεί κώδικας εντολών. Γράψτε τις παρακάτω
εντολές στην μέθοδο DBLookupComboBox1Click:
void
__fastcall TForm2::DBLookupComboBox1Click(TObject *Sender)
{
//Προβολή ιστορικού ενοικιάσεων Πελάτη
//
ADOQuery1->SQL->Text="SELECT MARKA, MONTELO, XROMA, HMER_ENOIKIASHS, \
HMER_EPISTROFHS, PERIGRAFH_ZHMIAS, TELIKO_POSO \
FROM PELATES INNER JOIN (ENOIKIASH INNER JOIN
AYTOKINHTA \
ON ENOIKIASH.KA= AYTOKINHTA.KA) \
ON PELATES.KP=ENOIKIASH.KP \
WHERE
PELATES.EPITHETO='"+ DBLookupComboBox1->Text+"'";
ADOQuery1->ExecSQL(); // Εκτέλεση ερωτήματος
ADOQuery1->Active=true; // Ενεργοποίηση του ερωτήματος
// Υπολογισμός συνολικού ποσού πληρωμής ενός πελάτη
// που επιλέγεται από το DBLookupComboBox
ADOQuery2->SQL->Text="SELECT
SUM(TELIKO_POSO)as TP \
FROM PELATES INNER JOIN ENOIKIASH \
ON PELATES.KP=ENOIKIASH.KP \
WHERE
PELATES.EPITHETO='"+ DBLookupComboBox1->Text+"'";
ADOQuery2->ExecSQL(); // Εκτέλεση ερωτήματος
ADOQuery2->Open(); // Άνοιγμα ερωτήματος
ADOQuery2->FindFirst(); // Μετάβαση στην πρώτη εγγραφή του
ερωτήματος
Label4->Caption=ADOQuery2->FieldValues["TP"];
// Με αυτόν τον τρόπο παίρνουμε την τιμή ενός πεδίου
// από ένα ερώτημα και την αναθέτουμε σε μια
μεταβλητή της C++
ADOQuery2->Close(); // Κλείσιμο του Ερωτήματος πάντα μετά από άνοιγμα.
}
7. Άνοιγμα φόρμας από κουμπί (button)
Μεταβείτε
στην Form1 κάνοντας κλικ πάνω στην φόρμα
Τοποθετήστε
το κουμπί που θα ανοίγει την φόρμα2
Αλλάξτε
την ιδιότητα Caption και γράψτε το
κείμενο που θα εμφανίζεται πάνω στο κουμπί.
Button1àCaption=Open Form2
Πατήστε διπλό κλικ
πάνω στο Button1 ώστε να ανοίξει το παράθυρο του Unit1.cpp για να γραφτεί κώδικας
εντολών. Γράψτε την παρακάτω εντολή στην μέθοδο Button1Click:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2->ShowModal();
// Ανοίγει
την φόρμα2 χωρίς δυνατότητα μετακίνησης
// στην
φόρμα1 πριν κλείσει η φόρμα 2
}
8. Αποθηκεύστε το Project του
Builder με την επιλογή Save All και εκτελέστε το με την επιλογή Run
Κάντε αποθηκεύσεις
με την επιλογή Save All συχνά και την ανάπτυξη της εφαρμογής.
9. Επαναλάβετε τα βήματα από το 2 έως το 8 για να προβάλετε το
ιστορικό ενοικιάσεων για κάθε αυτοκίνητο αυτή τη φορά και τον συνολικό τζίρο
χρημάτων που αποφέρει το κάθε αυτοκίνητο.
Η σύνδεση με την
βάση θα γίνει με ADO (ActiveX Data Object)
1. Κάντε Restore ή Attach την βάση ΕΠΙΘΕΤΟ_ΑΥΤΟΚΙΝΗΤΑ…
2. Ανοίξτε τον Builder και
το project της άσκησης (3, 4,
5).
Στην φόρμα 1
παρουσιάζονται όλα τα components που τοποθετήθηκαν
στην προηγούμενη άσκηση, τα οποία τα αφήνουμε και δεν τα πειράζουμε.
3. Προσθέστε νέα φόρμα : Fileà New Form
4. Στην φόρμα 3 που θα παρουσιασθεί τοποθετήστε τα παρακάτω
χειριστήρια (components) όπως στο παρακάτω
σχήμα.
ADOQuery (5 φορές) (γραμμή
εργαλείων
DataSource (5 φορές) (γραμμή
εργαλείων Data Aceess)
DBLookUpComboBox (4 φορές)
(γραμμή
εργαλείων Data Controls)
DBGrid (1 φορά) (γραμμή
εργαλείων Data Controls)
Label (6 φορές) (γραμμή
εργαλείων Standard)
(όπου απαιτείται πχ
Τίτλος καρτέλας)
Στην Form1 τοποθετήστε ένα κουμπί Button το οποίο θα ανοίγει την Form3 μέσα από την Form1
Button (γραμμή
εργαλείων Standard)
όπως φαίνονται στην
παρακάτω εικόνα
4. Επικοινωνία φορμών
Δεν
ξεχνάμε να κάνουμε include τα header files
της
νέας φόρμας στην αρχική και το αντίθετο ώστε να μπορεί η κάθε φόρμα να «βλέπει»
τα αντικείμενα της άλλης φόρμας.
Μεταβείτε
στην Form1 κάνοντας κλικ πάνω στην φόρμα
FileàInclude Unit Hdr à Unit3
Μεταβείτε
στην Form2 κάνοντας κλικ πάνω στην φόρμα
FileàInclude Unit Hdr à Unit1
(ΠΡΟΣΟΧΗ: Σε περίπτωση που δεν υπάρχει η
προηγούμενη άσκηση3,4,5 για να συνεχίσετε, δημιουργήστε νέο project και αποθηκεύστε το σε νέο φάκελο ΑΣΚΗΣΗ6. Η μόνη
διαφορά είναι ότι θα πρέπει να προσθέσετε στην νέα φόρμα ένα ADOConnection ώστε να συνδεθείτε με την βάση δεδομένων. Σε αυτή την
περίπτωση δεν χρειάζεται το βήμα 4 γιατί δεν υπάρχουν πολλές φόρμες)
5. Ρυθμίσεις χειριστηρίων (components) της Φόρμας 3
ADOQuery1àConnection= Form1à ADOConnection1
ADOQuery1àSQLà”Select * From
AYTOKINHTA”
ADOQuery1àActive=true;
DataSource1àDataSet=ADOQuery1
DBLookUpComboBox1à ListSource=DataSource1 (αντιστοιχεί στα Αυτοκίνητα)
DBLookUpComboBox1à ListField=MARKA (το πεδίο που θα
εμφανίζεται)
DBLookUpComboBox1à KeyField=KP (το
πρωτεύον κλειδί του πίνακα )
Με τις ρυθμίσεις
αυτές στο DBLookUpComboBox1 ορίζουμε ότι θα
συνδέεται με τα στοιχεία που θα προβάλει το ADOQuery1 της Form2, και θα επιλέγει
μια ΜΑΡΚΑ από τα στοιχεία του πίνακα AYTOKINHTA.
ADOQuery2àConnection= Form1à ADOConnection1
ADOQuery3àConnection= Form1à ADOConnection1
ADOQuery4àConnection= Form1à ADOConnection1
ADOQuery5àConnection= Form1à ADOConnection1
Με τις ρυθμίσεις
αυτές συνδέουμε όλα τα ερωτήματα με το ADOConnection της πρώτης φόρμας.
Label1àCaption= “ΚΑΡΤΕΛΑ ΕΠΙΛΟΓΗΣ ΑΥΤΟΚΙΝΗΤΟΥ»
Label2àCaption= “ΔΙΑΛΕΞΕ ΜΑΡΚΑ»
το ίδιο
και για τα υπόλοιπα Labels
6. Διαδοχικά Δυναμικά Ερωτήματα SQL
Πατήστε διπλό κλικ πάνω στο DBLookUpComboBox1 ώστε να ανοίξει το παράθυρο του Unit3.cpp για να γραφτεί
κώδικας εντολών. Με τις εντολές αυτές μόλις επιλεχθεί μια ΜΑΡΚΑ από την λίστα θα
εκτελεστεί ένα ερώτημα που θα προβάλει τα ΜΟΝΤΕΛΑ των αυτοκινήτων που έχουν την
μάρκα που επιλέχθηκε. Το ερώτημα αυτό εκτελείται από το ADOQuery2 και συνδέεται με το επόμενο DBLookUpComboBox2.
Γράψτε τις παρακάτω
εντολές στην μέθοδο DBLookupComboBox1Click:
void
__fastcall TForm3::DBLookupComboBox1Click(TObject *Sender)
{
ADOQuery2->SQL->Text="Select
KA,MONTELO From AYTOKINHTA \
Where
MARKA='"+DBLookupComboBox1->Text+"'";
ADOQuery2->ExecSQL();
ADOQuery2->Active=true;
DataSource2->DataSet=ADOQuery2;
DBLookupComboBox2->ListSource=
DataSource2;
DBLookupComboBox2->ListField="MONTELO";
DBLookupComboBox2->KeyField="KA";
}
//-----------------------------------------------------------------------
Πατήστε διπλό κλικ πάνω στο DBLookUpComboBox2 ώστε να ανοίξει το παράθυρο του Unit3.cpp για να γραφτεί
κώδικας εντολών. Με τις εντολές αυτές μόλις επιλεχθεί ένα ΜΟΝΤΕΛΟ από την λίστα
θα εκτελεστεί ένα ερώτημα που θα προβάλει τα ΧΡΩΜΑΤΑ των αυτοκινήτων που έχουν
την μάρκα και το μοντέλο που επιλέχθηκε στα δύο προηγούμενα DBLookUpComboBox. Το ερώτημα αυτό εκτελείται από το ADOQuery3 και συνδέεται με το επόμενο DBLookUpComboBox3.
void
__fastcall TForm3::DBLookupComboBox2Click(TObject *Sender)
{
ADOQuery3->SQL->Text="Select
KA,XROMA From AYTOKINHTA \
Where
MARKA='"+DBLookupComboBox1->Text+"' AND \
MONTELO='"+DBLookupComboBox2->Text+"'";
ADOQuery3->ExecSQL();
ADOQuery3->Active=true;
DataSource3->DataSet=ADOQuery3;
DBLookupComboBox3->ListSource=
DataSource3;
DBLookupComboBox3->ListField="XROMA";
DBLookupComboBox3->KeyField="KA";
}
//-----------------------------------------------------------------------
Πατήστε διπλό κλικ πάνω στο DBLookUpComboBox3 ώστε να ανοίξει το παράθυρο του Unit3.cpp για να γραφτεί
κώδικας εντολών. Με τις εντολές αυτές μόλις επιλεχθεί ένα ΧΡΩΜΑ από την λίστα
θα εκτελεστεί ένα ερώτημα που θα προβάλει τις ΤΙΜΕΣ ΕΝΟΙΚΙΑΣΗΣ των αυτοκινήτων
που έχουν την μάρκα και το μοντέλο και το χρώμα που επιλέχθηκε στα τρία
προηγούμενα DBLookUpComboBox. Το ερώτημα αυτό
εκτελείται από το ADOQuery4 και συνδέεται με
το επόμενο DBLookUpComboBox4.
void
__fastcall TForm3::DBLookupComboBox3Click(TObject *Sender)
{
ADOQuery4->SQL->Text="Select
KA,TIMH_ENOIKIASIS From AYTOKINHTA \
Where
MARKA='"+DBLookupComboBox1->Text+"' AND \
MONTELO='"+DBLookupComboBox2->Text+"' AND \
XROMA='"+DBLookupComboBox3->Text+"'";
ADOQuery4->ExecSQL();
ADOQuery4->Active=true;
DataSource4->DataSet=ADOQuery4;
DBLookupComboBox4->ListSource=
DataSource4;
DBLookupComboBox4->ListField="TIMH_ENOIKIASIS";
DBLookupComboBox4->KeyField="KA";
}
//-----------------------------------------------------------------------
Πατήστε διπλό κλικ πάνω στο DBLookUpComboBox4 ώστε να ανοίξει το παράθυρο του Unit3.cpp για να γραφτεί
κώδικας εντολών. Με τις εντολές αυτές μόλις επιλεχθεί μια ΤΙΜΗ ΕΝΟΙΚΙΑΣΗ από
την λίστα θα εκτελεστεί ένα ερώτημα που θα προβάλει ΟΛΑ τα στοιχεία των αυτοκινήτων
που έχουν την μάρκα και το μοντέλο το χρώμα και την τιμή που επιλέχθηκε στα
τέσσερα προηγούμενα DBLookUpComboBox. Το ερώτημα αυτό
εκτελείται από το ADOQuery5 και συνδέεται με
το DBGrig για να προβληθούν όλα τα στοιχεία από τα
διαθέσιμα αυτοκίνητα που πληρούν τα παραπάνω κριτήρια.
void
__fastcall TForm3::DBLookupComboBox4Click(TObject *Sender)
{
ADOQuery5->SQL->Text="Select
* From AYTOKINHTA \
Where
MARKA='"+DBLookupComboBox1->Text+"' AND \
MONTELO='"+DBLookupComboBox2->Text+"'
AND \
XROMA='"+DBLookupComboBox3->Text+"'AND \
TIMH_ENOIKIASIS='"+DBLookupComboBox4->Text+"'";
ADOQuery5->ExecSQL();
ADOQuery5->Active=true;
DataSource5->DataSet=ADOQuery5;
DBGrid1->DataSource=
DataSource5;
}
//-----------------------------------------------------------------------
Το αποτέλεσμα θα είναι η παρακάτω φόρμα
7. Άνοιγμα φόρμας από κουμπί (button)
Μεταβείτε
στην Form1 κάνοντας κλικ πάνω στην φόρμα
Τοποθετήστε
το κουμπί που θα ανοίγει την φόρμα3
Αλλάξτε
την ιδιότητα Caption και γράψτε το
κείμενο που θα εμφανίζεται πάνω στο κουμπί.
Button1àCaption=”Open Form3”
Πατήστε διπλό κλικ
πάνω στο Button1 ώστε να ανοίξει το παράθυρο του Unit1.cpp για να γραφτεί
κώδικας εντολών. Γράψτε την παρακάτω εντολή στην μέθοδο Button1Click:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form3->ShowModal();
// Ανοίγει
την φόρμα3 χωρίς δυνατότητα μετακίνησης
// στην
φόρμα1 πριν κλείσει η φόρμα 3.
// με την εντολή
Form3->Show(); γίνεται μετακίνηση σε κάθε ανοιχτή φόρμα.
}
8. Αποθηκεύστε το Project του
Builder με την επιλογή Save All και εκτελέστε το με την επιλογή Run Κάντε αποθηκεύσεις με την επιλογή Save All συχνά και την ανάπτυξη της εφαρμογής.
Για την υλοποίηση
της άσκησης αυτής ακολουθήστε τα παρακάτω βήματα:
1.
Κάντε Restore ή Attach την βάση ENOIKIASEIS_AYTOKINHTON_EPITHETO που έχετε
δημιουργήσει σε παλαιότερη άσκηση.
2.
Δημιουργία ODBC Connection.
α. Έναρξη
à Πίνακας Ελέγχου à Εργαλεία Διαχείρισης à Πηγές Δεδομένων(ODBC) à DSN χρήστη à Προσθήκη…
β.
Επιλέξτε το πρόγραμμα οδήγησης (driver) SQL Server και
πιέστε Τέλος.
γ.
Γράψτε στην θέση Όνομα : DB_ENOIKIASEIS_EPITHETO_SAS
Αυτό είναι το όνομα που θα έχει το ODBC connection string και θα το καλείται.
Περιγραφή : Data Base
ENOIKIASEIS AYTOKINHTON with ODBC
Είναι μια περιγραφή της βάσης που θα
συνδεθείται
Διακομιστής:
AYTOMATISMOY ή localhost
ή τίποτε
Είναι το
όνομα του SQL Server με το οποίο θα
συνδεθεί το ODBC. Εάν δεν το γνωρίζεται και ο SQL Server τρέχει στον υπολογιστή που δουλεύεται και
θέλετε να μάθετε το όνομά του, τότε μετακινήστε το ποντίκι δεξιά κάτω στην
γμαμμή εργασιών πάνω από το εικονίδιο του SQL Server και θα εμφανιστεί ένα μήνυμα με το όνομα του Server.
δ. Στην
καρτέλα αυτή ζητείται ο τρόπος με τον οποίο θα ελεγχθεί η ταυτότητα του χρήστη που πρόκειται να συνδεθεί με την βάση. Υπάρχουν
δύο τρόποι. Επιλέξτε τον δεύτερο τρόπο, που ελέγχει ο SQL Server την ταυτότητα του χρήστη από το όνομα και τον κωδικό.
Αναγνωριστικό σύνδεσης : sa (συνδέεστε ως
System Administrators και έχετε πλήρη
δικαιώματα)
Κωδικός Πρόσβασης: κενό (εκτός αν τον άλλαξε ο DBA)
Επόμενο..
ε. Στο
παράθυρο αυτό αλλάξτε την προεπιλεγμένη
βάση που είναι η master με την δική σας βάση
δεδομένων. Επιλέξτε από την
αναδιπλούμενη λίστα την βάση που δημιουργήσατε ENOIKIASEIS_AYTΟKINHTON_EPITHETO και πιέστε Επόμενο.
στ.
Στην καρτέλα αυτή δεν επιλέγετε
τίποτε. Απλά πιέστε Επόμενο.
ζ. Πιέστε
Δοκιμή του αρχείου προέλευσης
δεδομένων για να ελέγξετε αν
συνδέεστε σωστά με την βάση που επιλέξατε. Εάν το μήνυμα που θα προβληθεί είναι
ΜΕ ΕΠΙΤΥΧΙΑ τότε ολοκληρώσατε
επιτυχώς την διαδικασία δημιουργίας ODBC
Connection.
Μόλις δημιουργήσατε
μία γέφυρα επικοινωνίας μεταξύ την βάσης σας και οποιασδήποτε εφαρμογής ή
γλώσσας θελήσει να συνδεθεί με αυτή την βάση.
Στη συνέχεια
ανοίγουμε την C++ Builder για δημιουργήσουμε τις φόρμες, που θα έχει η εφαρμογή και θα επικοινωνεί
με την βάση ώστε να διαχειρίζεται τα δεδομένα.
3.
Ανοίξτε τον Builder και
4.
Στην νέα φόρμα που
θα παρουσιασθεί τοποθετήστε τα παρακάτω χειριστήρια (components).
Query ή εναλλακτικά
Table (γραμμή
εργαλείων BDE)
DataSource (γραμμή
εργαλείων Data Aceess)
DBGrid (γραμμή
εργαλείων Data Controls)
DBNavigator (γραμμή
εργαλείων Data Controls)
Label (γραμμή εργαλείων Standard)
5.
Αποθηκεύστε το Project σε νέο υποφάκελο
μέσα στον φάκελό σας πχ. D:\....…\ΕΠΙΘΕΤΟ\ΕΡΓΑΣΙΑ8
Η διαδικασία σύνδεσης
με την βάση και την εκτέλεση ερωτήματος είναι παρόμοια με αυτή που μάθατε και
ακολουθείτε για την σύνδεση με ADO.
Για να εμφανιστούν
τα παραπάνω στην φόρμα σας θα πρέπει να ρυθμίσετε τις παρακάτω ιδιότητες των
χειριστηρίων.
Query1 DataBaseName=DB_ENOIKIASEIS_EPITHETO_SAS (το όνομα του
ODBC
driver που δημιουργήθηκε με την προηγούμενη
διαδικασία)
SQL … = Select * From PELATES
Active =true
DataSource1 DataSet =Query1
Στην ιδιότητα SQL του Query μπορεί να γραφεί οποιοδήποτε
ερώτημα SQL. Στον Builder υπάρχει η δυνατότητα σύνδεσης με πίνακα με το χειριστήριο Table με το οποίο μπορεί
να γίνει σύνδεση με οποιονδήποτε πίνακα της βάσης ρυθμίζοντας αντίστοιχα και
την ιδιότητα TableName
ΠΡΟΣΟΧΗ: Μην συγχέεται το Query με το ADOQuery
DBGrid DataSource= DataSource1
DBNavigator DataSource= DataSource1
6.
Δημιουργήστε Νέα
Φόρμα
7.
Συνδέστε τις φόρμες μεταξύ τους με Include Unit
8.
Επαναλάβετε τα βήματα 4 έως 5 ώστε στην νέα φόρμα
να εκτελείται ένα ερώτημα που θα παρουσιάζει
τα αυτοκίνητα και θα τα
προβάλει στο DBGrid.
9.
Δημιουργήστε Νέα
Φόρμα
10. Εκτέλεση Δυναμικού Ερωτήματος SQL όπως στην Άσκηση 5
Αφού
επιλεχθεί το επιθυμητό επίθετο, θα εκτελεστεί ένα ερώτημα SQL και θα προβληθεί σε ένα DBGrid, το ιστορικό ενοικιάσεων αυτοκινήτων
του πελάτη που επιλέχθηκε.
Σε αυτή
την περίπτωση θα χρησιμοποιείτε πάντα Query από την γραμμή
εργαλείων BDE του Builder και όχι από την γραμμή εργαλείων ADO.
Για την υλοποίηση
της άσκησης αυτής ακολουθήστε τα παρακάτω βήματα:
1.
Κάντε Restore ή Attach την βάση ENOIKIASEIS_AYTOKINHTON_EPITHETO που έχετε
δημιουργήσει σε παλαιότερη άσκηση.
2.
Προσθέστε τον
πίνακα ΑΥΤΟΚΙΝΗΤΑ μια στήλη (πεδίο) με όνομα FOTO τύπου
varchar(100). Η προσθήκη αυτή θα γίνει με την
εκτέλεση ερωτήματος.
Δεξί κλίκ πάνω στον πίνακα AYTOKINHTA à Open Table à Query
3.
Ενημερώστε τον πίνακα ΑΥΤΟΚΙΝΗΤΑ έτσι ώστε η εγγραφή με ΚΑ=1 να έχει στο πεδίο FOTO το παρακάτω Path
3.
Ανοίξτε την
ζωγραφική
Δημιουργήστε
τέσσερις (4) εικόνες bmp και αποθηκεύστε
τις στην διαδρομή (path) D:\AYT\Database\Baseis2 με ονόματα FOTO1.bmp, FOTO2.bmp, FOTO3.bmp, FOTO4.bmp
4. Ανοίξτε τον Builder και
5. Στην φόρμα 1 που θα παρουσιασθεί τοποθετήστε τα
παρακάτω χειριστήρια (components) όπως στο παρακάτω
σχήμα.
ADOConnection (1 φορά) (γραμμή
εργαλείων
ADOQuery (2 φορές) (γραμμή
εργαλείων
DataSource (2 φορές) (γραμμή
εργαλείων Data Aceess)
DBEdit (4 φορές) (γραμμή
εργαλείων Data Controls)
Label (4 φορές) (γραμμή
εργαλείων Standard)
(όπου απαιτείται πχ
Όνομα Πεδίο, Τίτλος καρτέλας κλπ)
Image (1
φορά) (γραμμή
εργαλείων Additional)
OpenPictureDialog (1
φορά) (γραμμή
εργαλείων Dialogs)
DBLookUpComboBox (1 φορά)
(γραμμή
εργαλείων Data Controls)
DBNavigator (1 φορά) (γραμμή εργαλείων Data Controls)
Button (1 φορά) (γραμμή
εργαλείων Standard)
όπως φαίνονται στην παρακάτω
εικόνα
6. Αποθηκεύστε το Project σε νέο υποφάκελο μέσα στον φάκελό σας πχ.
ΕΠΙΘΕΤΟ\ΕΡΓΑΣΙΑ9
7. Σύνδεση Βάσης Δεδομένων με C++ BUILDER και
ρύθμιση ιδιοτήτων
Ρυθμίστε τις παρακάτω ιδιότητες για τα παραπάνω χειριστήρια
όπως στην Άσκηση2
ADOConnection1 Connection StringàBuildàMicrosoft OLEDB Provider for SQL Serverà 1.
Επιλογή
διακομιστή
2.
Όνομα Χρήστη=sa
Κωδικός πρόσβασης =κενό
3.
Επιλογή βάσης δεδομένων=ΑΥΤΟΚΙΝΗΤΑ
4. Δοκιμή σύνδεσης
Connected=true
ADOQuery1 Connection=ADOConnection1
SQL … = Select * , MARKA+'
'+MONTELO AS MM
From
AYTOKINHTA
Active =true
DataSource1 DataSet
=ADOQuery1
ADOQuery2 Connection=ADOConnection1
DBEdit1 DataSource= DataSource1
DataField=ΚΑ
Ομοίως για τα
υπόλοιπα DBEdit όπου DataField ίσο με το αντίστοιχο πεδίο του πίνακα.
Label1 Caption=Κείμενο που περιγράφει τα πεδία πχ KA
DBNavigator DataSource= DataSource1
DBLookUpComboBox1à ListSource=DataSource1 (αντιστοιχεί στo ADOQuery1, Αυτοκίνητα)
DBLookUpComboBox1à ListField=MM (το πεδίο ΜΜ=MARKA και MONTELO μαζί)
DBLookUpComboBox1à KeyField=KA (το πρωτεύον κλειδί του πίνακα )
Τα αντικείμενα Image1 και OpenPictureDialog1 τα προγραμματίζουμε γράφοντας κώδικα.
Το Image1 το χρησιμοποιούμε για να προβάλει τις εικόνες που
αντιστοιχούν σε κάθε εγγραφή αυτοκινήτου.
Το OpenPictureDialog1 το χρησιμοποιούμε για να βρίσκουμε στον δίσκο αρχεία
με εικόνες έτσι ώστε όταν τα επιλέξουμε, να αποθηκευτεί η διαδρομή τους (path) και το όνομα του αρχείου στο πεδίο FOTO του πίνακα AYTOKINHTA.
8. Πατήστε διπλό κλικ στο Button1 και γράψτε τις παρακάτω εντολές
void
__fastcall TForm1::Button1Click(TObject *Sender)
{
// Όταν πιεστεί με κλικ το Button1 τότε εκτελείται
το OpenPictureDialog1
// Αφου βρεθεί ένα αρχείο από το δίσκο κρατάμε το
όνομα και το path
// το αναθέτουμε στην μεταβλητή fotoname
// εκτελούμε το ερώτημα ADOQuery2 ώστε να αλλάξουμε την τιμή του
πεδίου FOTO
// ώστε να γίνει ίδια με το path της μεταβλητής
fotoname για την εγγραφή
// με ΚΑ ίσο με την τιμή του DBEdit1
AnsiString
fotoname;
OpenPictureDialog1->Execute();
fotoname=OpenPictureDialog1->FileName;
DBEdit4->Text=fotoname;
ADOQuery2->SQL->Text="Update
AYTOKINHTA Set Foto='"+fotoname+"' where \
KA="+DBEdit1->Text;
ADOQuery2->ExecSQL(); //εκτελούμε το ερώτημα
ADOQuery1->Active=false; // απενεργοποιούμε το ερώτημα
ADOQuery1->Active=true; // ΞΑΝΑενεργοποιούμε το ερώτημα
// για να
φρεσκαριστούν τα δεδομένα
// Φορτώνεται
η εικόνα της κάθε εγγραφής όταν το πεδίο DBEdit4
// δεν είναι
κενό. Όταν είναι κενό φορτώνεται μια φώτο χωρίς περιεχόμενο
if
(DBEdit4->Text != "")
Image1->Picture->LoadFromFile(DBEdit4->Text);
if
(DBEdit4->Text == "") \
Image1->Picture->LoadFromFile("d:\\AYT\\Database\\Baseis2\\no_image.bmp");
// χρησιμοποιούμε το διπλό \\ όταν γράφουμε το path ενός
αρχείου στον Builder
// γιατί το σύμβολο \ μόνο του δηλώνει την συνέχιση
μια γραμμής εντολής στην
// επόμενη
γραμμή.
// Το διπλό slash
// δηλώνει
σχόλια.
}
9. Πατήστε διπλό κλικ στην Form1 και γράψτε τις
παρακάτω εντολές
void __fastcall
TForm1::FormCreate(TObject *Sender)
{
// Μόλις ανοίξει η φόρμα1 Φορτώνει την εικόνα που
// αντιστοιχεί στην 1η εγγραφή του πίνακα ΑΥΤΟΚΙΝΗΤΑ
Image1->Picture->LoadFromFile(DBEdit4->Text);
}
10. Πατήστε διπλό κλικ στο DBNavigator1 και γράψτε τις παρακάτω εντολές
void
__fastcall TForm1::DBNavigator1Click(TObject *Sender,
TNavigateBtn Button)
{
// Όταν
πιέζονται τα κουμπιά του DBNavigator για μετακίνηση στις εγγραφές
// τότε
φορτώνεται η εικόνα της κάθε εγγραφής όταν το πεδίο DBEdit4
// δεν είναι
κενό. Όταν είναι κενό φορτώνεται μια φώτο χωρίς περιεχόμενο
if
(DBEdit4->Text != "")
Image1->Picture->LoadFromFile(DBEdit4->Text);
if
(DBEdit4->Text == "") \
Image1->Picture->LoadFromFile("d:\\AYT\\Database\\Baseis2\\no_image.bmp");
}
11. Πατήστε διπλό κλικ στο DBLookupComboBox1 και γράψτε τις παρακάτω εντολές
void
__fastcall TForm1::DBLookupComboBox1Click(TObject *Sender)
{
// Όταν
επιλέγεται μια τιμή από το DBLookupComboBox1 για μετακίνηση στις
// εγγραφές
τότε φορτώνεται η εικόνα της κάθε εγγραφής όταν το πεδίο DBEdit4
// δεν είναι
κενό. Όταν είναι κενό φορτώνεται μια φώτο χωρίς περιεχόμενο
if
(DBEdit4->Text != "")
Image1->Picture->LoadFromFile(DBEdit4->Text);
if
(DBEdit4->Text == "") \
Image1->Picture->LoadFromFile("d:\\AYT\\Database\\Baseis2\\no_image.bmp");
}
12. Αποθηκεύστε το Project στον υποφάκελο σας με την επιλογή FileàSave All
13. Εκτελέστε το Project με την επιλογή Run. Το αποτέλεσμα θα είναι μια εφαρμογή
όπως η παρακάτω εικόνα.
Λύση 9
1. Συνδεθείτε με Attach (ή κάντε Restore) στην βάση ENOIKIASEIS_AYTOKINHTON.
2. Ανοίξτε τον Builder και
3. Στην φόρμα 1 που θα παρουσιασθεί τοποθετήστε τα
παρακάτω χειριστήρια (components)
ADOConnection (1 φορά) (γραμμή
εργαλείων
ADOQuery (1 φορά) (γραμμή
εργαλείων
QuickRep (1 φορά) (γραμμή
εργαλείων QReport)
Button (1 φορά) (γραμμή εργαλείων Standard)
4. Αποθηκεύστε το Project σε νέο υποφάκελο μέσα στον φάκελό σας πχ.
ΕΠΙΘΕΤΟ\ΕΡΓΑΣΙΑ_9
5. Σύνδεση Βάσης Δεδομένων με C++ BUILDER και ρύθμιση ιδιοτήτων
Ρυθμίστε τις παρακάτω ιδιότητες για τα παραπάνω χειριστήρια
ADOConnection1 Connection StringàBuildàMicrosoft OLEDB Provider for SQL Serverà 1.
Επιλογή διακομιστή
2.
Όνομα Χρήστη=sa
Κωδικός πρόσβασης
=κενό
3.
Επιλογή βάσης δεδομένων=ΕΝΟΙΚΙΑΣΕΙΣ_ΑΥΤ
4. Δοκιμή σύνδεσης
Connected=true
ADOQuery1 Connection=ADOConnection1
SQL … = Select * From PELATES Order by EPITHETO
Active
=true
QuickRep1 DataSet= ADOQuery1
Από τις ιδιότητες του QuickRep1 ρυθμίστε τα παρακάτω
Bandsà HasColumnHeader=true
(εμφανίζει την κεφαλίδα
για ονόματα πεδίων)
HasDetailr=true (εμφανίζει
τις λεπτομέρειες με τις τιμές των πεδίων)
HasPageFooter=true (εμφανίζει
το υποσέλιδο της σελίδας)
HasPageHeader=true (εμφανίζει
την κεφαλίδα της σελίδας)
6. Πάνω στο QuickRep1 τοποθετήστε τα παρακάτω χειριστήρια (components)
QRDBText (4 φορές) (γραμμή
εργαλείων QReport)
QRLabel (7 φορές) (γραμμή
εργαλείων QReport)
Τοποθετήστε το
πρώτο QRLabel στην περιοχή του QuickReport που ονομάζεται PageHeader
QRLabel1à Caption=ΑΛΦΑΒΗΤΙΚΗ ΚΑΤΑΣΤΑΣΗ ΠΕΛΑΤΩΝ
Τοποθετήστε QRLabel στην περιοχή του QuickReport που ονομάζεται ColumnHeader
QRLabel2à Caption=ΚΩΔΙΚΟΣ
QRLabel3à Caption=ΕΠΙΘΕΤΟ ομοίως
για τα υπόλοιπα
Τοποθετήστε QRLabel στην περιοχή του QuickReport που ονομάζεται PageFooter
QRLabel6à Caption=ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩ ΙΙ
QRLabel7à Caption=ΑΣΚΗΣΗ10
Τοποθετήστε QRDBText στην περιοχή του QuickReport που ονομάζεται Detail
QRDBText1 à DataSet=ADOQuery1
DataField=KP
QRDBText2 à DataSet=ADOQuery1
DataField=ΕPITHETO
Ομοίως για τα
υπόλοιπα
Button1à Caption= Show Report
Διπλό κλικ στο Button1
Και γράψτε τον παρακάτω κώδικα
6. Τρέξτε το πρόγραμμα και
πατήστε το κουμπί Show
Report ώστε να εμφανιστεί η παρακάτω φόρμα. Τα
αποτελέσματα αυτά μπορείτε να τα μορφοποιήσετε, να τα εκτυπώσετε να
μετακινηθείτε ανάμεσα στις πιθανές σελίδες της αναφοράς.
7. Επαναλάβετε τα παραπάνω
βήματα, δημιουργώντας μια έκθεση-αναφορά που θα παρουσιάζει αλφαβητικά τα
αυτοκίνητα ανά μάρκα και μοντέλο.
8. (Άσκηση για το Σπίτι) Επαναλάβετε τα παραπάνω βήματα,
δημιουργώντας μια έκθεση-αναφορά που θα παρουσιάζει ένα ερώτημα ομαδοποίησης.
Δηλ. στην αρχή της ομάδος να φαίνεται το Επίθετο και Όνομα του πελάτη και κάτω
από αυτό να παρουσιάζονται αναλυτικά το ιστορικό των ενοικιάσεων που έχει κάνει
καθώς και το συνολικό ποσό που πλήρωσε.
1. Συνδεθείτε με Attach (ή κάντε Restore) στην βάση ENOIKIASEIS_AYTOKINHTON.
2. Στις Αποθηκευμένες διαδικασίες (Stored Procedures) πιέστε:
δεξί κλικàNew Stored Procedure.. και γράψτε την παρακάτω διαδικασία η οποία
παίρνει μία τιμή εισόδου που την κρατάει στην μεταβλητή @POSOSTO και ενημερώνει την ΤΙΜΗ ΕΝΟΙΚΙΑΣΗΣ του
πίνακα ΑΥΤΟΚΙΝΗΤΑ αυξάνοντας την κατά το ποσοστό εισόδου.
Για να ελέγξετε την σωστή σύνταξη της διαδικασίας πιέστε το
κουμπί Check Syntax και σε περίπτωση
που όλα είναι σωστά θα σας εμφανίσει το παρακάτω μήνυμα.
Ανοίξτε το πίνακα αυτοκίνητα Δεξί κλικàOpen TableàReturn All Rows θα
σας εμφανίσει τις γραμμές του πίνακα Αυτοκίνητα πριν εκτελέσετε τη διαδικασία AFXISI_TIMIS
2.
Για να εκτελέσετε την παραπάνω διαδικασία Δεξί κλικàOpen TableàQuery
Γράψτε την παρακάτω εντολή και
τρέξτε το ερώτημα με το Όταν
εκτελεστεί η διαδικασία θα αυξηθεί η τιμή ενοικίασης κατά 10%.
Ανοίξτε πάλι τον πίνακα αυτοκίνητα Δεξί κλικàOpen TableàReturn All Rows θα
σας εμφανίσει τις ενημερωμένες γραμμές του πίνακα Αυτοκίνητα
ΔΗΜΙΟΥΡΓΙΑ
ΣΚΑΝΔΑΛΗΣ (trigger)
Σκανδάλες ονομάζουμε τις διαδικασίες οι οποίες εκτελούνται
αυτόματα μόλις ενημερώσουμε ή εισάγουμε ή διαγράψουμε τιμές σε ένα πίνακα.
Θα χρησιμοποιήσουμε μια σκανδάλη για να ενημερώνουμε αυτόματα το υπολογιζόμενο πεδίο ΤΕΛΙΚΟ ΠΟΣΟ το οποία
προκύπτει από το άθροισμα του ΠΟΣΟΥ ΠΛΗΡΩΜΗΣ και της ΧΡΕΩΣΗΣ ΖΗΜΙΑΣ
3.
Στον πίνακα ΕΝΟΙΚΙΑΣΗ πιέστε δεξί κλικàΌλες οι Εργασίες àManage Triggers…
Γράψτε τις παρακάτω εντολές και ελέγξτε για την σωστή
σύνταξη.
4. Ανοίξτε το πίνακα ΕΝΟΙΚΙΑΣΗ και εισάγετε μια νέα εγγραφή
χωρίς να δώσετε τιμή στο πεδίο TELIKO_POSO. Θα δείτε ότι μόλις εισάγετε τιμές στο POSO_PLHROMHS και στο XREOSH_ZHMIAS και πατήσετε TAB για να πάτε στην νέα εγγραφή, τότε θα ενημερωθεί
αυτόματα το πεδίο TELIKO_POSO.
5. Στον Πίνακα PELATES προσθέστε ένα
ακόμη πεδίο με όνομα HLIKIA τύπου INT (ακέραιος) και αποθηκεύστε τον πίνακα.
6. Στον Πίνακα PELATES δημιουργήστε μια
νέα σκανδάλη (trigger) η οποία θα υπολογίζει
την ηλικία του κάθε πελάτη από την Ημερομηνία Γέννησης που θα
καταχωρείται. Για το υπολογισμό αυτό θα
χρησιμοποιηθούν δύο νέες συναρτήσεις του SQL Server
DATEDIFF( YEAR, Ημερομηνία αρχής, Ημερομηνία Τέλους)
Η συνάρτηση αυτή υπολογίζει την διαφορά μεταξύ δύο
ημερομηνιών και επιστρέφει την διαφορά αυτή σε ημέρες (DAY), χρόνια (YEAR), εβδομάδες (WEEK) κλπ.
GETDATE( ) Η συνάρτηση αυτή επιστέφει την τρέχουσα
Ημερομηνία.
Γνωρίζοντας αυτές τις συναρτήσεις γράψτε την παρακάτω
σκανδάλη.
7. Ανοίξτε το πίνακα PELATES και εισάγετε μια νέα εγγραφή χωρίς να δώσετε τιμή στο πεδίο HLIKIA. Θα δείτε ότι μόλις εισάγετε τιμή στην ΗΜ_GENNHSIS και πατήσετε TAB για να πάτε στην επόμενη εγγραφή, τότε θα ενημερωθεί αυτόματα το πεδίο HLIKIA.
1. Ανοίξτε τον SQL Query Analyzer , εντοπίστε την βάση δεδομένων που δημιουργήσατε στην άσκηση 3 ΕΝΟΙKIASEIS_AYTOKINHTON και πατήστε διπλό
κλικ για να αναδιπλωθούν τα αντικείμενα της.
2. Επιλέξτε τον Πίνακα ΑΥΤΟΚΙΝΗΤΑ. Δεξί κλικ πάνω
του. Εμφανίζεται το παρακάτω μενού της εικόνας όπου μπορείτε να δημιουργήσετε
δικά σας script σε παράθυρο, σε αρχείο ή στο
πρόχειρο με τις διαθέσιμες εντολές Create, Drop, Select, Insert, Update, Delete. Όλες αυτές οι εντολές αφορούν τον πίνακα που επιλέξατε.
Πχ επιλέξτε
Script object to New Window AsàCreate
Θα εμφανιστεί το
παρακάτω ερώτημα:
CREATE TABLE [AYTOKINHTA] (
[KA]
[int] NOT NULL ,
[MARKA]
[varchar] (20) COLLATE Greek_CI_AS NULL ,
[MONTELO]
[varchar] (20) COLLATE Greek_CI_AS NULL ,
[AR_KYKLOFORIAS]
[varchar] (20) COLLATE Greek_CI_AS NULL ,
[THESIS]
[int] NULL ,
[PORTES]
[int] NULL ,
[XROMA]
[varchar] (10) COLLATE Greek_CI_AS NULL ,
[TIMH_ENOIKIASIS]
[real] NULL ,
[TYPOS_KAYSIMOY] [varchar] (10) COLLATE Greek_CI_AS NULL ,
[HMEROM_KYKLOFORIAS] [smalldatetime] NULL ,
[XILIOMETRA]
[int] NULL ,
CONSTRAINT
[PK_AYTOKINHTA] PRIMARY KEY CLUSTERED
(
[KA]
) ON [PRIMARY]
) ON [PRIMARY]
GO
Μπορείτε να το
αποθηκεύσετε με την εντολή FileàSave As σε ένα αρχείο το
οποίο θα έχει κατάληξη .sql
Συγχαρητήρια,
δημιουργήσατε το πρώτο σας script file.
2. Επαναλάβετε το ίδιο για όλους τους πίνακες της βάσης και
αποθηκεύσετε όλα τα Create Table σε ένα αρχείο
Επίθετο_script.sql στον φάκελό σας. Εάν καλέσετε αυτό το αρχείο από οποιαδήποτε βάση θα
δημιουργηθεί η ίδια δομή πινάκων.
Δημιουργήστε μια ΝΕΑ Βάση Δεδομένων
με όνομα ΑPOTHΙΚΙ_ΕPΙΤΗΕΤΟ
ΠΡΟΣΟΧΗ: Αντικαταστήστε
παρακάτω όλους τους τύπους δεδομένων char με varchar.
2. Στους παραπάνω πίνακες προσθέστε όσα επιπλέον πεδία πιστεύετε ότι χρειάζονται
και περιγράφουν καλύτερα τις οντότητες των πινάκων. Όπως πχ στον Πίνακα
Paragelies
προσθέστε τα πεδία ΗΜ_Paraggelias date,
Tropos_Pliromis varchar(20),
Topos_Paradosis varchar(20),
Pelates
προσθέστε τα πεδία HM_GENNHSIS date,
FOTO varchar(100),
HLIKIA int
3. Δημιουργήστε τις συσχετίσεις και το αντίστοιχο Διάγραμμα σχέσεων.
4.
Εισάγετε
δεδομένα στους πίνακες, τουλάχιστον 3 εγγραφές σε κάθε πίνακα.
Ανοίξτε τον Builder και
5.
Στην φόρμα 1 που θα παρουσιασθεί τοποθετήστε τα
παρακάτω χειριστήρια (components) όπως στο παρακάτω
σχήμα.
ADOConnection (1 φορά) (γραμμή
εργαλείων
ADOQuery (5 φορές) (γραμμή
εργαλείων
DataSource (5 φορές) (γραμμή
εργαλείων Data Aceess)
DBGrid (3 φορές) (γραμμή
εργαλείων Data Controls)
DBNavigator (4 φορές) (γραμμή εργαλείων Data Controls)
DBEdit (4 φορές) (γραμμή
εργαλείων Data Controls)
Label (8 φορές) (γραμμή
εργαλείων Standard)
(όπου απαιτείται πχ
Όνομα Πεδίο, Τίτλος καρτέλας κλπ)
Button (1 φορά) (γραμμή εργαλείων Standard)
όπως φαίνονται στην παρακάτω
εικόνα
6. Αποθηκεύστε το Project σε νέο υποφάκελο μέσα στον φάκελό σας πχ. EΠΙΘEΤΟ\EΡΓΑΣΙΑ12
7. Σύνδεση Βάσης Δεδομένων με C++ BUILDER και
ρύθμιση ιδιοτήτων
Ρυθμίστε τις παρακάτω ιδιότητες για τα παραπάνω χειριστήρια
όπως στην Άσκηση2
ADOConnection1 Connection StringàBuildàMicrosoft OLEDB Provider for SQL Serverà 1.
7.πιλογή
διακομιστή
2.
Όνομα Χρήστη=sa
Κωδικός πρόσβασης =κενό
3.
7.πιλογή βάσης δεδομένων=ΑPΟΤΗΙΚΙ
4. Δοκιμή σύνδεσης
Connected=true
ADOQuery1 Connection=ADOConnection1
SQL … = Select *
From Apothiki
Active
=true
DataSource1 DataSet
=ADOQuery1
Το ίδιο για τα
υπόλοιπα ADOQuery2 μέχρι AQOQuery4 τα οποία θα συνδεθούν με τους πίνακες Pelates, Praggelies, Paraggelies_Pelaton αντίστοιχα
Στο ADOQuery5
ρυθμίστε μόνο την σύνδεση με την βάση
ADOQuery5 Connection=ADOConnection1
DBEdit1 DataSource= DataSource4
DataField=Kodikos_Polisis
Ομοίως για τα
υπόλοιπα DBEdit
Label1 Caption=ΑΠΟΘΗΚΗ
Label2 Caption=Κείμενο που περιγράφει τα πεδία πχ KA
……….
DBNavigator1 DataSource= DataSource1
DBNavigator2 DataSource= DataSource2
DBNavigator3 DataSource= DataSource3
DBNavigator4 DataSource= DataSource4
Button1 Caption=Update
8. Από
την καρτέλα Standard εισάγουμε ένα Button, στο οποίο δίνουμε όνομα Update και το προγραμματίζουμε ανάλογα,
έτσι ώστε όταν καταχωρούμε δεδομένα στον πίνακα Παραγγελιές Πελατών, να
ενημερώνεται με το πάτημα του κουμπιού η Αποθήκη.
9.
Αποθηκεύστε
τα αρχεία (FileàSave All) και εκτελέστε το πρόγραμμα (Run).
10.
Ομοίως δημιουργήστε μία φόρμα για την εισαγωγή
και την ενημέρωση της αποθήκης όταν γίνονται αγορές από τους προμηθευτές. Σε αυτή την περίπτωση η ποσότητα
αγοράς θα προστίθεται στην ποσότητα της αποθήκης.
11.
Δημιουργήστε νέα φόρμα που θα προβάλει το ιστορικό
παραγγελιών ενός πελάτη που θα επιλέγεται από ένα DBLookupComboBox και θα
υπολογίσει το συνολικό ποσό για όλες τις παραγγελίες που έκανε ο συγκεκριμένος
πελάτης, και θα το προβάλει σε ένα Label όπως στην άσκηση 5.
12.
Δημιουργήστε νέα φόρμα που θα προβάλει το ιστορικό
αγορών από έναν προμηθευτή που θα επιλέγεται από ένα DBLookupComboBox. Θα
υπολογίζει το συνολικό ποσό για όλες τις αγορές που έγιναν από τον συγκεκριμένο
προμηθευτή και θα το προβάλει σε ένα Label όπως στην άσκηση 5.
13.
Δημιουργήστε νέα φόρμα που θα προβάλει το ιστορικό
κίνησης προϊόντων της αποθήκης.
Θα
επιλέγεται ένα προϊόν της αποθήκης από ένα DBLookupComboBox.
Θα
προβάλλονται σε ένα DBGrid οι κινήσεις παραγγελιών του προϊόντος.
Σε
άλλο DBGrid θα προβάλλονται οι κινήσεις
αγορών του συγκεκριμένου προϊόντος.
Θα υπολογίζεται
το συνολικό ποσό για όλες τις παραγγελίες που έγιναν για το συγκεκριμένο προϊόν
και θα το προβάλει σε ένα Label όπως στην άσκηση 5.
Θα
υπολογίζεται το συνολικό ποσό για όλες τις αγορές που έγιναν για το
συγκεκριμένο προϊόν και θα το προβάλει σε ένα Label όπως στην άσκηση 5.
14.
Δημιουργήστε νέα φόρμα που θα προβάλει την καρτέλα με τα σταθερά στοιχεία του ΠΕΛΑΤΗ, στην οποία θα προβάλλεται και η
φωτογραφία του όπως στην άσκηση 8.
15.
Δημιουργήστε νέα φόρμα που θα προβάλει την καρτέλα με τα σταθερά στοιχεία της
ΑΠΟΘΗΚΗΣ, στην οποία θα προβάλλεται και η φωτογραφία
του κάθε είδους της αποθήκης όπως
στην άσκηση 8.
16.
Δημιουργήστε μια σκανδάλη στον SQL
SERVER με όνομα CALC_AGE που θα υπολογίζει την ΗΛΙΚΙΑ του κάθε πελάτη μόλις καταχωρείται η Ημερομηνία Γέννησης
όπως στην άσκηση 10.
17.
Δημιουργήστε νέα φόρμα με αναφορά εκτύπωσης QuickReports
για τον πίνακα ΠΕΛΑΤΕΣ όπου θα προβάλλονται αλφαβητικά τα σταθερά στοιχεία των ΠΕΛΑΤΩΝ όπως στην άσκηση 9.
18.
Δημιουργήστε νέα φόρμα με αναφορά εκτύπωσης QuickReports
για τον πίνακα ΑΠΟΘΗΚΗ όπου θα προβάλλονται αλφαβητικά τα σταθερά στοιχεία της ΑΠΟΘΗΚΗΣ όπως στην άσκηση 9.
19.
Αντιγράψτε τα .MDF και .LDF αρχεία της βάσης σας και μαζί με τον φάκελο που έχει όλο το Project
του Builder γράψτε τα σε ένα CD
φέρτε τα στο εργαστήριο
20. Θα
εξετασθείτε προφορικά για τη άσκηση αυτή.