|
[ bancika @ 22.01.2005. 22:21 ] @
| Interesantno je da vecina koji pocnu delphi da rade prvo se uhvate sa bazama (bar sam ja tako zakljucio po pitanjima). Ja nikad nisam radio konkretno sa "vecim" bazama (dosta sam radio XML i slicno, ali nikad npr SQL), ali moze se reci da imam dosta iskustva sa delphi-jem kad izuzmemo to . Hocu da napravim probno programce npr za vodjenje evidencije o studentima nekog fakulteta ili nesto slicno, mislim da je to dobar primer.
1) kako da napravim bazu? sta je ADO, DAO i slicno
2) kako da dodam/brisem/menjam unos
3) kako da filtriram listu po vise kriterijuma, npr hocu samo studentkinje izmedju 20 i 22 godine sa obimom grudi iznad prosecnog za fax 
4) da li moze da se pristupi elementima tabele kao npr StrinGrid-u, ListView-u ili nesto slicno...pitanje je u vezi s tim kako bi odstampao rezultate. Nije problem sama stampa, ako treba mogu i direktno na Canvas da radim, samo kako da "uzmem" citljive podatke.
5) koje komponente za delphi mi trebaju
Hvala unapred,
Bane |
[ iggac @ 22.01.2005. 23:19 ] @
Za ADO pogledaj temu : ADO u Delphi-ju - tutorial
1) ja sam koristio Interbase bazu koja je zasnovana na SQL . Za rad sa njom imas Interbase koji ti dolazi uz Delphi kao i komponente. Ni ja nisam nesto previse iskusan ali kroz tutorijal koji postoji u C:\Program Files\Borland\InterBase\doc\TUTORIAL folderu naucices kako da kreiras bazu i osnovne sql komande. Ako se odlucis za ovu bazu preporucujem ti da prvo prelistas PDF file od tutoriala.
za stavke 2, 3, 4 moras malo da poradis na samom SQL jeziku (veruj mi da nije komplikovan) ali ukratko :
2. ako se radi o dodam/brisem/menjam u tabeli to su naredbe insert/delete/update a ako se radi o bazi onda create/drop/alter naredbe (naravno sa dodatnim parametrima)
3. SQL select komanda sa where uslovima npr.(samo da vidis da nije tesko) :
SELECT Ime,Prezime FROM Studentice WHERE (Br_godina BETWEEN 20 AND 22) AND (Obim_grudi > 20) ;
4. elementima iz pristupas preko IB komponenata (IBQuery, IBDataSet...) kojima zadajes SQL komande za citanje podataka iz baze
5. Interbase, Data Access, Data Controls....
Naravno da bi uopste mogao da koristis Interbase bazu moras da aktiviras ibserver ili ibguardian pomocu InterBase Server managera u meniju Interbase
Nadam se da ce ti ovo bar malo pomoci ako se odlucis za Interbase. Ako ti bude trebalo tutorijala za SQL javi.
[ bancika @ 22.01.2005. 23:40 ] @
Tnx na odgovoru.
Pogledacu pa cu da pitam ako nesto nije jasno
ako neko ima da doda nesto, slobodno
[ _v!rus_ @ 22.01.2005. 23:46 ] @
1. Koristi DatabaseDesktop (ide uz delphi), napravi novu tabelu sa potrebnim poljima (ime, prezime, godiste...). Snimi kao *.db u neki folder. U delphi-u dodaj TTable komponentu, za database name upisi FOLDER gde si snimio tabelu, a za table name izaberi u tabelu (*.db). Potom desni-klik-na-instancu-TTable -> Fields Editor -> desni-klik -> Add all fields. Daj TTabel-u neko ime.
ADO
2. Koristis TableName.Apend, .Edit, .Post, .Delete... vidi metode u helpu. Generalno pre svake operacije ide .Active := True, a na kraju .Active := False. Mozes da postavis .Active i @DesignTIme, ali to i nije dobra praksa jer se pending promene "snimaju" tek posle .Active := False, dotle su kesirane (i za lokalne TTable NE MOZE da se iskljuci, saznao posle 2 god. rada sa bazama, do tada mi se desavalo da ako pukne program sve promene na bazi u toj sesiji su izgubljene).
Neki generalan sablon bi bio
Code:
//neko dodavanje (dodaje novi record za neku maju)
MyTable.Active := True; //Otvori tabelu
MyTable.Append; //postavi je u append mod, dodaj novi record
MyTableIme.AsString := 'Maja'; //postavi polje ime za novi record
MyTableGod.AsIneteger := 85; //postavi polje god za novi record
MyTable.Post; //postuj promene na bazi
MyTable.Active := False; //zatvori tabelu
//neke izmene (brise svima Ime)
MyTable.Active := True; //Otvori tabelu
MyTable.First; //Postavi se na prvi record u tabeli
while not MyTable.Eof do //vrti do kraja tabele
begin
MyTable.Edit; //postavi trenutni record u edit mod
MyTableIme.AsString := ''; //ocisti polje Ime
MyTable.Post; //postuj promenu
MyTable.Next; //prebaci se na sledeci record, OBAVEZNO zbog
//mrtve petlje
end;
MyTable.Active := False; //zatvori tabelu
//neko brisanje
MyTable.Active := True; //Otvori tabelu
MyTable.First; //Postavi se na prvi record u tabeli
while not MyTable.Eof do //vrti do kraja tabele
MyTable.Delete; //obrisi record
//Please note, .Delete em brise, em se prebacuje na sledeci record i ne treba .Post
MyTable.Active := False; //zatvori tabelu
3.
Code:
MyTable.Filter := 'Ime = ' + QuotedStr('Maja')// + ' AND God > ' IntToStr(85);
MyTable.Filtered := True;
4., 5. Vidi 1. i 2...
Ovo je neko OSNOVNO koriscenje baza, sve dalje "ce ti se kazti samo" kad malo uronis u help i naletis na neki purpose-specific problem! (onako kako se programiranje i uci)
Btw, video sam ti sajt i postove, bas me cudi da nisi do sad radio sa bazama...
[ bancika @ 23.01.2005. 00:33 ] @
oket, hvala puno. Izgleda da nije tesko kao sto mi se ucinilo na prvi pogled
napravio sam neku bazicu u access-u i sad mrckam po delphi-ju :)
Baze nisam radio ranije iz jednostavnog razloga sto mi se nikad nije ukazala potreba. Ja mahom radim korisnicke programcice (npr toolbar za IE, web form submitter, parental control i slicni) i za sebe i "za kintu", niko mi ne trazi baze :)
[ bancika @ 23.01.2005. 14:11 ] @
jos jedna sitnica: jel mnogo velika komplikacija ako vise korisnika (sa razlicitih compova u LAN-u) treba da obradjuje bazu i kako bi to otprilike islo
[ broker @ 23.01.2005. 22:50 ] @
Ako se ne varam, uz Delphi sa ne CD-u dobijaju prilicno obimni prirucnici koji pokrivaju ovakva pitanja.
Ako hoces da radis sa bazama moras da se potkujes teorijom, nema tu cacnes i ono radi, mislim ima ali radi dok su tu majstori. A kad odu...
[ iggac @ 24.01.2005. 00:15 ] @
Citat: bancika: jos jedna sitnica: jel mnogo velika komplikacija ako vise korisnika (sa razlicitih compova u LAN-u) treba da obradjuje bazu i kako bi to otprilike islo
Za Interbase-ove baze i nije bas neki veliki problem samo treba debelo obratiti paznju na transakcije.
[ _v!rus_ @ 24.01.2005. 00:29 ] @
@Bancika
Razmotri da batalis access baze ako vec radis u delphi-u. Jeste da se lako integrisu u windows i office aplikacije, ali zna da pravi probleme kod distribucije programa. Naime, da bi se pristupilo access bazi moras napraviti alias na target masini, sto i nije neki problem, ali po mom "iskustvu" nece uvek da ide glatko, zavisi da li target masina ima instalirane sve potrebne ODBC drajvere (i DAO - Data Access Object, cesto nema na Win-u 98 ), a i kad ima nekad nece "standardnim" nacinom kreiranja alias-a (putem BDE-a), vec mora u ODBC manageru windowsa, pa ovo, pa ono. A posto sa svakim novim office-om uvek stize i najnoviji ODBC, slobodno mozes koristiti Paradox ili IB (njima ne treba DAO), putem ODBC-a lako ces pristupiti bazi iz bilo koje office (i druge) aplikacije. Ja konkretno ne bih nikad koristio Access bazu osim ako bas ne moram...
Sto se tice pristupa bazi od strane vise korisnika, zavisi od konkretne situacije. Naime, mozes lockovati celu bazu ili record za jednog korisnika u kodu programa da bi se izbegao problem kada dva korisnika modifikuju isti record. Lockovan record moze da se cita ali ne moze da se menja. Uostalom vidi u helpu za vise o tome. A i mislim da tip baze nije bitan, bitno je kako to BDE resava posto u delphi-u radis sa potomcima TDataset, samo je bitno kako je to TU reseno.
Mozda dobar nacin za testiranje je XP-ov switch user sistem. Napravi kod sebe vise usera i pokreni svoj program kod svakog od njih pa exprimentisi... 
[ bancika @ 24.01.2005. 00:57 ] @
Nisam bas na to mislio.
U pitanju je onaj moj jednostavan primer: studenti/clanovi biblioteke i slicno.
znaci imam jednu bazu i jednu tabelu u njoj (cak nemam ni knjige ni ispite  )
Da li je izvodljivo preko nekog drugog racunara u LAN-u koristiti bazu kao da je u lokalu...
a u slucaju da batalim access, da li je potrebno nesto da se menja kod delphi-ja (tj sigurno mora, samo u kojoj meri?), tj da li mogu da koristim ADO i dalje, posto mi se cini zanimljivo  ako je moguce, sta treba da promenim i kako da napravim bazu onda?
Dobro si spomenuo...recimo da hocu da isprobam sve to na drugom compu, sta treba da instaliram da bi sve radilo oket?
Hvala unapred
[ Riste Pejov @ 24.01.2005. 08:22 ] @
Citat: iggac: Za Interbase-ove baze i nije bas neki veliki problem samo treba debelo obratiti paznju na transakcije.
Ne trebas se uopste zamarati sa transakcijama ako ne zelis neke specificne akrobacije. IB/FB ima tako dobar concurency sistem da sve trebas uraditi je:
IBTransaction1.StartTransaction();
IBQuery1.SQL.Text = 'INSERT INTO bla (bla1,bla2) VALUES (1,"test")';
IBQuery.ExecSQL();
IBTransaction1.Commit();
i to je sve :)
Najcesci primer kod novajlija je da ne komituju transakciju i onda dobijes pitanja kao:
Zasto kad jedna instanca moje aplikacije insertuje podatke, dok je ne ugasim drug instanca ih ne vidi. Ili eventualno ovo urade sa vise formama od koje svaka ima svoju transakciju i onda kad se podaci insertuju u jednu formu onda ih druga ne vidi.
[ sasas @ 24.01.2005. 08:51 ] @
Citat: _v!rus_: @Bancika
sve potrebne ODBC drajvere (i DAO - Data Access Object, cesto nema na Win-u 98 ), a i kad ima nekad nece "standardnim" nacinom kreiranja alias-a (putem BDE-a), vec mora u ODBC manageru windowsa, pa ovo, pa ono. A posto sa svakim novim office-om uvek stize i najnoviji ODBC....
Cisto da coveka ne dovodimo u zabludu:
1. Za pristup Access bazi najzgodnije je koristiti ADO komponente
2. instalacija ADO (odnosno MDACa) na nekoj masini se svodi na pokretanje jednog EXE fajla, ili prosto ukljucivanjem ADO merge modula u instalaciju
3. MDAC se standardno isporucuje uz os od Windowsa 2000 i zilion drugih programa instalira MDAC, tako da je danas cudo da se uopste pronadje verzija bez ADOa
4. ADO connection string je najjednostavniji mehanizam za povezivanje s bazom koji ja znam (a znam ih ;)
ADO je zanimljiv jer ostavlja mogucnost da se skaliraju programi na drugu bazu bez izmene kooda (osim izmene SQL upita eventualno). Dovoljno je promeniti connection string, i stvar ce da radi i sa MSSQLom, ORACLOM, DB2 i jos "ponekom" bazom podataka.
I naravno, transakcije:
ADOConnection.BeginTrans;
//radis sa svim querijima povezanim na tu konekciju koliko hoces
ADOConnection.CommitTrans;
i to je to.
Eh, da, ako se slucajno neko odluci na prelazak na .NET, ADO mu je mala briga jer tamo se radi sa ADO.NET tako da je prelazak relativno jednostavan.
ss.
[ sasas @ 24.01.2005. 08:54 ] @
ex, zaboravih reci, problem sa razlicitim verzijama ADOa je minimalan, jer se jako lepo prepisuju jedan preko drugog :) Dovoljno je da u svoju instalaciju ukljucis neki relativno nov (ja preferiram 2.7 i 2.8) i ne brines za kompatibilnost.
A i kompatibilni su prema dole, tako da...
ss.
[ bancika @ 24.01.2005. 10:06 ] @
tnx
1)a jel moze connection string da poveze sa remote bazom ili samo sa lokalnom?
2)a sta je transakcija 
[ sasas @ 24.01.2005. 10:51 ] @
Citat: bancika: tnx
1)a jel moze connection string da poveze sa remote bazom ili samo sa lokalnom?
Naravno da moze kako 'oces :)
recimo za povezivanje sa MSSQL serverom:
Provider=SQLOLEDB.1;Persist Security Info=False;User ID=XXX;pwd=XXX;Initial Catalog=NAZIV BAZE NA SERVERU;Data Source=NAZIV SERVERA
A za acces samo uneses ime fajla sa kompletnom putanjom:
\\udaljeniracunar\sharedfolder\baza.mdb
2)a sta je transakcija :)
Transakcija je mehanizam da ti spase zivot. Zamisli ovako, ti trebas poslati neke pare meni preko banke. U bazi ide ovako (pojednostavljeno naravno):
1. Skini pare sa racnua bancika
2. Stavi pare na racun sasas
A ako se desi ovo:
1. Skini pare sa racnua bancika
2. pukla aplikacija, resetovao se server, nagazio neko na mrezni kabl...
sta onda?
Zato postoje transakcije:
ADOConnection.BeginTrans;
1. Skini pare sa racnua bancika
2. Stavi pare na racun sasas
ADOConnection.CommitTrans;
Transakcije osiguravaju upis u bazu, dakle ili ce se upisati sve ili nece nista. Zgodno zar ne? Pre nego sto se zaletis da ih koristis svugde:
Usporavaju bazu (znacajno)
moras mnogo dobro da vodis racuna da zatvaras transakcije
verovatno ce se naci neko da ti da i 'knjiski' odgovor sta su transakcije, ali mislim da vidis poentu :)
ss.
[ bancika @ 24.01.2005. 14:46 ] @
cool, hvala :)
a za transakcije sam imao intuitivnu predstavu, samo me interesuje da li se koriste i za nesto drugo osim za bas takve slucajeve...npr. ja upisujem novi slog u bazu...jel ima potrebe za transakcijama?
[ sasas @ 24.01.2005. 15:16 ] @
Pa, generalno je najbolje transakcije koristiti sto manje. Dakle, samo za kriticne obrade, u slucajevima kad se ostali metodi zastite integriteta (relacije, npr.) ne mogu izboriti sa budalom koja klikce po ekranu :)
Dakle, za obicne inserte nikako.
ss.
[Ovu poruku je menjao sasas dana 26.01.2005. u 12:54 GMT+1]
[ bancika @ 24.01.2005. 16:10 ] @
cekajte ljudi, ovo me podseca kao kad neko pita da li je bolji intel ili amd pa nastane opsti pokolj
nema potrebe za tim.
posto sam provalio ono najosnovnije (probao sam access bazu sa ADO i radilo je super). probao sam i paradox tabelu i radilo je ok. juce sam instalirao IB ali se nesto tu malo kocim...nebitno.
posto mi se cini da su to tri osnovna pravca, sta trebam da instaliram na racunaru koji nema delphi da bi sve to funkcionisalo (za prva dva slucaja)...i kako da osposobim recimo LAN da programi rade ok sa bazom koju postavim na jednom compu.
hvala unapred,
Bane
[ Riste Pejov @ 25.01.2005. 08:36 ] @
Citat: sasas: Pa, generalno je najbolje transakcije koristiti sto manje. Dakle, samo za kriticne obrade, u slucajevima kad se ostali metodi zastite integriteta (relacije, npr.) ne mogu izboriti sa budalom koja klikce po ekranu :)
Dakle, za obicne inserte nikako.
Ja se ne slazem, a mislim ni ostatak sveta. Ali ipak, evo da prezentiram moju odbranu.
1. Transakcije sluze da garantiraju atomicnost. Atomicnost je neka terminologija koja zeli reci da: Ako commit-ujem transakciju, sve sto je uragjeno unutar te transakcije, je 100% uneseno kao podatak u bazi.
2. Transakcije postoje, ti to zeleo ili ne. Kod svih servera za baze ne mozes nista uraditi bez transakcije. (kao server za baze ne brojim MySQL sa myISAM tipom tabela ili mozda Access). To sto nekom programeru izgleda kao da nije koristio transakcije to je zato sto je server automatski njemu startovao transakciju i komitovao posle kraja inserta/updatea.
3. Transakcije nisu samo za kriticne obrade, vec da obezbede konkurentni pristup podataka za vise korisnika.
4. Ako baza treba imati vise od dva-tri korisnika, zaboravi desktop baze kao Paradox, Access i sl. Ne mozes nedostatke baze sakriti sa App serverima i slicnim dodacima. Sto vise, negde gore bio je neki decko koji je tvrdio da 150K korisnika pristupa paradox bazi i da ima svoj metod zakljucavanja baze. Baza ima ono sto ima, ti nemozes dodati ili oduzeti metode zakljucavanja. Valjda je covek mislio da ima 150K slogova sa korisnickim nalozima, posto 150K konkurentnih usera je previse i za oracle na 16 procesorskom sistemu (spekulacija).
5. Ne za*ebavaj se sa bazama kao Access, Paradox ili Foxpro, kad postoje baze kao MSSQL, Firebird (free), PostgreSQL(free).
6. Ako zelis FB/IB onda http://www.elitesecurity.org/tema/84694/0#543271
[ sasas @ 25.01.2005. 08:55 ] @
Imam utisak da se nismo razumeli...
mislio sam na koriscenje transakcija u npr. ovim slucajevima:
1. kad je operacija sama po sebi atomicna (mada ovo i bez mog pametovanja niko ne bi napisao :)
<pseudocode>
connection.BeginTrans;
q1.SQL := 'INSERT INTO Employees(Id, Name) VALUES (1, "sasa")';
q1.ExecSQL;
connection.CommitTrans;
</pseudocode>
2. ili recimo kad su npr. tabele Employees i EmployeeWorkHours povezane relacijom, sa 'enforce-om' (zna li neko dobar prevod?) ref. integriteta:
<pseudocode>
connection.BeginTrans;
q2.SQL := 'DELETE FROM EmployeeWorkHours WHERE Id_Employee = 1';
q2.ExecSQL;
q1.SQL := 'DELETE FROM Employees WHERE Id = 1';
q1.ExecSQL;
connection.CommitTrans;
</pseudocode>
u ovom drugom slucaju je q2 suvisan, pa samim tim i transakcija. inace stoji sve ovo sto pricas.
ss.
[ bancika @ 25.01.2005. 13:26 ] @
@Riste:
oket, koje su bitne razlike recimo izmedju access i firebird? pri tom mislim na instalaciju i na koriscenje u delphi-ju
tnx
[ _v!rus_ @ 26.01.2005. 01:18 ] @
Citat:
Ako baza treba imati vise od dva-tri korisnika, zaboravi desktop baze kao Paradox, Access i sl. Ne mozes nedostatke baze sakriti sa App serverima i slicnim dodacima. Sto vise, negde gore bio je neki decko koji je tvrdio da 150K korisnika pristupa paradox bazi i da ima svoj metod zakljucavanja baze. Baza ima ono sto ima, ti nemozes dodati ili oduzeti metode zakljucavanja. Valjda je covek mislio da ima 150K slogova sa korisnickim nalozima, posto 150K konkurentnih usera je previse i za oracle na 16 procesorskom sistemu (spekulacija).
:)
Kad sam napisao "korisnici" nisam mislio ni na broj konkurentnih korisnika baze a ni na broj slogova u tabeli usera, vec broj recorda u glavnoj tabeli korisnika (kablovske televizije), kojoj moze da se istovremeno da se pristupa sa nekih 20-ak lokacija (sto je sigurno vise od 2-3:), a ni uopste nisam tvrdio da imam "neki svoj metod zakljucavanja baze", nego samo cisto programski resen problem istovremenog pristupa i izmene baze od strane tih 20-ak korisnika, pri cemu se razlikuju nivoi pristupa i izmene baze u zavisnosti od nivoa usera koji pristupa bazi. Ideja je u TCP/IP komunikaciji za izmene na bazi pri cemu se samo izmene salju preko socketa, a server posle "natenane" primenjuje te izmene i dostavlja nazad (opet preko TCP/IP-a) izvestaj o uspehu onom useru koji vrsi izmenu, a ostale usere (transparentno) obavestava da se baza izmenila i (opet transparentno) preuzimaju se samo izmenjeni recordi. Korisnicki kompovi dok klijent program radi imaju svoju bazu lokalno koja se podudara sa serverskom (naravno, nisu svi recordi dostupni svima, zavisi od nivoa pristupa).
Verovatno za neku jacu svrhu da bi mi mozda i bio potreban neki od DB servera, ali za ovo mi je opisani metod sasvim dovoljan, imam punu kontrolu nad finesama koje mogu da isksrnu, i sto je najbitnije za sada jako lepo radi (jos uvk u test fazi :)
Btw., izvinjavam se zbog onakvog reagovanja, nesto mi nije bio dan. U sustini nemam nista protiv DB servera, moj je problem sto volim tradicionalne metode.
[ _v!rus_ @ 26.01.2005. 10:47 ] @
Ok, prihvatam kritiku (verovatno ni ja ne bih prihvatio izvinjenje:), poruka obrisana...
[ bancika @ 26.01.2005. 15:18 ] @
okej, jel mozemo malcice da se vratimo na temu :)
napravio sam access bazu i pristupam joj sa ADOTable, bla, bla.
sve to radi okej.
posto nemam mrezu ne mogu trenutno da testiram da li radi tako, ali sam probao recimo da pokrenem dva programa u isto vreme. i recimo u jednom dodam slog, a drugi ne "vidi" to sve dok ih oba ne iskljucim i ponovo izvrsim jedan...jel moze to da se resi i jel ce tako biti i preko mreze?
[ dragancesu @ 26.01.2005. 16:40 ] @
Citat: ...recimo u jednom dodam slog, a drugi ne "vidi" to sve dok ih oba ne iskljucim i ponovo izvrsim jedan...jel moze to da se resi i jel ce tako biti i preko mreze?
Odgovor je verovatno potvrdan. Ne koristim access, ali ovde je problem sa transakcijama.
Transakcije shvati kao nesto normalno. To baza radi da bi zastitila integritet podataka. Za operacije INSERT, DELETE, UPDATE je potrebna potvrda. To se zove COMMIT kako god da je pisano. Ali mozda nije dovoljno.
Zamisli da radis obradu na recimo 10000 slogova i nestane struje posle recimo obradjenih 8000 slogova. Sta ce baza da ti prikaze kad se digne? Verovatno stanje pre obrade, recimo prethodno regularno stanje.
Inace kad korisnik pristupi bazi on vidi trenutnu "sliku" podataka i radi s njom. Kad nesto promeni, onda potvrdi promene i tada drugi mogu to da vide. Ali, kako i drugi rade sa "slikom", da bi videli podatke koje je neki drugi korisnik promenio potrebno je osveziti "sliku". Ovo je mozda najvise izrazeno u Formi.
"Slika" su podaci koji su aktuelni u tom trenutku, pa se nadju u baferu, i sa tim radi korisnik. Ovo ni u kom slucaju nije VIEW.
[ matory @ 26.01.2005. 16:44 ] @
Mislim da sam shvatio sta covek (koji je postavio) temu zeli.
session.NetFileDir:=ExtractFilePath(Application.ExeName);
Zatim na serveru sharing-ujes folder gde ti je baza i exe, a na drugom kompu taj folder mapiras kao da je njegov. izvuces ikonicu od exe-a ili nemoras i to radi.
Sto se tice paradoxa treba ti na racunarima DBengine (BDEinst.dll) imas ga negde na prvom Delphijevom disku. Kpiraj ga u Windows-System. U Start-run kucaj regsvr32 BDEInst.dll i to je to.
Ovo je verovatno sve amaterski ali radi takve poslove sa dva tri racunara.
[ bancika @ 26.01.2005. 21:45 ] @
cekaj, sta postizem sa session.NetFileDir:=ExtractFilePath(Application.ExeName);
sad ja ne razumem :)
[ Riste Pejov @ 27.01.2005. 09:40 ] @
@bacika:
Access:
- Mozes pristupati .mdb bazi na svakom PC-ju na kome prebacis aplikaciju, kod svih modernih Win varijanta (xp/2K) imas MDAC i nemas potrebe od dopunske instalacije.
- Broj konkurentnih usera ne moze biti klasa velicine FB-a. Valjda vise od 10-tak i vec bi imao poblema.
- Laka adaministracija, laki dizajn baze
FB:
- moras instalirati server, ili nositi sa sobom embedded varijantu (embedded nije multiuser)
- Imas nativne komponente u delphiju
- Malo komplikovanija administracija i dizajn
Sve ovisi o tome sta zelis raditi. Ako radis multiuser aplikaciju preko mreze, onda FB. ako radis desktop applikaciju onda Access. I FB embedded moze da obaviti posao kao desktop, i ne trebas nista instalirati a imas sve sto ima i FB server. Ako se pocinje sa desktop app, koja bi kasnije porasla a firma vec radi sa MS SQL server, onda valjda opet access, posto je migracija sa Access na MS SQL veoma laka.
[ Riste Pejov @ 27.01.2005. 10:01 ] @
Citat: sasas: Imam utisak da se nismo razumeli...
mislio sam na koriscenje transakcija u npr. ovim slucajevima:
2. ili recimo kad su npr. tabele Employees i EmployeeWorkHours povezane relacijom, sa 'enforce-om' (zna li neko dobar prevod?) ref. integriteta:
<pseudocode>
connection.BeginTrans;
q2.SQL := 'DELETE FROM EmployeeWorkHours WHERE Id_Employee = 1';
q2.ExecSQL;
q1.SQL := 'DELETE FROM Employees WHERE Id = 1';
q1.ExecSQL;
connection.CommitTrans;
</pseudocode>
u ovom drugom slucaju je q2 suvisan, pa samim tim i transakcija. inace stoji sve ovo sto pricas.
ss.
Atomicna operacija ne postoji bez transakcije, implicitne ili explicitne. Baze trebaju biti ACID kompatibilni .... a to nije samo atomicnost.
Pogledaj: http://www.fredosaurus.com/notes-db/transactions/acid.html
http://www.geocities.com/mailsoftware42/db/
[ bancika @ 27.01.2005. 11:47 ] @
hvala, I got the picture :)
i sad jos jedno glupo pitanje: koja je razlika izmedju TTable i TQuery?
[ Riste Pejov @ 27.01.2005. 14:19 ] @
Kod modernih DB servera
TTable == TQuery (SELECT * FROM TBL)
TTable je rudimentiran ostatak sa BDE-a i paradox-a. Zaboravi TTable.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|