[ inherited @ 28.07.2006. 14:56 ] @
| Interesuje me, za sad, teoretski, kako se u delphi-ju moze odraditi program za mrezu. Da priblizim pitanje.
Imamo. npr., 5 racunara u mrezi. Na jednom je baza podataka, a na ostalim samo korisnicki program, koji je napravljen u delphi-u. Svaki od tih racunara imaju svoju IP adresu. Kako sad povezati te korisnicke programe sa bazom.
Zanima me u toku dizajniranja programa koje komponente se koriste? I neka za ovaj primer je u pitanju Access?!!!
Ako neko moze malo da mi priblizi kako se resava taj problem...
Unapred hvala! |
[ aleksandarpopov @ 29.07.2006. 21:17 ] @
Taj racunar na kome ti se nalazi baza je server. Koje komponente koristiti - zavisi od servera koji koristis, sta ti je lakse za upotrebu. Reciom ADO komponente ili dbExpress. Access ti bas nije najbolji izbor za visekorisnicki sistem (u mrezi) mada moze ali ni za rad u lokalu ga ne volim a kamo li u mrezi. U principu sve ti je jedno da li koristis komponentu na lokalhostu ili gadjas neki racunar u mrezi, sve podesavas u konekcionom stringu komponente recimo TADOConnection-a (ali moras obratiti paznju kako pises program - zbog visekorisnickog pristupa, ko sta menja, kako vrsis update...duga je to prica) Pre putanje samo treba da upises ip servera. Za access bazu na serveru stavi u sherovani direktorijum tvoju bazu, tako da mozes da joj pristupis sa drugih racunara, i posle samo putanju do te baze. Tebi je bitno da imas sve komponente (dll -ove) na klijentu, sve odradjuje taj dll, sa ovog aspekta ti je sve jedno da li program radi u mrezi ili ne. To sto tebe verovatno zanima, kao i mene pre koju godinu, da li ti treba nesto posebno da programiras za rad u mrezi ili ne, u principu ne, klijentska komponenta tvog servera ti sve odradi. npr. za firebird fbclient.dll. Mozes i da napravis ODBC konekciju u control panelu i zatim iz programa gadjas u konekcionom stringu ime Odbc konekcije.
Bolje uzmi neki ozbiljniji SUBP npr. za pocetak MS Sql server desktop edition, ili Firebird ako ne volis MS.
To ti je otprilike to, nema bas neke mudrolije...
Nadam se da sam ti pomogao.
Pozdrav
[ inherited @ 01.08.2006. 12:03 ] @
Hvala na odgovoru.
Malo kasnim sa svojim odgovorom, al ok.
TADOConnection i ConnectionString su mi poznati, pa sam i ja mislio da je postupak takav. Znaci, sve isto kao i na lokalnom racunaru, samo sto na racunaru u mrezi treba serovati folder sa bazom da bi joj pristupili.
Citat:
Pre putanje samo treba da upises ip servera
Ovo mi nije jasno?! Gde da upisem IP servera? Kad se umrezavaju racunari, svaki ima svoju jedinstvenu IP adresu, zar ne? Pa stoga, sto bih je ponovo upisivao, kad se racunari vide u mrezi?
Citat:
MS Sql server desktop edition
Besplatna verzija?
[ Nemanja Avramović @ 01.08.2006. 12:33 ] @
U klijentskom programu upišeš IP adresu servera, da zna gde da traži server...
[ inherited @ 01.08.2006. 23:59 ] @
Citat: JaHvram: U klijentskom programu upišeš IP adresu servera, da zna gde da traži server...
Malo vise objasnjenja, ako nije problem?
[ Nemanja Avramović @ 02.08.2006. 06:52 ] @
Nisam čitao celu diskusiju, ali ne znam šta ti nije jasno? Recimo imaš 5 računara u mreži, sa sledećim adresama i funkcijama:
1) 10.0.0.1 - server
2) 10.0.0.2 - klijent 1
3) 10.0.0.3 - klijent 2
4) 10.0.0.4 - klijent 3
5) 10.0.0.5 - klijent 4
Ako sa klijenta broj 3 želiš da se povežeš na server, kako će klijent da zna gde je server? Moraš ti da mu kažeš da je server na adresi 10.0.0.1
Ako su i server i klijent na istom računaru onda ti je adresa 127.0.0.1
[ inherited @ 02.08.2006. 10:53 ] @
To kontam, pitao sam kako u kodu moje aplikacije to napisati? Da je server na 10.0.0.1 adresi?
[ Nemanja Avramović @ 02.08.2006. 11:20 ] @
To zavisi od komponenti koje koristiš da se kačiš na bazu. Pročitaj help tih komponenti...
[ aleksandarpopov @ 02.08.2006. 12:12 ] @
Zavisi od servera i od komponente koju koristis. Generalno, trebalo bi :
IPAdressaservera\C:\Baza\imetvogfajla
[ inherited @ 02.08.2006. 12:56 ] @
Znaci, ako koristim TADOConnection i TADOQuery i ako je Access u pitanju, moglo bi se
u ConnectionString upisat: 10.0.0.1\C:\Naziv_Foldera\Naziv_Baze.mdb
A u ADOQuery, SQL: SELECT * FROM Naziv_Tabele;?
[ aleksandarpopov @ 02.08.2006. 13:44 ] @
Mislim da bi trebalo da radi. Pre toga proveri da li mozes iz Explorera ili iz TotalCommandera da vidis mdb fajl. I proveri negde u dokumentaciji kako treba te kose crte i tacke staviti ako nista drugo ---> Goooooooooooogle zna kako!
Nisam nikada radio sa Access bazom u mrezi.
Pokusaj ako imas mrezu pri ruci.
Javi kako si prosao!
Pozdrav
[ badam @ 02.08.2006. 21:03 ] @
Evo prilicno koristan kod. Doneo mi je membership na www.delphi3000.com i uvek ga koristim.
Code:
var s:TStringList;
begin
s:=TStringList.Create;
try
ADOConnection1.Close;
if FileExists(ExtractFilePath(Application.ExeName)+'ConnStr.ini') then
begin
s.LoadFromFile(ExtractFilePath(Application.ExeName)+'ConnStr.ini');
ADOConnection1.ConnectionString:=s.Text
end
else
begin
if EditConnectionString(ADOConnection1) then
begin
s.Append(ADOConnection1.ConnectionString);
s.SaveToFile(ExtractFilePath(Application.ExeName)+'ConnStr.ini')
end
end
finally
s.free
end
end;
Ako treba da promenis lokaciju baze ili servera, samo obrises ConnStr.ini iz foldera u kome je .exe.
Bitno je samo da uvek u ObjectInspector postavis Connected property za ADOConnection1 na False pre kompajliranja verzije koju nosis krajnjem korisniku.
Edit: u uses unita stavi ADOConed jer se u njemu nalazi funkcija EditConnectionString()
[ inherited @ 03.08.2006. 01:40 ] @
Evo probao sam tvoj kod, tako da svaki put ka pokrecem program pojavi se
prozor na kojem mogu menjati ConnectionString?! Da li to tako treba? Mislim,
da se pojavi svaki put?!
BTW, nisam video da je kreirano ConnStr.ini, pa sam dodao u uses IniFiles i
opet nista? Sta sam prevideo?
[ badam @ 04.08.2006. 03:52 ] @
IniFiles ti ne treba u uses zato sto ConnStr.ini nije ini file, samo glumi.
ConnStr.ini ce snimiti kada u prozoru za ConnectionString napravis konekciju koja radi i posle se vise nece pojavljivati taj prozor.
[ Bojan Kopanja @ 04.08.2006. 08:31 ] @
Imam jedno pitanjce na konto cele ove price.
Sta je brze i bolje? Da imam program koji ima samo jedan exe i conn.string mu je na bazu koja je u istomfolderu gde je i on pa da se na klijente vuce samo shortcut tog programa i da to tako radi ili da radim na ovaj nacin sa menjanjem conn.stringa?
Sada sam isprobao obe varijante u svojoj mrezi na jednom malom programu i cini mi se da je ova prva varijanta brza. Znaci samo na klijentu mapiram disk sa servera i izvucem shortcut za program s recimo X:\Program\program.exe, a nemam isti taj program i na klijentu pa da moram da menjam conn. string na svakoj masini.
Po ovoj prvoj varijanti je i jednostavnije ako dodje do promene u programu, menjam samo na serveru, a klijenti automatski koriste istu tu verziju...
E sad jedino ako u ovoj prvoj varijanti ima nekih drugih problema koje sada ne mogu da sagledam.
Ajde, da cujem misljenja posto ja stvarno ne znam sta je bolje  .
[ aleksandarpopov @ 04.08.2006. 09:17 ] @
Za ozbiljniji program - nisam bas za to tvoje resenje sa shortcutom. Bolje napraviti klijentski program koji sva potrebna podesavanja cupa iz nekog fajla sa servera, ako hoces sve na jednom mestu da menjas.
Pozdrav
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|