Kada se radi o višekorisničkom okruženju, vrlo je bitno da se ne dozvoli da jedan korisnik može da ometa rad drugih, bilo tako što će zaključati bazu, pa zaboraviti da je otključa bilo tako što će non stop nešto čačkati po podacima pa će ostali morati da čekaju na red. Tako da, direktan pristup bazi otpada, već mora da postoji neki layer između baze i klijenata, tj. klijent aplikacija. E sad, ako nećeš da koristiš ADO i SQL Server koji sam po sebi predstavlja taj layer, moraćeš da napraviš svoj. Naravno, to ne mora da bude neka komplikovana server aplikacija, već može da bude mini server koji može da komunicira sa klijentima i sa bazom, tako što će od klijenata primati određene zahteve (dodaj podatke, izmeni podatke, izvrši taj i taj query i pošalji mi rezultat... itd.). Taj server bi imao svojevrsni queue, tako da kada dva klijenta zatraže isti podatak, neće doći do konflikta. Komunikaciju između klijenta i servera možeš ostvariti pomoću Winsocka recimo.
Evo kako bi to trebalo da izgleda. Klijent pošalje serveru svoj ID, svoju IP adresu u mreži i zahtev sa parametrima (koja akcija, koja tabela, koja polja). Server obrađuje zahtev, proverava queue i ako je prazan izvršava ga odmah, a ako nije stavi na na kraj liste i obrađuje po završetku svih ostalih (u praksi će queue u 99% slučajeva biti prazan, ali treba da postoji za slučaj da dva klijenta pošalju zahtev u istoj sekundi ili je baza toliko narasla da treba par sekundi da se obradi zahtev). Kada izvrši zahtev, zavisno od toga kakav je on bio, server šalje povratnu informaciju njemu ili svim klijentima koji su u mreži... tj. ako je neki podatak dodat, promenjen ili izbrisan, onda se šalje update svim klijentima... a ako je zatraženo da se izvrši query sa ciljem da se dobiju filtrirani podaci, onda se vraća samo klijentu koji je to zatražio. Takođe, ta server aplikacija bi trebalo da ima i logovanje svih pristupa... tako da imaš jednu tabelu koja sadrži podatke o tome koji klijent, pod kojim korisničkim imenom, u koje vreme je izvršio neku operaciju i koju i nad kojim podatkom. Ovo je vrlo bitno, jer ako se pojave neke nelogičnosti u bazi, može da se trejsuje kada i kako je ta nelogičnost nastala i ko je doveo do toga, a ako toga nema, svaki nezadovoljni radnik bi mogao da sabotira bazu i niko ne bi znao da je to on uradio. Naravno, svaki zahtev bi morao da ima START i END string, tako da ako nema ta dva, onda server označi zahtev kao neispravan i ne vrši nikakvu operaciju nad bazom, već vraća klijentu poruku da ponovi zahtev. Ovo recimo rešava problem kada u toku slanja pukne mreža ili klijentov računar, pa ne stignu svi paketi na odredište, itd. Sve su to problemi na koje treba misliti.
E sad, ovo možda zvuči komplikovano, ali ako si već krenuo da praviš multikorisničko okruženje, ne možeš očekivati da sve bude isto kao kad radiš bazu za jednog korisnika. Jednostavno, višekorisničko okruženje zahteva mnogo veću kontrolu pristupa i rešavanje gomile problema od kojih je Picard neke već pomenuo (korisnik pristupi bazi i ode na kafu ili još gore završi smenu, a ostali ne mogu ništa s njom da rade). Isto će se desiti ako nešto pukne prilikom rada sa podacima od strane nekog klijenta, pa baza ostane zaključana (pritom ne mislim samo na zaključavanje tvojom true false metodom, već i accessovima lockovanjem) ili ne daj Bože pukne mreža. Pored toga, tu su i problemi sa logovanjem, sa pucanjem baze i slično. Jednostavno, mora da postoji layer koji će to da razrešava i sačuva podatke u slučaju kvara, jer nikad nije dobro da radnik može namerno ili slučajno da napravi havariju i stopira celu firmu zato što nije uneo podatak kako treba, a da o tome ne postoji log koji će uperiti na tog radnika.
U svakom slučaju, znam d si rekao da ne predlažemo ništa drugo, ali kako god okreneš, siguran sam da bi bilo lakše naučiti ADO i preći na SQL Server, jednostavno manje posla. Istina je da, iako nema nekih velikih razlika između ADO i DAO, ADO može u nekim slučajevima da zbuni nekoga ko dugo radi sa DAO (ja i dan danas koristim DAO kada radim jednokorisničke aplikacije, jer jednostavno brže radim u njemu), ali opet to je ništa u odnosu na ono što te čeka ako hoćeš da napraviš stabilnu multikorisničku aplikaciju koristeći DAO. Naravno, izbor je tvoj i ako si baš tako rešio, onda radi... ovde ćeš svakako dobiti svaku pomoć koja ti treba. Ali spremi se da ćeš morati da se pozabaviš ne samo radu sa bazom, već i mrežnim protokolima i komunikacijom.
-Odracuonogakomijedrpiorazmaknicu.
-Ne rxdi mi txstxturx, kxd god hocu dx
ukucxm "x" onx ukucx "x".
-Ko kaaz e da ja neuummem da kuuca
m.
-Piše "Insert disk 3", a jedva sam i ova
dva ugurao u drajv
-Postoje samo dve osobe kojima
verujem, jedna sam ja, a druga nisi ti