ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ
ΠΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ IBDataSet1. ΠΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ Π΅Π³ΠΎ Π½Π° BOOKS_DataSet (ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Name). Π£ΠΊΠ°ΠΆΠ΅ΠΌ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ — DataBase = IBDataBase1 ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ — Transaction = IBTransaction1. Π£ΠΊΠ°ΠΆΠ΅ΠΌ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ SelectSQL ΡΠ΅ΠΊΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°: «select* from BOOKS». ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° GeneratorField Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΏΠΎΠ»Π΅, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠΌ ΠΈ ΡΠ°ΠΌ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ. ΠΠΊΡΠΈΠ²ΠΈΡΡΠ΅ΠΌ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
— 23 ;
ΠΠ°Π΄Π°Π½ΠΈΠ΅
Β· Π ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΡΠΉΡΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π»ΡΠ±ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ.
1. Π Π‘Π£ΠΠ InterBase 6.0/Firebird 1.5 ΡΠ΅Π°Π»ΠΈΠ·ΡΠΉΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΡΠ°ΡΡΡ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΠ°Π½Π΅Π΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ:
1) ΡΠ°Π±Π»ΠΈΡΡ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°
2) ΡΡΠΈΠ³Π³Π΅ΡΡ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠ΅ ΠΊΠ°ΡΠΊΠ°Π΄Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΊΠ°ΡΠΊΠ°Π΄Π½ΠΎΠ΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΏΠΎΠ»Π΅ΠΉ
3) ΡΡΠΈΠ³Π³Π΅ΡΡ, ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡΠΈΠ΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° Π² ΠΏΠΎΠ»Π΅ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°
4) ΡΡΠΈΠ³Π³Π΅ΡΡ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠ΅ ΠΆΡΡΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ
5) Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΡΡΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Ρ ΡΠ°Π½ΠΈΠΌΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ
2. Π ΠΠ‘Π Delphi ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π»ΡΠ±ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ (BDE, IBX, ADO ΠΈ Π΄Ρ.) Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΈ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ , Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠ²ΠΎΠ΄Π° ΠΎΡΡΠ΅ΡΠ°.
1) Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΡΠ²ΠΎΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ.
2) ΠΠ°ΠΆΠ΄Π°Ρ ΠΊΠ½ΠΈΠ³Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ·Π΄Π°Π½Π° Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²Π΅.
3) Π ΠΎΠ΄Π½ΠΎΠΌ ΠΈ ΡΠΎΠΌ ΠΆΠ΅ ΠΈΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²Π΅ ΠΈΠ·Π΄Π°Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ½ΠΈΠ³.
4) ΠΠ°ΠΆΠ΄Π°Ρ ΠΊΠ½ΠΈΠ³Π° ΠΈΠΌΠ΅Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠ°Π½ΠΈΡ, ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΏΠ»Π΅ΡΠ°, Π²Π΅Π»ΠΈΡΠΈΠ½Ρ ΡΠΈΡΠ°ΠΆΠ°.
5) ΠΠ°ΠΆΠ΄Π°Ρ ΠΊΠ½ΠΈΠ³Π° Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ ΠΈΠ»ΠΈ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΈΠ»ΠΈ Π½Π° ΡΡΠΊΠ°Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ°ΡΠ΅Π»Ρ.
6) ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠΈΡΠ°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ Π²Π·ΡΡΡ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ½ΠΈΠ³.
7) ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠΈΡΠ°ΡΠ΅Π»Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ Π°Π±ΠΎΠ½Π΅ΠΌΠ΅Π½ΡΠ°.
8) ΠΠΌΡ ΡΠΈΡΠ°ΡΠ΅Π»Ρ Π½Π΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎ. ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΠΈΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²Π° Π½Π΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎ.
9) Π§ΠΈΡΠ°ΡΠ΅Π»Ρ ΠΈΠΌΠ΅Π΅Ρ Π€ΠΠ, ΡΠ΅Π»Π΅ΡΠΎΠ½, Π°Π΄ΡΠ΅Ρ. ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²ΠΎ — Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Π³ΠΎΡΠΎΠ΄.
ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΡΠΈΠ²Π΅Π΄ΡΠΌ ER-Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ:
— 23 ;
Π ΠΈΡ. 1. ER-Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΊΠ½ΠΈΠ³Π° Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π½Π° ΡΡΠΊΠ°Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ°ΡΠ΅Π»Ρ, ΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ²ΡΠ·Π°ΡΡ ΡΡΡΠ½ΠΎΡΡΠΈ «ΠΠ½ΠΈΠ³Π°» ΠΈ «Π§ΠΈΡΠ°ΡΠ΅Π»ΠΈ» ΠΏΠΎ ΠΏΠΎΠ»Ρ «ID ΠΠ±ΠΎΠ½Π΅Π½ΡΠ°» ΡΠ²ΡΠ·ΡΡ ΡΠΈΠΏΠ° ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π² ΡΡΠΎΠΌ ΠΏΠΎΠ»Π΅, ΡΠ²Π»ΡΡΡΠ΅ΠΌΡΡ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΠΊΠ»ΡΡΠΎΠΌ Π΄Π»Ρ Π°ΡΡΠΈΠ±ΡΡΠ° «ΠΠ½ΠΈΠ³ΠΈ», ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΡΡ Π·Π°ΠΏΠΈΡΠΈ, ΠΈΠ±ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠΈΡΠ°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ Π²Π·ΡΡΡ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ½ΠΈΠ³. ΠΡΠ»ΠΈ ΡΡΠΎ ΠΏΠΎΠ»Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ NULL, ΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π΄Π°Π½Π½Π°Ρ ΠΊΠ½ΠΈΠ³Π° Π½ΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΡΠΊΠ°Ρ Ρ ΡΠΈΡΠ°ΡΠ΅Π»Ρ, Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅. ΠΠΎΠ±Π°Π²ΠΈΠΌ Π΄Π»Ρ ΡΡΡΠ½ΠΎΡΡΠΈ «ΠΠ½ΠΈΠ³Π°» Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ «ΠΠ°ΡΠ° Π²ΡΠ΄Π°ΡΠΈ». ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°Π²Π½ΡΡΡΡΡ NULL Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ «ID ΠΠ±ΠΎΠ½Π΅Π½ΡΠ°» ΡΠ°ΠΊ ΠΆΠ΅ ΡΠ°Π²Π½ΡΠ΅ΡΡΡ NULL.
ΠΡΠΈΠ²Π΅Π΄ΡΠΌ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΊ ΡΡΠ΅ΡΡΠ΅ΠΉ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΠ΅. Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ «ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²ΠΎ» ΡΡΡΠ½ΠΎΡΡΠΈ «ΠΠ½ΠΈΠ³ΠΈ» ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π½Π΅ Π·Π°Π²ΠΈΡΡΡΠΈΠ΅ ΠΎΡ ΠΊΠ»ΡΡΠ΅Π²ΡΡ . ΠΠΎΡΡΠΎΠΌΡ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ «ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²ΠΎ» ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΡΠ½ΠΎΡΡΡΡ ΠΈ Π²Π²Π΅Π΄ΡΠΌ Π΄Π»Ρ Π½Π΅Π³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ «ID ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²Π°» ΠΈ ΡΠ΄Π΅Π»Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ.
— 23 ;
Π ΠΈΡ. 2. ER-Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° ΠΠΏΠΈΡΠ΅ΠΌ ΡΡΡΡΠΊΡΡΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ.
Π’Π°Π±Π»ΠΈΡΠ° «ΠΠ½ΠΈΠ³ΠΈ» (Books)
ΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ | Π’ΠΈΠΏ Π΄Π°Π½Π½ΡΡ | ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ | |
ID ΠΠ½ΠΈΠ³ΠΈ (ID_Books) | Π¦Π΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ | NOT NULL ΠΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎ | |
ΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ (Name) | Π‘ΡΡΠΎΠΊΠ° (30) | NOT NULL | |
ID ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²Π° (ID_Publishers) | Π¦Π΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ | NOT NULL ΠΠ½Π΅ΡΠ½ΠΈΠΉ ΠΊΠ»ΡΡ | |
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠ°Π½ΠΈΡ (K_pages) | Π¦Π΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ | NOT NULL | |
Π’ΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΏΠ»ΡΡΠ° (Cover) | Π‘ΡΡΠΎΠΊΠ° (15) | NOT NULL | |
Π’ΠΈΡΠ°ΠΆ (Tiraz) | Π¦Π΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ | NOT NULL | |
ID ΠΠ±ΠΎΠ½Π΅Π½ΡΠ° (ID_abonent) | Π¦Π΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ | ΠΠ½Π΅ΡΠ½ΠΈΠΉ ΠΊΠ»ΡΡ | |
ΠΠ°ΡΠ° Π²ΡΠ΄Π°ΡΠΈ (Date_issue) | ΠΠ°ΡΠ° | ||
Π’Π°Π±Π»ΠΈΡΠ° «ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²Π°» (Publishers)
ΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ | Π’ΠΈΠΏ Π΄Π°Π½Π½ΡΡ | ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ | |
ID ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²Π° (ID_Publishers) | Π¦Π΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ | NOT NULL ΠΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎ | |
ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ (Name) | Π‘ΡΡΠΎΠΊΠ° (20) | NOT NULL | |
ΠΠΎΡΠΎΠ΄ (City) | Π‘ΡΡΠΎΠΊΠ° (20) | ||
Π’Π°Π±Π»ΠΈΡΠ° «Π§ΠΈΡΠ°ΡΠ΅Π»ΠΈ» (Readers)
ΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ | Π’ΠΈΠΏ Π΄Π°Π½Π½ΡΡ | ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ | |
ID ΠΠ±ΠΎΠ½Π΅Π½ΡΠ° (ID_ abonent) | Π¦Π΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ | NOT NULL ΠΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎ | |
Π€ΠΠ (FIO) | Π‘ΡΡΠΎΠΊΠ° (30) | NOT NULL | |
Π’Π΅Π»Π΅ΡΠΎΠ½ (Telephone) | Π‘ΡΡΠΎΠΊΠ° (10) | ||
ΠΠ΄ΡΠ΅Ρ (Address) | Π‘ΡΡΠΎΠΊΠ° (20) | NOT NULL | |
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
Π‘Π΅ΡΠ²Π΅ΡΠ½ΡΡ ΡΠ°ΡΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π±ΡΠ΄Π΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ FireBird 2.1 Π² Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ IBExpert.
ΠΠ°ΠΏΡΡΡΠΈΠΌ IBExpert. ΠΡΠ±Π΅ΡΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Database/Create Database (ΠΠ°Π·Π° Π΄Π°Π½Π½ΡΡ /Π‘ΠΎΠ·Π΄Π°ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ). Π ΠΏΠΎΡΠ²ΠΈΠ²ΡΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ Create Database (Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ) ΡΠΊΠ°ΠΆΠ΅ΠΌ:
Β· Server (Π‘Π΅ΡΠ²Π΅Ρ) — Local (Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ)
Β· Database (Π€Π°ΠΉΠ» ΠΠ) — C:1LIBRARY.fdb
Β· UserName (ΠΠΌΡ_ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ) — SYSDBA
Β· Password (ΠΏΠ°ΡΠΎΠ»Ρ) — masterkey — ΡΡΠΎ ΠΈΠΌΡ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
Β· Charset (ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°) — WIN1251
Β· SQL Dialect (ΠΠΈΠ°Π»Π΅ΠΊΡ ΠΠ) — Dialect 3 (ΠΠΈΠ°Π»Π΅ΠΊΡ 3).
ΠΠ°ΠΆΠΌΡΠΌ OK. Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½Π°. Π ΠΏΠΎΡΠ²ΠΈΠ²ΡΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ Database Register (Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΠΠ) Π²ΡΠ±Π΅ΡΠ΅ΠΌ Π² ΠΏΠΎΠ»Π΅ ΠΠ΅ΡΡΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ° FireBird 2.1. ΠΠ°ΠΆΠΌΠ΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ Register, ΠΈ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ Π±ΡΠ΄Π΅Ρ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π° ΠΈ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡΡ Π² ΠΎΠΊΠ½Π΅ Database Explorer. Π ΡΡΠΎΠΌ ΠΎΠΊΠ½Π΅ Π²ΡΠ±Π΅ΡΠ΅ΠΌ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ Π²ΡΠ±Π΅ΡΠ΅ΠΌ Database/Connect to Database (ΠΠ°Π·Π° Π΄Π°Π½Π½ΡΡ /ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΊ ΠΠ°Π·Π΅ Π΄Π°Π½Π½ΡΡ ). Π ΠΎΠΊΠ½Π΅ Database Explorer ΠΎΡΠΎΠ±ΡΠ°Π·ΡΡΡΡ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡ
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ°Π±Π»ΠΈΡΡ «ΠΠ½ΠΈΠ³ΠΈ» (Books). ΠΡΠ±Π΅ΡΠ΅ΠΌ Database/New Table (ΠΠ°Π·Π° Π΄Π°Π½Π½ΡΡ /ΠΠΎΠ²Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ°). Π ΠΎΠΊΠ½Π΅ Table (Π’Π°Π±Π»ΠΈΡΠ°) Π·Π°Π΄Π°Π΄ΠΈΠΌ ΠΈΠΌΡ Books ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ Π½Π°Π·ΡΠ²Π°Π½ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΈΡ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ. ΠΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌ ΡΠΊΡΠΈΠΏΡ, Π½Π°ΠΆΠ°Π² .
ΠΠ°Π΄Π°Π΄ΠΈΠΌ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΡΠ°Π±Π»ΠΈΡΡ «BOOKS». ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ΄Π΅Π»Π°Π΅ΠΌ Π°ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΡ Constraint (ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ). Π©Π΅Π»ΠΊΠ½Π΅ΠΌ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΎΠΊΠ½Π° Table (Π’Π°Π±Π»ΠΈΡΠ°) ΠΈ Π² Π²ΡΠΏΠ°Π΄Π°ΡΡΠ΅ΠΌ ΠΌΠ΅Π½Ρ Π²ΡΠ±Π΅ΡΠ΅ΠΌ ΠΏΡΠ½ΠΊΡ New primary key (Π½ΠΎΠ²ΡΠΉ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ). ΠΠ°Π»Π΅Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ Π΄Π»Ρ Π°ΡΡΠΈΠ±ΡΡΠ° «ID_BOOKS». ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ΅Π»ΠΊΠ½Π΅ΠΌ Π»Π΅Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ Π² ΠΏΠΎΠ»Π΅ On Field (ΠΠ° ΠΏΠΎΠ»Π΅) ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ Π½ΡΠΆΠ½ΡΠΉ Π°ΡΡΠΈΠ±ΡΡ. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ ΠΏΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° — Π²ΡΠ±Π΅ΡΠ΅ΠΌ Ascending Π΄Π»Ρ Index Sorting.
ΠΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡ Fields (ΠΏΠΎΠ»Ρ) ΡΠ΅Π»ΡΠΊΠΎΠΌ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ Π½Π° ΠΏΠΎΠ»Π΅ «ID_BOOKS» Π²ΡΠ·ΠΎΠ²Π΅ΠΌ ΠΌΠ΅Π½Ρ, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΠ±Π΅ΡΠ΅ΠΌ Edit Field ID_BOOKS. Π ΠΏΠΎΡΠ²ΠΈΠ²ΡΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡ Autoincrement (Π°Π²ΡΠΎ ΠΏΡΠΈΡΠ°ΡΠ΅Π½ΠΈΠ΅). ΠΠΈΠΆΠ΅ ΠΏΠΎΡΠ²ΡΡΡΡ ΡΡΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ Generator (Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ) Trigger (ΡΡΠΈΠ³Π³Π΅Ρ) ΠΈ Procedure (ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°). ΠΠ° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Generator Π²ΡΠ±Π΅ΡΠ΅ΠΌ Create Generator (ΡΠΎΠ·Π΄Π°ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ), ΠΏΡΠΈΡΠ²ΠΎΠΈΠΌ Π΅ΠΌΡ ΠΈΠΌΡ «GEN_BOOKS_ID» ΠΈ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°ΠΆΠ΅ΠΌ ΡΠ°Π²Π½ΡΠΌ 1. ΠΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡ Trigger ΠΈ Π²ΡΠ±Π΅ΡΠ΅ΠΌ Create Trigger (ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠΈΠ³Π³Π΅Ρ). ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½ ΠΊΠΎΠ΄:
IF (NEW." ID_ BOOKS" IS NULL) THEN
NEW." ID_ BOOKS" = GEN_ID (GEN_BOOKS_ID, 1);
ΠΠ΄Π΅ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΡΠ»ΠΎΠ²ΠΈΡ. ΠΡΠ»ΠΈ ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ»Π±ΡΠ° «ID_ BOOKS» (ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ NEW), ΠΎΠ½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΡΡΡΠΌ (ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ IS NULL) ΡΠΎ Π΅ΠΌΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΠΎΠ΅ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΌ ΡΠ°Π½Π΅Π΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠΌ GEN_BOOKS_ID (GEN_ID (ΠΈΠΌΡ_Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ°, ΡΠ°Π³) — ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ). ΠΠ°ΠΆΠΌΡΠΌ «ΠΠ» ΠΈ ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌ ΡΠΊΡΠΈΠΏΡ.
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠ°Π±Π»ΠΈΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ ΠΈ ΡΡΠΈΠ³Π³Π΅ΡΡ, ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡΠΈΠ΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ ΡΡΠΈΡ ΡΠ°Π±Π»ΠΈΡ.
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΄Π²Π΅ ΠΎΡΡΠ°Π²ΡΠΈΠ΅ΡΡ ΡΠ°Π±Π»ΠΈΡΡ: «ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²Π°» (Publishers) ΠΈ «Π§ΠΈΡΠ°ΡΠ΅Π»ΠΈ» (Readers).
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠΈΠ³Π³Π΅ΡΠΎΠ²
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΡΠΈΠ³Π³Π΅ΡΡ ΠΆΡΡΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΡΠ°Π±Π»ΠΈΡΡ «BOOKS». ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ°Π±Π»ΠΈΡΡ «BOOKS_JOURNAL», Π² ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π»ΡΠ±ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ, ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ «BOOKS». ΠΡΠΈ ΡΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π΄Π°ΡΠ° (ΠΏΠΎΠ»Π΅ «DATE»), ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ (INS, UPD, DEL) Π½Π°Π΄ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ «BOOKS» (ΠΏΠΎΠ»Π΅ «OPERATION»), Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ°ΡΠΎΠ΅ ΠΈ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ»Π±ΡΠΎΠ² ΡΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ. ΠΠ»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π±ΡΠ΄Π΅Ρ ΠΏΡΡΡΡΠΌ. ΠΠ»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΡΡΡΠΌ Π±ΡΠ΄Π΅Ρ ΡΡΠ°ΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ»Π±ΡΠΎΠ².
ΠΠ»Ρ ΠΆΡΡΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π±ΡΠ»Π° ΡΠΎΠ·Π΄Π°Π½Π° ΡΠ°Π±Π»ΠΈΡΠ°:
CREATE TABLE BOOKS_JOURNAL (
OPERATION CHAR (6) NOT NULL,
ID_BOOKS_OLD INTEGER,
ID_BOOKS_NEW INTEGER,
ID_PUBLISHERS_OLD INTEGER,
ID_PUBLISHERS_NEW INTEGER,
K_PAGES_OLD INTEGER,
K_PAGES_NEW INTEGER,
COVER_OLD VARCHAR (15),
COVER_NEW VARCHAR (15),
TIRAZ_OLD INTEGER,
TIRAZ_NEW INTEGER,
ID_ABONENT_OLD INTEGER,
ID_ABONENT_NEW INTEGER,
DATE_ISSUE_OLD DATE,
DATE_ISSUE_NEW DATE,
NAME_OLD VARCHAR (20),
NAME_NEW VARCHAR (20),
DATE_ DATE NOT NULL,
TIME_ TIME NOT NULL,
ID_JOURNAL INTEGER NOT NULL);
ALTER TABLE BOOKS_JOURNAL ADD PRIMARY KEY (ID_JOURNAL);
Π’Π΅ΠΏΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΡΠΈΠ³Π³Π΅Ρ, Π·Π°ΠΊΡΠ΅ΠΏΠ»ΡΠ½Π½ΡΠΉ Π·Π° ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ «BOOKS» Π΄Π»Ρ Π²ΡΡΠ°Π²ΠΊΠΈ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ. ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠΈΠ³Π³Π΅ΡΠ° Π²ΡΠ±Π΅ΡΠ΅ΠΌ Triggers/New Trigger…(Π’ΡΠΈΠ³Π³Π΅Ρ/ΠΠΎΠ²ΡΠΉ ΡΡΠΈΠ³Π³Π΅Ρ). ΠΠΎΡΠ²ΠΈΡΡΡ ΠΎΠΊΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠΈΠ³Π³Π΅ΡΠ° Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΊΠ°ΠΆΠ΅ΠΌ:
Β· ΠΠΌΡ — «JOURNAL»;
Β· ΠΠ»Ρ ΡΠ°Π±Π»ΠΈΡΡ — «BOOKS»;
Β· Π’ΠΈΠΏ — «BEFORE», Ρ. Π΅. Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠ΅ΠΆΠ΄Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ;
Β· Π£ΠΊΠ°ΠΆΠ΅ΠΌ INSERT, UPDATE, DELETE.
ΠΠΎΠ»Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΡΡΠΈΠ³Π³Π΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ:
SET TERM ^ ;
CREATE OR ALTER TRIGGER JOURNAL FOR BOOKS
ACTIVE BEFORE INSERT OR UPDATE OR DELETE POSITION 0
AS
begin
IF (INSERTING) THEN
begin
insert into BOOKS_JOURNAL values ('INSERT', null, new. id_books, null, new. id_publishers, null, new. k_pages, null, new. cover, null, new. tiraz, null, new. id_abonent, null, new. date_issue, null, new.name, 'now', 'now', gen_id (generator_journal, 1));
end
IF (updating) THEN
begin
insert into BOOKS_JOURNAL values ('UPDATE', old. id_books, new. id_books, old. id_publishers, new. id_publishers, old. k_pages, new. k_pages, old. cover, new. cover, old. tiraz, new. tiraz, old. id_abonent, new. id_abonent, old. date_issue, new. date_issue, old.name, new.name, 'now', 'now', gen_id (generator_journal, 1));
end
IF (deleting) THEN
begin
insert into BOOKS_JOURNAL values ('DELETE', old. id_books, null, old. id_publishers, null, old. k_pages, null, old. cover, null, old. tiraz, null, old. id_abonent, null, old. date_issue, null, old.name, null, 'now', 'now', gen_id (generator_journal, 1));
end
end
^ SET TERM; ^
Π’ΡΠΈΠ³Π³Π΅Ρ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΡΡΡ ΡΡΠ»ΠΎΠ²Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², ΠΏΡΠΎΠ²Π΅ΡΡΡΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π»ΠΈ Π½Π°Π΄ Π·Π°ΠΏΠΈΡΡΠΌΠΈ ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²ΡΡΠ°Π²ΠΊΠΈ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ. ΠΠ»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΡΠ°Π²ΠΊΠΈ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, Π³Π΄Π΅ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΆΡΡΠ½Π°Π»Π° Π² ΠΏΠΎΠ»Π΅ «OPERATION» Π±ΡΠ΄Π΅Ρ Π²ΡΡΠ°Π²Π»Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ «INSERT», Π² ΠΏΠΎΠ»Π΅ «DATE_» ΡΠ΅ΠΊΡΡΠ°Ρ Π΄Π°ΡΠ° (Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ «now»), Π² ΠΏΠΎΠ»Π΅ «TIME_» ΡΠ΅ΠΊΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ (Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ «now»), ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π½Ρ Π²ΡΠ΅ Π½ΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ, Π° Π² ΠΏΠΎΠ»ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΆΡΡΠ½Π°Π»Π°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΡΠ°ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ»Π΅ΠΉ ΡΠ°Π±Π»ΠΈΡΡ «BOOKS», Π·Π°Π½Π΅ΡΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ NULL. ΠΡΠΎΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ «IF (updating) THEN» ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ , ΠΈ Π΅ΡΠ»ΠΈ Π΄Π°, ΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π²ΡΡΠ°Π²ΠΊΠΈ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ°Π±Π»ΠΈΡΡ ΠΆΡΡΠ½Π°Π»Π° «BOOKS_JOURNAL». ΠΡΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π·Π°Π΄Π°Π½ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌΡ, ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΏΠΎΠ»Ρ ΠΏΠΎΠ΄ ΡΡΠ°ΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ NULL Π·Π°Π½ΠΎΡΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΡΡΠΎΠ»Π±ΡΠΎΠ² ΡΠ°Π±Π»ΠΈΡΡ «BOOKS» Π΄ΠΎ ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π·Π°Π΄Π°Π½ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π½Π° ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ «BOOKS», Π³Π΄Π΅ NULL Π·Π°Π½ΠΎΡΠΈΡΡΡ Π² ΡΡΠΎΠ»Π±ΡΡ ΠΏΠΎΠ΄ Π½ΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΡΠΈΠ³Π³Π΅ΡΡ ΠΊΠ°ΡΠΊΠ°Π΄Π½ΠΎΠ³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ.
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΡΠΈΠ³Π³Π΅Ρ ΠΊΠ°ΡΠΊΠ°Π΄Π½ΠΎΠ³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΡ «BOOKS» ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΈΠΌ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ «PUBLISHERS».
ΠΡΠΎΡ ΡΡΠΈΠ³Π³Π΅Ρ Π·Π°ΠΊΡΠ΅ΠΏΠ»ΡΠ½ Π·Π° ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ «PUBLISHERS», ΠΈ Π·Π°Π΄Π°Π½ ΠΊΠ°ΠΊ ΡΡΠΈΠ³Π³Π΅Ρ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ. ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠΈΠ³Π³Π΅ΡΠ° Π²ΡΠ±Π΅ΡΠ΅ΠΌ Triggers/New Trigger…(Π’ΡΠΈΠ³Π³Π΅Ρ/ΠΠΎΠ²ΡΠΉ ΡΡΠΈΠ³Π³Π΅Ρ). ΠΠΎΡΠ²ΠΈΡΡΡ ΠΎΠΊΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠΈΠ³Π³Π΅ΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΊΠ°ΠΆΠ΅ΠΌ:
Β· ΠΠΌΡ — «PUBLISHERS_CASCADE_BOOKS»;
Β· ΠΠ»Ρ ΡΠ°Π±Π»ΠΈΡΡ — «PUBLISHERS»;
Β· Π’ΠΈΠΏ — «BEFORE», Ρ. Π΅. Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠ΅ΠΆΠ΄Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ;
Β· Π£ΠΊΠ°ΠΆΠ΅ΠΌ UPDATE, DELETE.
ΠΠΎΠ»Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΡΡΠΈΠ³Π³Π΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ:
SET TERM ^ ;
CREATE OR ALTER TRIGGER PUBLISHERS_CASCADE_BOOKS FOR PUBLISHERS
ACTIVE BEFORE UPDATE OR DELETE POSITION 0
AS
begin
IF (updating) THEN
begin
update books C
set C. id_publishers = new. id_publishers
where c. id_publishers = old. id_publishers;
end
else
begin
delete from books C
where c. id_publishers = old. id_publishers;
end
end
^
SET TERM; ^
Π’Π°ΠΊ ΠΊΠ°ΠΊ Π΄Π°Π½Π½ΡΠΉ ΡΡΠΈΠ³Π³Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ «PUBLISHERS», ΡΠΎ Π² Π½ΡΠΌ Π·Π°Π΄Π°Π½ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅, ΠΏΡΠΎΠ²Π΅ΡΡΡΡΠ΅Π΅, ΠΊΠ°ΠΊΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π½Π°Π΄ Π·Π°ΠΏΠΈΡΡΠΌΠΈ ΡΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ. IF (updating) THEN = ΠΠ‘Π’ΠΠΠ, Π΅ΡΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ (UPDATE), ΠΈΠ½Π°ΡΠ΅ =ΠΠΠΠ¬ (Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠΈΠ³Π³Π΅ΡΠ° ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ). Π ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΊΠ°ΡΠΊΠ°Π΄Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ UPDATE, Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ ΠΊΠ°ΡΠΊΠ°Π΄Π½ΠΎΠ΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ DELETE FROM. Π ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ ΠΎΡΠ±ΠΎΡΠ° Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°Π²Π΅Π½ΡΡΠ²ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ»Ρ «ID_PUBLISHERS» ΡΠ°Π±Π»ΠΈΡΡ «BOOKS» ΠΈ ΡΡΠ°ΡΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»Ρ «ID_PUBLISHERS» ΡΠ°Π±Π»ΠΈΡΡ «PUBLISHERS». Π ΡΠ»ΡΡΠ°Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΡΡΠΈΠΌ ΠΏΠΎΠ»ΡΠΌ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡΡΡ Π½ΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ.
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΡΠΈΠ³Π³Π΅Ρ ΠΊΠ°ΡΠΊΠ°Π΄Π½ΠΎΠ³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΡ «BOOKS» ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΈΠΌ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ «READERS» — «READERS_CASCADE_BOOKS». Π Π°Π·Π½ΠΈΡΠ° Π·Π΄Π΅ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠΈΠ³Π³Π΅Ρ Π±ΡΠ΄Π΅Ρ Π·Π°Π΄Π°Π½ Π΄Π»Ρ ΡΠ°Π±Π»ΠΈΡΡ «READERS» ΠΈ Π² Π·Π°ΠΏΠΈΡΡΡ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ «ID_ABONENT».
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ ΡΠ°Π½ΠΈΠΌΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΡΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ.
ΠΠ΅ΡΠ²Π°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π±ΡΠ΄Π΅Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ½ΠΈΠ³, Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π·Π°Π΄Π°Π΄ΠΈΠΌ Π·Π°ΠΏΡΠΎΡ Π½Π° Π²ΡΠ±ΠΎΡΠΊΡ ΡΠΏΠΈΡΠΊΠ° ΠΊΠ½ΠΈΠ³, Π² ΠΏΠΎΠ»Π΅ «BOOKS.ID_ABONENT» ΠΊΠΎΡΠΎΡΡΡ ΡΡΠΎΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ NULL.
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π²ΡΠ±Π΅ΡΠ΅ΠΌ ProceduresNew Procedure (ΠΡΠΎΡΠ΅Π΄ΡΡΡΠΠΎΠ²Π°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°). ΠΡΠ±Π΅ΡΠ΅ΠΌ Output Parameters (ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ) Π·Π°ΡΠ΅ΠΌ Insert parameter/variable (ΠΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ/ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ). ΠΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ «NAME_BOOKS VARCHAR (30)» ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡ Π΄Π²Π° — ΠΏΠΎΠ΄ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π³ΠΎΡΠΎΠ΄ ΠΈΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²Π° — ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ «NAME_PUBLISHERS VARCHAR (20)» ΠΈ «CITY_PUBLISHERS VARCHAR (20)».
ΠΠΈΡΡΠΈΠ½Π³ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ «BOOKS_LIBRARY»:
CREATE PROCEDURE BOOKS_LIBRARY
returns (
city_publishers varchar (20) character set win1251,
name_publishers varchar (20) character set win1251,
name_books varchar (30) character set win1251)
as
begin
for
select distinct books.name, publishers.name, publishers. city
from books inner join publishers on books. id_publishers = publishers. id_publishers
where books. id_abonent iS NULL
into: name_books,: name_publishers,: city_publishers
do suspend;
end
Π Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° Π½Π° Π²ΡΠ±ΠΎΡΠΊΡ SELECT ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ «FOR SELECT … INTO … DO …», ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² ΡΠΈΠΊΠ»Π΅. ΠΠ½Π°ΡΠ΅ Π΅ΡΠ»ΠΈ SELECT Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΡΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ° «multiple rows in singleton select». ΠΠ΄Π΅ΡΡ ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π²ΡΠ΄Π°ΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΎΠ½ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π½ΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΈΠΊΠ»Π° ΠΈ Ρ. Π΄. ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡΠ΄ΡΡ Π²ΡΠ΄Π°Π½Ρ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡΠΈΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ°.
ΠΡΠΎΡΠ°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π±ΡΠ΄Π΅Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ½ΠΈΠ³, Π²ΡΠ΄Π°Π½Π½ΡΡ Π·Π° ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΏΠ΅ΡΠΈΠΎΠ΄ (Π²Ρ ΠΎΠ΄Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ — Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΠΈ ΠΊΠΎΠ½Π΅ΡΠ½Π°Ρ Π΄Π°ΡΠ°). ΠΠ°Π΄Π°Π΄ΠΈΠΌ Π²Ρ ΠΎΠ΄Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ «DATE1 DATE» ΠΈ «DATE2 DATE». ΠΠ°Π΄Π°Π΄ΠΈΠΌ Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ: «NAME_BOOKS VARCHAR (30)», «NAME_PUBLISHERS VARCHAR (20)» ΠΈ «CITY_PUBLISHERS VARCHAR (20)».
ΠΠΈΡΡΠΈΠ½Π³ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ «BOOKS_LIST_PERIOD»:
CREATE PROCEDURE BOOKS_LIST_PERIOD (
date1 date,
date2 date)
returns (
city_publishers varchar (20) character set win1251,
name_publishers varchar (20) character set win1251,
name_books varchar (30) character set win1251)
as
declare variable var_date date;
begin
for
select distinct books.name, publishers.name, publishers. city, books. date_issue
from books inner join publishers on books. id_publishers = publishers. id_publishers
into: name_books,: name_publishers,: city_publishers, :var_date
do if (var_date between date1 and date2) then suspend;
end
Π ΡΡΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΎΠΉ Π²ΡΠ±ΠΎΡΠΊΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π²ΡΠ±ΠΎΡΠΊΠΈ «SELECT», ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ, Π»Π΅ΠΆΠΈΡ Π»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ SELECT-ΠΎΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ var_date ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ Π²Π²Π΅Π΄ΡΠ½Π½ΡΠΌΠΈ, Π·Π°Π΄Π°Π½Π½ΡΠΌΠΈ Π²Ρ ΠΎΠ΄Π½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ date1 ΠΈ date2. ΠΡΠ»ΠΈ Π΄Π°, ΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π²ΡΠ΄Π°ΡΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΎΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π²ΡΡ ΠΎΠ΄Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° suspend.
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ½ΠΈΠ³ ΠΈ ΡΡΠ΅Π΄Π½ΠΈΠΉ ΡΠΈΡΠ°ΠΆ ΠΏΠΎ ΠΈΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²Π°ΠΌ. ΠΠ΄Π΅ΡΡ Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π±ΡΠ΄ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌΡΠ΅ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³ΡΡΠΏΠΏΡ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Ρ «PUBLISHERS. NAME».
ΠΠΈΡΡΠΈΠ½Π³ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ «KOL_BOOKS_TIRAZ»:
CREATE PROCEDURE KOL_BOOKS_TIRAZ
returns (
publishers_name varchar (20) character set win1251,
avg_tiraz integer,
count_ integer)
as
begin
for
select distinct publishers.name, count (publishers.id_publishers), AVG (books.tiraz)
from books inner join publishers on books. id_publishers = publishers. id_publishers
group by publishers.name
into: publishers_name,: count_,: avg_tiraz
do suspend;
end
ΠΡΡ ΠΎΠ΄Π½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΡΠ²Π»ΡΡΡΡΡ:
Β· publishers_name varchar (20) character set win1251 — ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π΄Π»Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈΠΌΠ΅Π½ΠΈ ΠΈΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²Π°;
Β· avg_tiraz integer — ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π΄Π»Ρ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΈΡΠ°ΠΆΠ° ΠΊΠ½ΠΈΠ³ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³ΡΡΠΏΠΏΡ.
Β· count_ integer — ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π΄Π»Ρ Π²ΡΠ΄Π°ΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΡΡΠΎΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³ΡΡΠΏΠΏΡ.
Π Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ±ΠΎΡΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ»Ρ «PUBLISHERS.NAME», ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΡΡΡΠΎΠΊ ΠΈ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΏΠΎΠ»Ρ «BOOKS.TIRAZ» Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Ρ «PUBLISHERS.NAME».
Π’Π΅ΠΏΠ΅ΡΡ ΡΡΡΡΠΊΡΡΡΠ° Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π³ΠΎΡΠΎΠ²Π°. ΠΠ°ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ°Π±Π»ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π·Π°ΠΏΠΈΡΡΠΌΠΈ:
Π’Π°Π±Π»ΠΈΡΠ° «ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²Π°» (Publishers)
ID_Publishers | Name | City | |
ΠΠΈΡΠ΅Ρ | Π‘.- ΠΠ΅ΡΠ΅ΡΠ±ΡΡΠ³ | ||
ΠΠΈΠ°Π‘ΠΎΡΡ | ΠΠΈΠ΅Π² | ||
ΠΠΠ ΠΠΠ ΠΏΡΠΈΠ½Ρ | Π‘.- ΠΠ΅ΡΠ΅ΡΠ±ΡΡΠ³ | ||
Π€ΠΈΠ½Π°Π½ΡΡ ΠΈ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° | ΠΠΎΡΠΊΠ²Π° | ||
Π’Π°Π±Π»ΠΈΡΠ° «Π§ΠΈΡΠ°ΡΠ΅Π»ΠΈ» (Readers)
ID_ abonent | FIO | Telephone | Address | |
ΠΠ²Π°Π½ΠΎΠ² ΠΠ°Π΄ΠΈΠΌ | ΠΠΎΡΠΊΠ²Π° ΡΠ». 1 Π΄. 1 ΠΊΠ². 1 | |||
ΠΠ΅ΡΡΠΎΠ² ΠΠΎΡΠΈΡ | ΠΡΠ΅Π» ΡΠ». 1 Π΄. 1 ΠΊΠ². 1 | |||
Π‘ΠΈΠ΄ΠΎΡΠΎΠ² ΠΠ²Π°Π½ | ΠΡΡΡΠΊ ΡΠ». 1 Π΄. 1 ΠΊΠ². 1 | |||
ΠΡΠ·Π½Π΅ΡΠΎΠ² ΠΡΡΠ΅ΠΌ | ΠΠΎΡΠΎΠ½Π΅ΠΆ ΡΠ». 1 Π΄. 1 ΠΊΠ².1 | |||
Π’Π°Π±Π»ΠΈΡΠ° «ΠΠ½ΠΈΠ³ΠΈ» (Books)
ID_ Books | Name | ID_ Publishers | K_ pages | Cover | Tiraz | ID_ abonent | Date_issue | |
ΠΡΡΠ΅ΠΊΡΠΈΠ²Π½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ Π‘Π£ΠΠ | ΡΠ²ΡΡΠ΄ΡΠΉ | 01.01.2009 | ||||||
Delphi. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π±Π°Π· Π΄Π°Π½Π½ΡΡ | ΡΠ²ΡΡΠ΄ΡΠΉ | 01.01.2009 | ||||||
ΠΠ°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ | ΡΠ²ΡΡΠ΄ΡΠΉ | 11.01.2009 | ||||||
ΠΠ°Π·Ρ Π΄Π°Π½Π½ΡΡ | ΡΠ²ΡΡΠ΄ΡΠΉ | NULL | NULL | |||||
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΠ‘Π Delphi, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ InterBase eXpress (IBX).
ΠΡΠ±Π΅ΡΠ΅ΠΌ File/New/Application (Π€Π°ΠΉΠ»/ΠΠΎΠ²ΠΎΠ΅/ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅), Π·Π°ΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ — File/New/Data Module (Π€Π°ΠΉΠ»/ΠΠΎΠ²ΡΠΉ/ΠΠΎΠ΄ΡΠ»Ρ Π΄Π°Π½Π½ΡΡ ). ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ Data Access ΠΠ°Π»ΠΈΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ Data Controls ΠΠ°Π»ΠΈΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ InterBase eXpress ΡΠ°ΡΠΏΠΎΠ»ΠΎΠ³Π°ΡΡΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ InterBase, Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΡΡΡΡΠΎΠ² — QReport.
ΠΠΎΠΌΠ΅ΡΡΠΈΠΌ Π½Π° ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ TIBDatabase. Π£ΠΊΠ°ΠΆΠ΅ΠΌ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ DatabaseName ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΡΡΡ (Π²ΠΊΠ»ΡΡΠ°Ρ ΠΈΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΠ°) ΠΊ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ ΠΠ — «C:1LIBRARY.FDB».
ΠΠΎΠΌΠ΅ΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π½Π° ΡΠΎΡΠΌΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π°Π½Π½ΡΡ :
Β· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ IBTransaction
Β· ΡΡΠΈ IBDataSet,
Β· ΡΡΠΈ DataSource
ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΠΌΡΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ . ΠΡΠ΄Π΅Π»ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ TIBDatabase ΠΈ Π²ΡΠ±Π΅ΡΠ΅ΠΌ ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Ρ Database Editor… Π ΡΡΠΎΠΌ ΠΎΠΊΠ½Π΅ ΡΠΊΠ°ΠΆΠ΅ΠΌ User Name = SYSDBA, Character Set = WIN1251. ΠΠ°ΡΠ΅ΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Connected ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° IBDatabase1 ΡΠ°Π²Π½ΡΠΌ True ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ DefaultTransaction ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° IBDatabase1 ΡΠ°Π²Π½ΡΠΌ IBTransaction1.
ΠΠ°Π΄Π°Π΄ΠΈΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ. Π‘Π΄Π΅Π»Π°Π΅ΠΌ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ IBTransaction1, Π΄Π»Ρ ΡΠ΅Π³ΠΎ Π΅Π³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Ρ Active ΠΏΡΠΈΠ΄Π°Π΄ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ True. ΠΡΠ·ΠΎΠ²Π΅ΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ Transaction Editor…, ΠΈ Π² ΠΏΠΎΡΠ²ΠΈΠ²ΡΠ΅ΠΌΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ Π²ΡΠ±Π΅ΡΠ΅ΠΌ ΡΡΠΎΠ²Π΅Π½Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ — Read Committed.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²:
Β· DefaultAction — TACommitRetaining
Β· DefaultDatabase — IBDatabase1
Β· Params — read_committed
rec_version
nowait
Β· Active — True
ΠΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ IBDataSet1. ΠΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ Π΅Π³ΠΎ Π½Π° BOOKS_DataSet (ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Name). Π£ΠΊΠ°ΠΆΠ΅ΠΌ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ — DataBase = IBDataBase1 ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ — Transaction = IBTransaction1. Π£ΠΊΠ°ΠΆΠ΅ΠΌ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ SelectSQL ΡΠ΅ΠΊΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°: «select* from BOOKS». ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° GeneratorField Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΏΠΎΠ»Π΅, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠΌ ΠΈ ΡΠ°ΠΌ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ. ΠΠΊΡΠΈΠ²ΠΈΡΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ: Active — True. ΠΡΠ·ΠΎΠ²Π΅ΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Dataset Editor… ΠΡΠ±Π΅ΡΠ΅ΠΌ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° Table Name ΡΠ°Π±Π»ΠΈΡΡ ΠΈ Π½Π°ΠΆΠΌΡΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ Get Table Fields (ΠΠΎΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ»Ρ ΡΠ°Π±Π»ΠΈΡΡ). Π ΡΠΏΠΈΡΠΊΠ΅ Key Fields (ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΏΠΎΠ»Ρ) Π²ΡΠ΄Π΅Π»ΠΈΠΌ ΠΏΠΎΠ»Π΅ «ID_BOOKS», ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄ΡΡ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ WHERE Π² Π·Π°ΠΏΡΠΎΡΠ°Ρ . ΠΠΎΡΠ»Π΅ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ Generate SQL Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² DeleteSQL, InsertSQL, ModifySQL, RefreshSQL. ΠΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠ°Π½ΡΡ ΡΠ°Π²Π½Ρ:
DeleteSQL:
delete from BOOKS
where
ID_BOOKS = :OLD_ID_BOOKS
InsertSQL:
insert into BOOKS
(ID_BOOKS, NAME, ID_PUBLISHERS, K_PAGES, COVER, TIRAZ, ID_ABONENT, DATE_ISSUE)
values
(:ID_BOOKS, :NAME, :ID_PUBLISHERS, :K_PAGES, :COVER, :TIRAZ, :ID_ABONENT,
:DATE_ISSUE)
ModifySQL:
update BOOKS
set
ID_BOOKS = :ID_BOOKS,
NAME = :NAME,
ID_PUBLISHERS = :ID_PUBLISHERS,
K_PAGES = :K_PAGES,
COVER = :COVER,
TIRAZ = :TIRAZ,
ID_ABONENT = :ID_ABONENT,
DATE_ISSUE = :DATE_ISSUE
where
ID_BOOKS = :OLD_ID_BOOKS
RefreshSQL:
Select
ID_BOOKS,
NAME,
ID_PUBLISHERS,
K_PAGES,
COVER,
TIRAZ,
ID_ABONENT,
DATE_ISSUE
from BOOKS
where
ID_BOOKS = :ID_BOOKS
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π·Π°Π΄Π°Π΄ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² Π΄Π²ΡΠΌ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ IBDataSet.
Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° DataSource Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ Dataset ΡΠΊΠ°ΠΆΠ΅ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° IBDataSet.
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΡΠΈ ΡΠΎΡΠΌΡ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡ. ΠΠ° ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠΎΡΠΌΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ DBGrid ΠΈ DBNavigator. Π£ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² DBGrid ΠΈ DBNavigator Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ DataSource ΡΠΊΠ°ΠΆΠ΅ΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ DataSource.
ΠΠΎΠΈΡΠΊ Π΄Π°Π½Π½ΡΡ
ΠΠ»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π΄Π°Π½Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ
function LocateNext (const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean;
Π³Π΄Π΅ KeyFields — ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ»Π΅ΠΉ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΠΈΡΠΊ (ΠΈΠΌΠ΅Π½Π° ΠΏΠΎΠ»Π΅ΠΉ ΡΠ°Π·Π΄Π΅Π»ΡΡΡΡΡ ΡΠΎΡΠΊΠΎΠΉ Ρ Π·Π°ΠΏΡΡΠΎΠΉ), KeyValues — ΡΠΏΠΈΡΠΎΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΡΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ (Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°Π·Π΄Π΅Π»ΡΡΡΡΡ Π·Π°ΠΏΡΡΠΎΠΉ), TLocateOptions — ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠΎΠΈΡΠΊΠ°, Π³Π΄Π΅ loCaselnsensitive ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΏΠΎΠΈΡΠΊ Π±Π΅Π· ΡΡΠ΅ΡΠ° ΡΠ΅Π³ΠΈΡΡΡΠ° (Π·Π°Π³Π»Π°Π²Π½ΡΠ΅ ΠΈ ΠΌΠ°Π»ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ), Π° loPartialKey. — Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π΄Π°Π½Ρ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ. Π€ΡΠ½ΠΊΡΠΈΡ LocateNext ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΠΈΡΠ΅ΠΉ, ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌ ΠΏΠΎΠΈΡΠΊΠ°, Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π΅ΡΡ ΡΠ°Π·. Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΡΠ°Π²Π½ΠΎΠ³ΠΎ TRUE (ΠΠ‘Π’ΠΠΠ), Π΅ΡΠ»ΠΈ Π½Π°ΠΉΠ΄Π΅Π½Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ°Ρ Π·Π°ΠΏΠΈΡΡ, ΠΈ FALSE (ΠΠΠΠ¬) Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅.
ΠΠ° ΡΠΎΡΠΌΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ BOOKS Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
Β· Edit1 — Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ KeyValues.
Β· Button1 — Π΄Π»Ρ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠΈ ΠΏΠΎΠΈΡΠΊΠ°.
Β· ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² CheckBox Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ° ΠΏΠΎΠ»Π΅ΠΉ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ°, Ρ. Π΅. Π·Π½Π°ΡΠ΅Π½ΠΈΡ KeyFields.
Π ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ — ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠΎΠ±ΡΡΠΈΡ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ Button1 ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠ±ΠΎΡ ΡΡΡΠΎΠΊΠΈ ΡΠΏΠΈΡΠΊΠ° ΠΏΠΎΠ»Π΅ΠΉ KeyFields Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡΠΌΠΈ ΡΠ»Π°ΠΆΠΊΠΎΠ² CheckBox. ΠΠ°ΡΠ΅ΠΌ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΠΌΠ΅ΡΡΠ΅ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»Ρ Edit1 ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΡ LocateNext ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΡ loc (Fields, Values), ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ Unit2 (Π² ΠΌΠΎΠ΄ΡΠ»Π΅ Unit2 ΠΎΠΏΠΈΡΠ°Π½ ΠΊΠ»Π°ΡΡ TDataModule2 (ΡΠΎΡΠΌΠ° ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π°Π½Π½ΡΡ ) Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ «BOOKS_DataSet: TIBDataSet;»).
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ ΠΏΠΎΠΈΡΠΊ Π² ΡΠ°Π±Π»ΠΈΡΠ°Ρ PUBLISHERS ΠΈ READERS.
Π€ΠΈΠ»ΡΡΡΠ°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ
ΠΠ°Π΄Π°Π΄ΠΈΠΌ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ BOOKS.
ΠΠ° ΡΠΎΡΠΌΠ΅ ΡΠ°Π±Π»ΠΈΡΡ BOOKS ΠΏΠΎΠΌΠ΅ΡΡΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ CheckBox Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠΌΠ΅Π» Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΈ Π²ΡΠΊΠ»ΡΡΠ°ΡΡ ΡΠΈΠ»ΡΡΡ ΠΏΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΠΏΠΎΠ»ΡΠΌ. Π€ΠΈΠ»ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠΌ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ Π²ΡΠ±ΡΠ°Π½Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΠΌ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»ΠΈ CheckBox, Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ (Π² ΠΌΠΎΠ΄ΡΠ»Π΅ Unit2) Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ, ΡΠ»Π΅Π΄ΡΠ΅Ρ Π»ΠΈ ΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ Π·Π°ΠΏΠΈΡΠΈ ΠΏΠΎ Π²Π²Π΅Π΄ΡΠ½Π½ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»Ρ. ΠΠ»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΈΠ»ΡΡΡΠ° ΡΠ»ΡΠΆΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠ° «ΠΠΊΠ»ΡΡΠΈΡΡ ΡΠΈΠ»ΡΡΡ» Π³Π΄Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ (ΠΌΠΎΠ΄ΡΠ»Ρ Unit2) Π²Π²Π΅Π΄ΡΠ½Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΏΠΎΠ»Π΅ΠΉ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠΈΠ»ΡΡΡ Π·Π°Π΄Π°Π½ΠΈΠ΅ΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Ρ BOOKS_DataSet.Filtered Π·Π½Π°ΡΠ΅Π½ΠΈΡ True. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Ρ Filtered ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° TIBDataSet Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ True ΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ΅ΡΠ΅ΠΎΡΠΊΡΡΡΠΈΠ΅ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ , Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ OnFilterRecord ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. ΠΡΠΎΡΠ΅Π΄ΡΡΠ° — ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
procedure TDataModule2. BOOKS_DataSetFilterRecord (DataSet: TDataSet; var Accept: Boolean);
Π³Π΄Π΅ DataSet ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ . ΠΡΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΈ Π΅ΡΠ»ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΡΡΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Accept ΡΠ°Π²Π΅Π½ True, ΡΠΎ ΡΠ΅ΠΊΡΡΠ°Ρ Π·Π°ΠΏΠΈΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ — Π½Π΅Ρ. ΠΡΠΈΠΌΠ΅Ρ ΡΠΈΠ»ΡΡΡΠ°:
if (DataSet['NAME'] <> Name_) then Accept := False;
Π³Π΄Π΅ NAME — Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ, Name_ - ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π·Π°ΠΏΠΈΡΠΈ.
Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΈΠ»ΡΡΡ:
procedure TDataModule2. BOOKS_DataSetFilterRecord (DataSet: TDataSet;
var Accept: Boolean);
begin
Accept := True;
if P1 then if (DataSet['NAME'] <> Name_) then Accept := False;
if P2 then if (DataSet['K_PAGES'] < K_Pages1) then Accept := False;
if P3 then if (DataSet['K_PAGES'] > K_Pages2) then Accept := False;
if P4 then if (DataSet['DATE_ISSUE'] < Date1) then Accept := False;
if P5 then if (DataSet['DATE_ISSUE'] > Date2) then Accept := False;
if P6 then if (DataSet['ID_PUBLISHERS'] <> Id_pub) then Accept := False;
if P7 then if (DataSet['COVER'] <> Cov) then Accept := False;
if P8 then if (DataSet['TIRAZ'] < Tiraz1) then Accept := False;
if P9 then if (DataSet['TIRAZ'] > Tiraz2) then Accept := False;
if 10 then if (DataSet['ID_ABONENT'] <> Id_ab) then Accept := False;
end;
ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ P1 — P10 Ρ ΡΠ°Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΌ ΡΠ»Π°ΠΆΠΊΠ°ΠΌ CheckBox, ΠΈ Π΅ΡΠ»ΠΈ ΡΠ»Π°ΠΆΠΎΠΊ Π²ΡΠ±ΡΠ°Π½, ΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ Π΅ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½Π° True, Π° Π·Π½Π°ΡΠΈΡ, Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡΡ ΡΠΈΠ»ΡΡΡ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ. ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Accept ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ True, Ρ. Π΅. ΡΡΠΈΡΠ°Π΅ΡΡΡ, ΡΡΠΎ ΡΡΡΠΎΠΊΠ° ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ, Π΅ΡΠ»ΠΈ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π΅Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ ΠΎΡΡ Π±Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ. ΠΠΎΡΡΠΎΠΌΡ Π·Π΄Π΅ΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ Π½Π΅Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π²ΠΌΠ΅ΡΡΠΎ «DataSet['NAME'] = Name_» ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ «DataSet['NAME'] <> Name_» ΠΈ ΡΡΠ°Π²ΠΈΡΡΡ Π½Π΅ «Accept:= True» Π² ΡΠ»ΡΡΠ°Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ, Π° «Accept := False»). ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π½Π΅Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ, ΡΡΠΎΠ±Ρ ΡΡΡΠΎΠΊΠ° Π½Π΅ ΠΏΡΠΎΡΠ»Π°, Ρ. Π΅. ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Accept ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ False.
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π·Π°Π΄Π°Π΄ΠΈΠΌ ΡΠΈΠ»ΡΡΡ ΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠ°Π±Π»ΠΈΡ.
ΠΡΠ²ΠΎΠ΄ ΠΎΡΡΡΡΠ°
ΠΡΠ³Π°Π½ΠΈΠ·ΡΠ΅ΠΌ Π²ΡΠ²ΠΎΠ΄ ΠΎΡΡΡΡΠΎΠ² Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π·Π°ΠΏΡΠΎΡ Π½Π° Π²ΡΠ±ΠΎΡΠΊΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΡ BOOKS, Π³Π΄Π΅ Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ΄ΠΎΠ² ΠΈΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²Π° ΠΈ ΡΠΈΡΠ°ΡΠ΅Π»Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡΡ Π²ΡΡ ΠΎ Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½Π°Ρ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡ PUBLISHERS ΠΈ READERS. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ IBQuery, Π½Π°Π·ΠΎΠ²ΡΠΌ Π΅Π³ΠΎ BOOKS_Query ΠΈ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ SQL Π·Π°ΠΏΠΈΡΠ΅ΠΌ:
select all BOOKS.NAME, BOOKS. COVER, BOOKS. TIRAZ, BOOKS. K_PAGES, PUBLISHERS.NAME, PUBLISHERS. CITY, READERS. FIO, READERS. ADDRESS, READERS. TELEPHONE, BOOKS. DATE_ISSUE
from (BOOKS inner join PUBLISHERS on BOOKS. ID_PUBLISHERS= PUBLISHERS. ID_PUBLISHERS) left join READERS on BOOKS. ID_ABONENT= READERS. ID_ABONENT
order by BOOKS.NAME;
ΠΠ°ΠΏΡΠΎΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΏΠΎΠ»Ρ ΠΈΠ· Π²ΡΠ΅Ρ ΡΡΡΡ ΡΠ°Π±Π»ΠΈΡ. Π’Π°Π±Π»ΠΈΡΡ BOOKS ΠΈ PUBLISHERS ΡΠ²ΡΠ·Π°Π½Ρ ΠΏΠΎ ΡΠ°Π²Π΅Π½ΡΡΠ²Ρ ΠΏΠΎΠ»Ρ ID_PUBLISHERS, Π° ΠΏΠΎΠ»ΡΡΠ΅Π½Π½Π°Ρ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ°ΠΊΠΎΠΉ ΡΠ²ΡΠ·ΠΈ Π²ΡΠ±ΠΎΡΠΊΠ° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½Π° Ρ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ READERS ΠΏΠΎ ΡΠ°Π²Π΅Π½ΡΡΠ²Ρ ΠΏΠΎΠ»Ρ ID_ABONENT. ΠΠ΄Π΅ΡΡ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ²ΡΠ·ΠΈ left join Π² Π·Π°ΠΏΡΠΎΡ Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ Π·Π°ΠΏΠΈΡΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ Π² ΠΏΠΎΠ»Π΅ BOOKS. ID_ABONENT Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ NULL. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊ Π·Π°ΠΏΠΈΡΡΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Ρ BOOKS.NAME.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Active ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° BOOKS_Query Π² True. ΠΡΠ»ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅, ΡΠΎ Π·Π°ΠΏΡΠΎΡ SQL Π²Π²Π΅Π΄ΡΠ½ Π±Π΅Π· ΠΎΡΠΈΠ±ΠΎΠΊ.
Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠΌ Π½Π° ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ DataSourse, Π½Π°Π·ΠΎΠ²ΡΠΌ Π΅Π³ΠΎ BOOKS_Query_Source ΠΈ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ DataSet ΡΠΊΠ°ΠΆΠ΅ΠΌ BOOKS_Query.
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½ΠΎΠ²ΡΡ ΡΠΎΡΠΌΡ ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠΌ Π½Π° Π½Π΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ DBGrid1 Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ DataSourse ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΊΠ°ΠΆΠ΅ΠΌ DataModule2. BOOKS_Query_Source. ΠΠ° ΡΠΎΡΠΌΠ΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ «ΠΡΠ²Π΅ΡΡΠΈ ΠΎΡΡΡΡ», ΠΏΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡΡ ΠΎΡΡΡΡ Π·Π°ΠΏΡΠΎΡΠ° BOOKS_Query.
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΎΡΡΡΡΠ° ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΄Π»Ρ Π½Π΅Π³ΠΎ Π½ΠΎΠ²ΡΡ ΡΠΎΡΠΌΡ ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠΌ Π½Π° Π½Π΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ QuickRep. Π ΡΠΊΠ°ΠΆΠ΅ΠΌ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ DataSet DataModule2. BOOKS_Query. Π£ΠΊΠ°ΠΆΠ΅ΠΌ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ Page. Orientation = poLandscape (ΠΠ΅ΠΉΠ·Π°ΠΆΠ½Π°Ρ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΡ ΡΡΡΠ°Π½ΠΈΡΡ). Π£ ΡΠ²ΠΎΠΉΡΡΠ²Π° Bands ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ Π² True ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠΎΠ΄ΡΠ²ΠΎΠΉΡΡΠ²Π°: HasDetail, hasTitle, PageHander. ΠΠΎΠΌΠ΅ΡΡΠΈΠΌ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ QuickRep Π² ΠΎΠ±Π»Π°ΡΡΡ Detail ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ QRDBText Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ, Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ DataSet ΠΊΠΎΡΠΎΡΡΡ ΡΠΊΠ°ΠΆΠ΅ΠΌ DataModule2. BOOKS_Query, Π° Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ DataField ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΏΠΎΠ»Π΅. Π ΠΎΠ±Π»Π°ΡΡΡ Title ΠΏΠΎΠΌΠ΅ΡΡΠΈΠΌ ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² QRLabel Π΄Π»Ρ Π½Π°Π·Π²Π°Π½ΠΈΠΉ Π°ΡΡΠΈΠ±ΡΡΠΎΠ², ΠΈ ΡΠΊΠ°ΠΆΠ΅ΠΌ ΡΡΠΈ Π½Π°Π·Π²Π°Π½ΠΈΡ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ Caption ΡΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². Π Π°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Π½Π° ΡΠΎΡΠΌΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ QRTextFilter, QRHTMLFilter Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΎΡΡΠ΅ΡΠΎΠ² Π² ΡΠΎΡΠΌΠ°ΡΠ°Ρ HTML, TXT. Π ΠΎΠ±Π»Π°ΡΡΠΈ ΠΎΡΡΡΡΠ° PageHander ΠΏΠΎΠΌΠ΅ΡΡΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ QRSysData Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π΄Π°ΡΡ, Π΄Π»Ρ ΡΠ΅Π³ΠΎ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ Data ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ qrsDate. Π’Π΅ ΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΈ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π½ΠΎΠΌΠ΅ΡΠ° ΡΡΡΠ°Π½ΠΈΡΡ.
ΠΠ²ΠΎΠ΄ SQL Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ Π²ΡΠ²ΠΎΠ΄ Ρ ΡΠ°Π½ΠΈΠΌΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ
Π Π°Π±ΠΎΡΠ°Ρ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π±Π°Π· Π΄Π°Π½Π½ΡΡ , ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°Π΄Π°Π²Π°ΡΡ SQL Π·Π°ΠΏΡΠΎΡΡ, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½Ρ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π² Π²ΠΈΠ΄Π΅ Ρ ΡΠ°Π½ΠΈΠΌΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ. ΠΠ»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°ΠΊΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π½Π° Π³Π»Π°Π²Π½ΡΡ ΡΠΎΡΠΌΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ° Memo, Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ Π±ΡΠ΄Π΅Ρ Π²Π²ΠΎΠ΄ΠΈΡΡ ΡΠ΅ΠΊΡΡ Π·Π°ΠΏΡΠΎΡΠ°. ΠΠ°ΡΠ΅ΠΌ Π½Π° ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ IBQuery1: TIBQuery1 (ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΈ DataSource1: TDataSource1), ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠΎΡΠΌΡ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠΌ Π½Π° Π½Π΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ DBGrid1: TDBGrid1. ΠΠ°ΡΠ΅ΠΌ Π½Π° Π³Π»Π°Π²Π½ΡΡ ΡΠΎΡΠΌΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΈ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ Π΅Ρ Π½Π°ΠΆΠ°ΡΠΈΡ Π·Π°Π΄Π°Π΄ΠΈΠΌ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡ Π²Π²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° ΠΈΠ· ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ Π² ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ SQL ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° IBQuery1 ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ IBQuery1 Π°ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΈ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΠΌ ΡΠΎΡΠΌΡ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°.
ΠΡΠ»ΠΈ Π² Π·Π°ΠΏΡΠΎΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ Π²ΡΠ²ΠΎΠ΄ Ρ ΡΠ°Π½ΠΈΠΌΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, ΠΏΡΠΎΡΡΠΎ ΡΠΊΠ°Π·Π°Π²
select * from KOL_BOOKS_TIRAZ;
ΠΈΠ»ΠΈ
select * from BOOKS_LIBRARY;
ΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ Π·Π°ΠΏΡΠΎΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΉ Π² ΡΡΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅.
ΠΠΈΡΡΠΈΠ½Π³ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ — ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠΎΠ±ΡΡΠΈΡ Π½Π°ΠΆΠ°ΡΠΈΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ «ΠΡΠ²Π΅ΡΡΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π·Π°ΠΏΡΠΎΡΠ°»:
procedure TForm1. Button10Click (Sender: TObject);
var i: integer;
begin
DataModule2.IBQuery1.Active:=False;
DataModule2.IBQuery1.SQL.Clear;
for i:=0 to Memo1.Lines.Count do
begin
DataModule2.IBQuery1.SQL.Append (Memo1.Lines[i]);
end;
DataModule2.IBQuery1.Active:=True;
Form10.Show;
end;
ΠΠ»Ρ Ρ ΡΠ°Π½ΠΈΠΌΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Ρ Π²Ρ ΠΎΠ΄Π½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠ·ΠΎΠ² Ρ ΡΠ°Π½ΠΈΠΌΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ BOOKS_LIST_PERIOD ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ. ΠΠΈΡΡΠΈΠ½Π³ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ΅ΠΉ Π²ΡΠ·ΠΎΠ² ΡΡΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅:
procedure TForm1. Button9Click (Sender: TObject);
begin
DataModule2.IBQuery1.SQL.Clear;
DataModule2.IBQuery1.SQL.Add ('select * from BOOKS_LIST_PERIOD (' +#39+MaskEdit1.Text+#39+','+#39+MaskEdit2.Text+#39+');');
DataModule2.IBQuery1.Active:=true;
Form9.Show;
end;
ΠΠ΄Π΅ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Add Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π·Π°ΠΏΠΈΡΡ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Ρ SQL ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° IBQuery1 (ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ½ΠΎ ΠΎΡΠΈΡΠ°Π΅ΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Clear). MaskEdit1. Text ΠΈ MaskEdit2. Text — Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ Π²Π²ΠΎΠ΄Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π²Ρ ΠΎΠ΄Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², #39 — ASCII ΠΊΠΎΠ΄ ΠΎΠ΄ΠΈΠ½Π°ΡΠ½ΠΎΠΉ ΠΊΠ°Π²ΡΡΠΊΠΈ, ΠΊΠ°Π²ΡΡΠΊΠΈ Π½ΡΠΆΠ½Ρ Π΄Π»Ρ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π² Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π²Ρ ΠΎΠ΄Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Ρ ΡΠ°Π½ΠΈΠΌΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π² SQL Π·Π°ΠΏΡΠΎΡΠ΅. ΠΠ°ΡΠ΅ΠΌ Π°ΠΊΡΠΈΠ²ΠΈΡΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ IBQuery1 ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ ΡΠΎΡΠΌΠ° Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Ρ ΡΠ°Π½ΠΈΠΌΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ.
1. ΠΠΎΠ²ΡΠ·ΠΈΠ½ Π‘., ΠΠΎΡΡΡΠΈΠΊΠΎΠ² Π‘. ΠΠΈΡ InterBase. ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°, Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π±Π°Π· Π΄Π°Π½Π½ΡΡ Π² InterBase/ Firebird/ Yaffil. — Π.: ΠΠ£ΠΠΠ¦ — ΠΠΠ ΠΠ, 2005. — 496 Ρ.
2. Π₯ΠΎΠΌΠΎΠ½Π΅Π½ΠΊΠΎ Π. Π., ΠΠΎΡΠΌΠ°Π½ Π. Π. Π Π°Π±ΠΎΡΠ° Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ Π² Delphi. — Π‘ΠΠ±.: ΠΠ₯Π — ΠΠ΅ΡΠ΅ΡΠ±ΡΡΠ³, 2005. — 640Ρ.
3. ΠΠΎΠ½Π΄Π·ΡΠ±Π° Π‘. Π., ΠΡΠΎΠΌΠΎΠ² Π. Π. Delphi 6. ΠΠ°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ: ΠΠ΅ΠΊΡΠΈΠΈ ΠΈ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ. — ΠΠΈΠ΅Π²: ΠΠΈΠ°Π‘ΠΎΡΡ, 2001. — 576 Ρ.
4. http://www.ibase.ru/devinfo/ibfaq.htm
5. http://www.piter.com/lib/978 527 200 003/sql7.phtml?fil=Ch12
6. http://www.codenet.ru/progr/delphi/stat/SQL-Delphi.php