Delphi - BDE - vytvorenie novej databázi
Viem, že odpoveď nebude jednoduchá, ale vedel by mi niekto vysvetliť, ako vytvoriť prázdnu databázu s určitými položkami do TTable? Ak to náhodou niekto pochopí tak, že nepoznám nástroj Database Desktop, tak ešte poznámka k otázke: chcem to urobiť čiste programovo.
Pravim click >> new field >> name = napr.: (client), type = (string) size = (20) ty zavorky tam nepis
Vidím, že sa zabávaš. Ale teraz vážne. Ak nie je databáza, do ktorej by sa dalo zapisovať a pokúsiš sa ju otvoriť, tak máš prvú výnimku. Za každý ďalší prístup do neexistujúcej databáze (vlastnosť Active = False) je ďalšia výnimka. Ak to aj ošetríš, tak tá databáza sa sama nevytvorí a všetky údaje pri ukončení programu stratíš.
A teraz čisto teoreticky:
Čo urobíš, ak potrebuješ začať s prázdnou databázou a nechceš sa zdržovať? Surovo vymažeš databázu z adresára programu a dobrý program to musí bez problémov zvládnuť. Predstav si, že vymažeš v nejakom programe inicializačný súbor *.ini a program ťa s úsmevom na monitore pošle hľadať inštalačku.
Ne spatne jsem te pochopil, myslel jsem ze uz mas DB vytvorenou , jeste dotaz jakou chces pouzivat IBase nebo Mysql ?? Ono je to celkem jedno jakou sql, prikaz muzes zadat stejne jako v php treba v Tmemo , to pak posilat jako pozadavek na server DB .Stejne tak lze vytvaret a mazat DB, nevim zda to nechces natvrdo primo aby to program delal vse sam.
Podľa možnosti BDE, lebo to jediné ovládam (takže nie dbExpress ani Interbase, ale pre zaujímavosť môžu záujemci napísať aj to). No a chcel by som vytvoriť štandartnú tabuľku Paradoxx 7, takže žiadne SQL, ale obyčajné TTable.
Edit: Presne tak, potrebujem vytvoriť databázový súbor na disku z ničoho.
V BDE je databází adresář. Ten vytvoř třeba přes CreateDir. Tabulky dovnitř vyrobíš velice jednoduše. Do TTable umístěné na formu nebo na TDataModule vytvoř všechny pole a tabukla včetně všech indexů (které taky nacpi do TTable) vytvoříš pak Jméno-tabulky.CreateTable.
//Edit: Před jméno-tabulky.CreateTable je vhodné dát jméno-tabulky.TableLevel := 7; aby byla opravdu ve tvaru Paradox 7 (tím obejdeš, že tohle má být nastaveno v BDE Adminu).
//Edit2: Jestli chceš, a jestli chtějí ostatní, mohu někam vystavit zdroják mého objektu, který obsahuje spousty užitečných rutin pro práci s BDE (např. kopírování tabulek, struktur, vytvoření pracovní tabulky v adresáři TEMP atd). Na začátku obsahuje otestování, jestli je BDE nainstalováno, jestli je správné verze, jestli to jiný program nezablokoval. Dál vytvoří objekt TDatabase, ktetý když najde databázi založenou BDE Adminem tak se k ní připojí jinak si vytvoří dočasnou, kterou po sobě na konci uklidí (data pochopitelně nesmaže), nastaví Sessions a nastaví Paradox na práci s češtinou. Je to sice součástí dalšího systému podprogramů, nepůjde to rovnou přeložit (budou chybět pomocné rutiny) ale pro inspiraci (nebo když si to někdo upraví) a použití různých rutin (ty by měly fungovat jak jsou) to poslouží skvěle. Ale vystavit to můžu až v noci, až to pořádně okomentuju.
Aj som si na teba myslel, že sa ozveš. No to by bolo dobré zverejniť ten zdroják, lebo takto moje programy vyzerajú dosť neohrabane. Taktiež ako balzam na dušu pôsobí PDOXUSRS.NET na C:\. Ale to som už s Janom Fialom prediskutoval a niekedy sa pustím aj do bádania v tomto.
Toto som nepochopil. Mám chápať, že databáza je BDEčkom chápaná ako adresár? To sa mi nejako vymyká z normálu.
Podivej se na componentu TDatabase ta to ma nastarosti.
No tak toho je na mňa žiaľ moc. Asi sa s tým budem musieť hrať.
V Objektu TTable můžeš v klidu do vlastnosti DatabaseName narvat cestu (adresář). Když pak klikenš u této tabulky na rozvírací combo ve vlastnosti TableName, uvidíš všechny soubory *.db v uvedeném adresáři. Také můžeš tabulku napojit na objekt TDatabase a před otevřením databáse narvat do vlastností TDatabase.Directory cestu. Počkej chvíli, už komentuju ten zdroják, zachvíli v tomto vláknu bude odkaz.
//Edit: Tak je to tady: Rce_BDE.pas (120Kb). Berte jako inspiraci, přeložit to nepůjde, ale rutiny jsou funkční. Při vytváření objektu Rce_BDE je v konstruktoru TRce_BDE.Create nastavení systému BDE, kontrola jestli jede a připojení k databázi z BDE Admina nebo se vytvoří přechodná databáze podle zadaného adresáře. V destruktoru se po sobě zase uklidí. Nasměruje to i Pdoxusrs.net do datového adresáře (všichni klienti sítě, používající stejnou databází musí používat stejný soubor Pdoxusrs.net).
S tou sieťou to poznám. Riešili sme to s účtovníctvom MRP v bývalom zamestnaní. Niekedy to dalo riadne zabrať.
Edit: Ďakujem. Mal som nočnú, takže až teraz som sa sem dostal.
Ešte otázka. Znamená to teda, že ak použijem v programe BDE a na začiatku v OnCreate ošetrím, či je BDE nainštalované atď., tak nedojde k výnimke? Pýtam sa preto, lebo ak sa použije knižnica na priehľadné okná v C++ a program sa spustí vo Win98, tak sa zrúti okamžite, lebo nenájde vstupný bod funkcie v knižnici DLL. Takisto sa zrúti program, bez možnosti kontroly, napísaný v Turbo Pascale s necracknutou verziou knižnice CRT na počítači od 200 MHz vyššie. Len škoda, že vlastne ani takýto crack nie je legálny.
Cau Milos sory ale odbocim od temy, kde si ked sa ta neda zastihnut,chcem sa ta len opytat ci ti prisla faktura za net za mesiace jul august a september?Dik programový manik...Lubos
Ja platím mesačne.
Ked platis mesacne tak teraz ti uz prislo platit,nevies poradit ked mi nepride platit ze by na mna zabudol alebo co?Ma mi prist platit do konca tohto mesiaca.Dik
Veď zaplať to tak, ako predchádzajúcu faktúru a nechaj si pre prípad doklad.
Jestli na hlavním formu máš nějaké komponenty BDE (TTable,...), je v OnCreate pozdě - už se inicializovaly ty komponenty a na nich to zhavaruje. Je to třeba otestovat v konstruktoru - máž pak dokonce vynikající možnost ustřelit aplikaci: Když dáš do konstruktoru ABORT, form se nevytvoří a je-li to main form, aplikace se ihned ukončí.