Databáze > Firebird a Interbase

Otázky začínajúceho

(1/5) > >>

Stanislav Hruška:
Inštaloval som si FB 2.5

1) Type
Chýba mi

a) Memo
vrachar() asi nebude to pravé. Nedá sa použiť Enter a vytvorenie odsekov. Ostáva BLOB a ten sa mi javí ako kanón na vrabce. Samozrejme chcem využívať TMemo na formulároch a aj v tlačových zostavách. Mám na mysli ich automatické zalamovanie textu a v prípade zostáv aj prispôsobenie výšky obsahu.

b) Boolean
Nadefinoval som si (vzhľadom na vlastné zvyky)|
Char(5)
Check (Value = ‘True‘ or Value = ‘False‘)
NUll – False (nemusí sa zadať. Niekedy potrebujem tri stavy)
Je to dobre? Viem, že vnútorne je Boolean reprezentovaný celými číslami.

2) Použitie
a) Numeric
Nadefinoval som Numeric(8, 0) pre zadávanie IČO. V štyroch záznamoch som mal tri rôzne dĺžky (zapisoval som vždy maximálny počet číslic, ktorý mi to umožnilo) a to 11, 9 a 7. Nerozumiem prečo. Podľa mňa by tam malo byť vždy 8 číslic.

b) Char() – VarChar() Úvaha
Char() má podľa význam používať v prípadoch keď je presne daný počet/max počet znakov. Napr. PSČ, IČO. Ináč Varchar().
Je tam niečo, čo túto úvahu neguje?

3) Domain
Tie sa mi veľmi páčia. Ale predpokladám, že majú význam len tam, kde sa v budúcnosti môže niečo zmeniť. Definovať Domain pre napr. Char(5), VarChar(10), VarChar(20) a podobne (čiže základné typy bez ďalšieho upresnenia) nemá zmysel.

4) Pripojenie k DB v D XE2
To sa mi nepodarilo. Stiahol som si ZEOS, ale tam bola podpora len do D2010. Možno existuje niečo novšie. Prosím, čo mi odporúčate, aby som mohol využiť všetky možnosti, ktoré FB núka. Poznám len Access a je to už na prvý pohľad značný rozdiel.

Vytvoril som DB (hurá) a na moje prekvapenie tam nevidím žiadne rozšírenie, len samotný názov DB. Má to tak byť?

pepak:

--- Citace: Stanislav Hruška  02-10-2012, 11:00:54 ---a) Memo
vrachar() asi nebude to pravé. Nedá sa použiť Enter a vytvorenie odsekov.
--- Konce citace ---
Klidně můžeš použív VARCHAR. Samozřejmě do něj jde vložit jakýkoliv znak, včetně ENTERu.


--- Citace ---Ostáva BLOB a ten sa mi javí ako kanón na vrabce.
--- Konce citace ---
Proč kanón na vrabce? BLOB je datový typ určený pro ukládání velkých dat, ve kterých se nebude hledat. Jestli to jsou textová data nebo grafická data je celkem jedno (dokonce, BLOB SUBTYPE 0 je definován jako textový).


--- Citace ---Samozrejme chcem využívať TMemo na formulároch a aj v tlačových zostavách. Mám na mysli ich automatické zalamovanie textu a v prípade zostáv aj prispôsobenie výšky obsahu.
--- Konce citace ---
Nic z toho není závislé na tom, jestli použiješ VARCHAR nebo BLOB.


--- Citace ---b) Boolean
Nadefinoval som si (vzhľadom na vlastné zvyky)|
Char(5)
Check (Value = ‘True‘ or Value = ‘False‘)
NUll – False (nemusí sa zadať. Niekedy potrebujem tri stavy)
Je to dobre? Viem, že vnútorne je Boolean reprezentovaný celými číslami.
--- Konce citace ---
"Dobře" je ošemetné slovo. Je to možné udělat i takhle, zvlášť když to nadefinuješ jako doménu a v ní uděláš omezení jen na hodnoty "True" a "False". Obvyklejší je ale použít buď nějaký malý INT (nula, jedna, NULL), u kterého se ti budou snadno dělat konverze z/na Delphovský boolean, nebo CHAR(1) (např. "Y", "N", NULL, nebo "A", "N", NULL, nebo klidně i "1", "0", NULL).


