Příprava - aplikace knihovna
1 | Stáhněte si přes FTP z fileserveru pomocí účtu anonym soubory db09.zip a knihovna.zip a extrahujte je tak, aby databázový soubor db09.sqlite byl ve složce c:\temp\db09 a pascalovský projekt ve složce c:\temp\knihovna | FileZilla |
2 | Ověřte v sqlite3 strukturu databáze c:\temp\db09\db09.sqlite - vypište si seznam tabulek, schéma tabulek - jedná se o knihy a čtenáře knihovny (všimněte si stejného sloupce id_ctenar u obou tabulek) | cmd, sqlite3 |
3 | Spusťte Lazarus, otevřte projekt c:\temp\knihovna\knihovna.lpi a zkuste aplikaci zkompilovat + spustit (F9) - aplikace obsahuje tabulku čtenářů | Lazarus |
Opakování
4 | Ověřte ve formuláři a zdrojovém kódu napojení komponent, vlastnosti a události: - Form1.OnCreate, OnClose - SQLQuery1.AfterDelete, AfterPost |
5 | Přidejte do SQL příkazu v komponentě SQLQuery řazení podle jména čtenáře |
6 | Upravte záhlaví sloupců, aby názvy sloupců byly správně česky - ověřte aplikaci jejím spuštěním |
Doplnění o tabulku knihy
7 | Vložte další TSQLQuery a nastavte SQLQuery2.Database = SQLite3Connection1 SQLQuery2.SQL = select * from knihy order by autor; |
8 | Doplňte události SQLQuery2.AfterPost a AfterDelete |
9 | Doplňte do událostí Form1.OnCreate a OnClose kód pro SQLQuery2 |
10 | Vložte další komponentu TDataSource a nastavte: Datasource2.Dataset = SQLQuery2 |
11 | Vložte komponenty TDbGrid a TDbNavigator a napojte je na Datasource2 |
12 | Pravým tlačítkem v DbGrid2 proveďte Editovat sloupce a přidejte sloupce: autor, nazev, id_ctenar |
13 | Spusťte a ověřte správnou funkci aplikace s druhou tabulkou pro knihy |
Vložení defaultní hodnoty u nově vkládaného řádku
14 | Do SQLQuery1.AfterInsert vložte kód: SQLQuery1.FieldByName('datum').Value:=FormatDateTime('YYYY-MM-DD',Now); |
15 | U DbGrid1 editujte sloupec titul (pravým
tlačítkem) a do vlastnosti PickList nadefinujte na jednotlivé řádky tituly Ing., Mgr., MUDr. - vkládání titulu a aktuálního datumu ověřte ve spuštěné aplikaci |
Hledání v tabulce
16 | Vložte do formuláře komponentu DbLookupComboBox a nastavte
její vlastnosti pro hledání jména čtenáře: AutoComplete=true, AutoDropDown=true, ScrollListDataset=true; ListField=jmeno, KeyField=jmeno, ListSource=DataSource1 a ověřte funkci ve spuštěné aplikaci |
Obrázky v databázi
17 | Přidejte do tabulky ctenari nový sloupec pro obrázek (pomocí
SQLite3 spuštěného z příkazového řádku) alter table ctenari add column obrazek blob; |
cmd + sqlite3 |
18 | Přidejte do formuláře komponentu TDbImage (z Data Controls) a
nastavte vlastnosti DbImage1.DataField = obrazek DbImage1.DataSource = Datasource1 |
Lazarus |
19 | Přidejte do formuláře tlačítko s nápisem "Vložit obrázek"
a do jeho události Button1.OnClick vložte kód pro vkládání obrázku
ze schránky: if Clipboard.HasFormat(PredefinedClipboardFormat(pcfBitmap)) then DbImage1.Picture.LoadFromClipboardFormat(PredefinedClipboardFormat(pcfBitmap)); |
|
20 | Do uses přidejte Clipbrd, LCLIntf, LCLType a po spuštění ověřte vkládání a ukládání obrázků - vložte obrázky u nejméně 3 čtenářů (před vložením obrázku řádek editujte tlačítkem s tužkou a ukládejte fajfkou) | |
21 | Upravte podle potřeby vlastnosti DbImage1.Stretch a Proportional, které mají vliv na vzhled obrázku |
Relace - viz http://wiki.freepascal.org/MasterDetail
22 | Vložte do formuláře tlačítko s nápisem "Vypůjčit knihu" a do jeho
OnClick zapište kód: SQLQuery2.Edit; SQLQuery2.FieldByName('id_ctenar').Value:=SQLQuery1.FieldByName('id_ctenar').Value; SQLQuery2.Post; Prověřte vypůjčku (ve sloupci knihy.id_ctenar se objeví id čtenáře) |
Tabulka pro seznam vypůjčených knih
23 | Vložte do formuláře další SQLQuery a nastavte SQLQuery3.Database = SQLite3Connection1 SQLQuery3.DataSource = DataSource1 SQLQuery3.SQL = SELECT * FROM knihy WHERE knihy.id_ctenar=:id_ctenar; |
24 | Doplňte do událostí Form1.OnCreate a OnClose kód pro SQLQuery3 |
25 | Přidejte komponenty: - Datasource3 s napojením na SQLQuery3, - DbGrid3 s napojením na Datasource3 a nastavte vlastnosti sloupců (autor, nazev) Prověřte funkci tabulky vypůjčených knih. |
26 | Doplňte SQLQuery3.Refresh do SQLQuery2.AfterPost |
Vracení knih
27 | Vložte do formuláře tlačítko "Vrátit" a do jeho OnClick zapište kód: SQLQuery3.Edit; SQLQuery3.FieldByName('id_ctenar').Value:=null; SQLQuery3.Post; |
28 | Doplňte událost SQLQuery3.ApplyUpdates do SQLQuery3.AfterPost a prověřte funkci vracení knih |
29 | Doplňte SQLQuery2.Refresh a SQLQuery3.Refresh do SQLQuery3.AfterPost |
Logování SQL - http://wiki.freepascal.org/SqlDBHowto#Troubleshooting:_TSQLConnection_logging
30 | Vložte do Form1 komponentu TMemo pro logování SQL příkazů |
31 | Do FormCreate za poslední SQLQueryX.Open vložte příkaz pro
určení co budeme logovat:
SQLite3Connection1.LogEvents:=[detExecute]; |
32 | Do události SQLite3Connection1.OnLog vložte
příkaz pro výpis logů do TMemo: Memo1.Lines.Add(Msg); |
33 | Spusťte aplikaci a prověřte logování |
Přímé vykonání SQL příkazu - příklad kódu:
34 | Uložte a zavřete otevřené dokumenty a celé složky db09 a knihovna uložte na fileserver |