Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pocetak rada sa interbaseom

[es] :: Pascal / Delphi / Kylix :: Pocetak rada sa interbaseom

[ Pregleda: 2387 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

XGhost

Član broj: 33279
Poruke: 331
*.pppoe778.bih.net.ba.



+1 Profil

icon Pocetak rada sa interbaseom25.07.2005. u 22:52 - pre 228 meseci
Poslusao sam savjet kolege da ne koristim paradox bazu te sam presao na interbase
napravio sam konekciju po slijedecem

IBDatabase1 //konentuje se direktno na bazu
IBTransaction1 // ide na IBDatabase1
IBQuery1// ide na IBDatabase1 i IBTransaction1
DataSource1 // ide na IBQuery1

Stavio sam komponente DBgrid i DBNavigator1, i bazu mogu citati medjutim nemogu je uredjivati jer mi kaze da je read only.
Sta trebam jos uraditi da bih mogao koristiti bazu
 
Odgovor na temu

obucina

Član broj: 38191
Poruke: 723

Jabber: obucina


+7 Profil

icon Re: Pocetak rada sa interbaseom26.07.2005. u 03:31 - pre 228 meseci
Citat:
XGhost: Poslusao sam savjet kolege da ne koristim paradox bazu te sam presao na interbase

Odlično, ispravno si postupio.

Ovako, ako umesto IBQuery-ja staviš IBTable, sve će raditi kao i sa TTable-om, tj moći ćeš odmah da menjaš podatke.

Nešto moćniji pristup ti je IBQuery + IBUpdateSQL. Da bi ti ovo radilo, u IBQuery-ju postaviš upit, UpdateObject na IBUptdateSQL, postaviš sve upite u IBUpdateSQL-u i to je to. Ovde ti je bedak to što moraš da imaš po dve komponente za svaku tabelu koju menjaš, pa ti forma može biti pretrpana.

E sad, ova dva metoda postoje zarad kompatibilnosti i lakšeg portovanja aplikacija sa TTable i drugara na TIBTable i drugare, što znači da i ovaj pristup treba da izbegneš.

Ostade li šta pitaš se ti. Ostade, ostade. Najmoćniji mehanizam. TIBDataSet.
Takođe naslednik TDataSet-a. Baciš ga na formu, povežeš šta treba, desni klik na njega, DataSet editor, definišeš upite i eto ti... Ovde, slično pristupu IBQuery + IBUpdateSQL, definišeš upit za svaku operaciju. Tako možeš da u SELECT-u spojiš 5 tabela JOIN-ima, i to prikazuješ, UPDATE izvršavaš na jednoj, a DELETE na drugoj tabeli. Ovo se sa TIBTable-om izvodi jaaaaaako sporo. Posebno korisno je to što ima osobine za preuzimanje vrednosti generatora iz baze (osobina GeneratorField), što ti je za primarni ključ prava poslastica - znaš ga pre upisa u tabelu.

E, sad, u zavisnosti kakvu aplikaciju praviš, možda ti trebaju različite vrste transakcija, a o njima čitaj u dokumentaciji. Neko koristi jednu transakciju po formi, neko po datasetu (što mislim da je preterivanje), a neko jednu na ceo projekat (što je glupost).


[Ovu poruku je menjao obucina dana 26.07.2005. u 04:35 GMT+1]
 
Odgovor na temu

XGhost

Član broj: 33279
Poruke: 331
*.pppoe932.bih.net.ba.



+1 Profil

icon Re: Pocetak rada sa interbaseom26.07.2005. u 12:14 - pre 228 meseci
Sada mogu uredjivati podatke, imam jos problem sa Autoincrement, nije problem da definisem odnosno dizajnu baze to sam rijesio je vec u navedenoj konekciji kako da automatski povecava brojeve.

Takodjer sam pokusao da preko BDE radim sa interbaseom preko standarnih BDE komponenata i nije problem sve radi osim sto mi ne radi Autoincrement kao sto je radio u npr Paradoxu sa koji mislim napustiti zbog (hm..znate vec i sami).
 
Odgovor na temu

obucina

Član broj: 38191
Poruke: 723

Jabber: obucina


+7 Profil

icon Re: Pocetak rada sa interbaseom26.07.2005. u 18:15 - pre 228 meseci
TIBDataSet-ovom osobinom GeneratorField.
Treba ti polje tipa INTEGER i jedan GENERATOR za njega.
 
Odgovor na temu

XGhost

Član broj: 33279
Poruke: 331
*.pppoe127.bih.net.ba.



+1 Profil

icon Re: Pocetak rada sa interbaseom27.07.2005. u 00:05 - pre 228 meseci
Kreirao sam generator medjutim kada koristim "Obicne" BDE komponente
i kad unesem novi podatak Ako koristim komponentu Query ne pokazuje mi odmah na ekranu broj vec se isti moze procitati tek kad ponovopokrenem program.
Ako koristim komponentu Table Uopste nema inserta rastuceg broja niti je moguce azurirati promjene. Kako da ovo rjesim na ovim komponentama.Nekako mi je jednostavnije sa njima raditi za pocetak jer jemanja razlika u odnosu na rad sa paradoxom.
 
Odgovor na temu

obucina

Član broj: 38191
Poruke: 723

Jabber: obucina


+7 Profil

icon Re: Pocetak rada sa interbaseom28.07.2005. u 03:08 - pre 228 meseci
Svoju aplikaciju pravis zavisnom od BDE-a, proizvoda ciji je lifetime zavrsen i koji se vise ne podrzava. To takodje znaci i da ces morati da isporucujes BDE sa svojom aplikacijom. Rad sa IBX komponentama ti je 95% isti kao i sa TTable, TQuery i drugima, ne zahtevaju BDE, a i specijalizovane su za rad sa Interbase serverom, pa poseduju mehanizme za resavanje ovakvih problema (IBDataSet i GeneratorField).

Trenutnu vrednost generatora mozes dobiti upitom:

SELECT gen_id(IME_GENERATORA, 0) FROM RDB$DATABASE

Ali je preporuceno da vrednost uzimas uvecanu za jedan, tj sa

SELECT gen_id(IME_GENERATORA, 1) FROM RDB$DATABASE

Ovako nikada neces dobiti dva puta istu vrednost od generatora.

Tvojim pristupom, u OnAfterInsert dogadjaju dataseta koji menjas treba da izvrsis ovaj upit i dobijenu vrednost upises u odgovarajuce polje.
 
Odgovor na temu

Riste Pejov
Team Leader/Senior Software Developer @
Ein-Sof ltd Skopje
Skopje, Macedonia

Član broj: 128
Poruke: 571
62.162.212.*

Jabber: richie@bagra.net.mk
ICQ: 154236769
Sajt: riste.softver.org.mk


Profil

icon Re: Pocetak rada sa interbaseom29.07.2005. u 14:35 - pre 228 meseci
Aplikacija ne treba se uopste zamarati sa generiranje ID-ja. Uradi samo before insert triger kao

CREATE TRIGGER bla bla bla
BEGIN
IF(new.PK_ID IS NULL) THEN
new.PK_ID = gen_id(gen_table,1);
END

E sad problem je ako tebi treba ID zadnjeg upisa u bazu, i to se resava (kao sto je reko obucina) sa:

SELECT gen_id(IME_GENERATORA, 0) FROM RDB$DATABASE;

Ali opet ... baze nisu nikad jednostavne ... ono sto je obucina rekao, valja samo kad je u pitanju single user desktop aplikacija. ako treba app da bude multi user onaj select NIKAKO!!!!

Potrazi na forumu vec sam negde pisao o generatorima, ali u principu oni zive izvan transakcije. Sto znaci moze se desiti sledece:

client 1: Insert into table1 ....
client 2: Insert into table1 ....
client 1: SELECT gen_id(IME_GENERATORA, 0) FROM RDB$DATABASE;
client 2: SELECT gen_id(IME_GENERATORA, 0) FROM RDB$DATABASE;

i vidis ... klient 1 ima ID sloga koji je uneo client2.

Ultimativno dobro resenje je da uradis STORED PROC koja ce da insertuje row i da vraca ID. Istu logiku mozes implementirati i na clientskom nivou.

People who think they know everything tend to irritate those of us who do.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Pocetak rada sa interbaseom

[ Pregleda: 2387 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.