--- Citace ---2) Použitie
a) Numeric
Nadefinoval som Numeric(8, 0) pre zadávanie IČO. V štyroch záznamoch som mal tri rôzne dĺžky (zapisoval som vždy maximálny počet číslic, ktorý mi to umožnilo) a to 11, 9 a 7. Nerozumiem prečo. Podľa mňa by tam malo byť vždy 8 číslic.
--- Konce citace ---
Možná se pletu, ale řekl bych, že Firebird reprezentuje NUMERIC jako číslo v plovoucí desetinné čárce. Pokud chceš BCD, tak je na to DECIMAL.

Každopádně pro IČO bych nepoužil ani jedno z toho, ale VARCHAR, a to délky tak asi 20.


--- Citace ---b) Char() – VarChar() Úvaha
Char() má podľa význam používať v prípadoch keď je presne daný počet/max počet znakov. Napr. PSČ, IČO. Ináč Varchar().
Je tam niečo, čo túto úvahu neguje?
--- Konce citace ---
Tak například to, že PSČ nemá pevný počet znaků. IČO taky ne (jsou i "krátká IČa").
Moje zkušenost je taková, že CHAR má smysl pouze pro případ CHAR(1), a to ještě ne vždy. Jinak používat VARCHAR.


--- Citace ---3) Domain
Tie sa mi veľmi páčia. Ale predpokladám, že majú význam len tam, kde sa v budúcnosti môže niečo zmeniť. Definovať Domain pre napr. Char(5), VarChar(10), VarChar(20) a podobne (čiže základné typy bez ďalšieho upresnenia) nemá zmysel.
--- Konce citace ---
Ano, "bez dalšího upřesnění". Jenže na domain můžeš udělat i upřesnění, jako třeba "smí obsahovat pouze hodnoty od 100 do 200" nebo "musí začínat nebo končit na A".


--- Citace ---Vytvoril som DB (hurá) a na moje prekvapenie tam nevidím žiadne rozšírenie, len samotný názov DB. Má to tak byť?
--- Konce citace ---
Databáze se jmenuje tak, jak si ji pojmenuješ. Firebirdu je to úplně jedno, klidně bude pracovat s databází pojmenovanou format.exe.

Stanislav Hruška:
//Klidně můžeš použív VARCHAR. Samozřejmě do něj jde vložit jakýkoliv znak, včetně ENTERu.
To som zvedavý, lebo Access + TDBEdit enter nebral.

//Obvyklejší je ale použít buď nějaký malý INT (nula, jedna, NULL), u kterého se ti budou snadno dělat konverze z/na Delphovský boolean,
Hm, to mohlo fungovať aj v SQL. Len teraz nechápem ako to zrealizovať. Nie že mi hneď odpovieš :)

//Pokud chceš BCD, tak je na to DECIMAL.
Asi som si to poplietol

//Databáze se jmenuje tak, jak si ji pojmenuješ.
Už som to zistil

pepak:

--- Citace: Stanislav Hruška  02-10-2012, 12:07:21 ---//Klidně můžeš použív VARCHAR. Samozřejmě do něj jde vložit jakýkoliv znak, včetně ENTERu.
To som zvedavý, lebo Access + TDBEdit enter nebral.
--- Konce citace ---
To je ale limit TDBEditu, nikoliv podkladové databáze. (No, Accessu, možná jo, kdo ví...)


--- Citace ---//Obvyklejší je ale použít buď nějaký malý INT (nula, jedna, NULL), u kterého se ti budou snadno dělat konverze z/na Delphovský boolean,
Hm, to mohlo fungovať aj v SQL. Len teraz nechápem ako to zrealizovať. Nie že mi hneď odpovieš :)
--- Konce citace ---
Třeba INTEGER, když nad tím nechceš přemýšlet...

Stanislav Hruška:
Práveže som chcel. O Integer samozrejme viem.

Navigace

[0] Seznam témat

[#] Další strana

Přejít na plnou verzi