Fujitsu-Siemens
 
M A G A Z I N
 
SOFTWARE 
  Boris Bjelošević

Iz Access-a na Web

Koliko puta ste imali priliku da vidite neke stranice na sajtovima, ili pak kompletne sajtove, koji iz dana u dan menjaju informacije koje vam prikazuju, ali ne i svoj oblik, odnosno dizajn. Naizgled te stranice/sajtovi deluju kao da neko svakodnevno menja sadržaj uspevajući da ostavi dizajn netaknut. Međutim, iza takvih stranica se, kao što ste verovatno i pretpostavili, vešto krije baza podataka iz koje se "vuku" prikazane informacije.
Osoba (ili osobe) koje kreiraju takve stranice moraju da naprave softverski mehanizam kojim se prikazuju podaci iz baze. S obzirom da u nemerljivo najvećem broju slučajeva osobe koje ubacuju podatke u bazu nemaju ni osnovno znanje o samim bazama, potrebno je napraviti i mehanizam kojim će se preko web-stranice obezbediti da te osobe "pune" bazu podataka.
U ovom tekstu ćemo se prvenstveno pozabaviti mehanizmom ispisivanja željenih podataka koji se nalaze u bazi. Za početak ćemo koristiti bazu podataka kreiranu u programu Microsoft Access, kao i ASP kojim ćemo "pozivati" podatke da se prikažu na web-stranici.
Greše svi oni koji ASP (Active Server Pages) nazivaju programskim jezikom; to je tehnologija web-programiranja. Nastao je u Microsoft-ovom dvorištu kao rešenje kojim se obezbeđuju dinamične web-stranice i trenutno se smatra sastavnim delom rada pod Windowsom na Internetu/intranetu. Dosegao je do treće revizije (verzija 3.0), koja dolazi uz Windows 2000. Da biste mogli da koristite blagodeti ove tehnologije, potrebno je da imate instaliran Windows 2000 ili XP, ali i da "doinstalirate" Internet Information Services (IIS), jer on nije uključen u osnovnu (default) instalaciju Windows-a. Moguće je koristiti ASP i pod Windows-om 98, ali se dodatak za njegovo uspešno korišćenje mora potražiti u Option Pack-u za Windows NT (uz koji dolazi ASP v2.0).
Neke od alternative ASP-u su PHP (sa, za naše uslove jakim, pridevom – besplatan), Cold Fusion, pa donekle i CGI-skriptovi.


Trk na web


Ovde nećemo zalaziti u umetnost kreiranja baze u Access-u, već ćemo u startu uzeti za primer jednu koja već postoji. Prilikom pune instalacije programa Microsoft Access instalira se i baza Northwind.mdb, koja služi da na primeru jedne relacione baze pokaže mogućnosti samog programa. Ova baza pokazuje poslovanje jedne fiktivne firme koja se bavi trgovinom prehrambenih proizvoda i kao takva ima stalne i povremene poslovne partnere, prikazane u tabeli Customers. Pogledaćemo kako možemo ovu tabelu prikazati na web-u.
Za početak potrebno je samu bazu iskopirati u direktorijum u kojem će se nalaziti naš mini-sajt. Osnovni direktorijum za kompletan web-server (računar nam postaje web-server čim instaliramo IIS) je C:\Inetpub\wwwroot. Stoga ćemo u ovom direktorijumu napraviti poddirektorijum pod imenom tutor. Odmah ćemo u sam direktorijum snimiti bazu Northwind.mdb. Nije nužno da sama baza bude u direktorijumu gde se nalazi i program koji je poziva, ali će njeno prisustvo ovde olakšati posao.
Sada je potrebno napraviti fajl pod nazivom default.asp i u njega ukucati sledeći program.

1. <% strProvider = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=C:\Inetpub\wwwroot\tutor\northwind.mdb"
2. set objConn = Server.CreateObject("ADODB.Connection")
3. objConn.Open strProvider
4. set rs = Server.CreateObject("ADODB.Recordset")
5. set cm = Server.CreateObject("ADODB.Command")
6. cm.ActiveConnection = objConn
7. cm.CommandText = "SELECT * FROM Customers"
8. rs.Open(cm)
9. %>
10. <html>
11. <head>
12. <title>Access na web-u</title>
13. </head>
14.
15. <body>
16.
17. <table border="0" cellpadding="3" cellspacing="1" bgcolor="#aaaaaa" align="center">
18. <tr bgcolor="#333333"><%
19.
20. For i=0 To rs.Fields.Count-1
21.
22. %>
23. <td><font color="#aaaaaa"><%=(rs.Fields.Item(i).Name)%></font></td><%
24.
25. Next
26.
27. %>
28. </tr><%
29.
30. Do Until rs.EOF
31.
32. %>
33. <tr><%
34.
35. For i=0 To rs.Fields.Count-1
36.
37. %>
38. <td><%=Trim(rs.Fields.Item(i).Value)%></td><%
39.
40. Next
41.
42. %>
43. </tr><%
44.
45. rs.MoveNext()
46. Loop
47.
48. %>
49. </table>
50. </body>
51. </html>

Za početak treba odmah naglasiti da smo ovde koristili ODBC standard za konekciju na Access-ovu bazu podataka. Ovaj standard polako odlazi u zaborav, ali je dobro upoznati se sa njim, saznati njegove i vrline i mane. Sada ćemo detaljno proći kroz ovaj kood, jer će nam on poslužiti za sledeći primer (u narednom broju Omegamagazina) konekcije na Access-ovu bazu pomoću OLE DB standarda.


Čemu ovo služi...


Već na prvi pogled je jasno da je ovaj kod podeljen u dve celine. U prvoj preovladava ASP-kod i tu se definišu promenljive bitne za "izvlačenje" podataka iz baze. Na ovaj deo ćemo posebno obratiti pažnju. U drugoj celini se nalazi kombinacija ASP-a (realizovanog preko jezika VBScript) i HTML-a. Ovde nismo previše računa vodili o samom dizajnu prikazivanja podataka, jer smo želeli da prikažemo sve podatke iz tabele Customers, baš tako kako oni izgledaju u samoj tabeli.
U prvoj liniji koda definišemo tekstualnu promenljivu koja naznačava koji standard koristimo za pristup podacima i direktnu, fizičku putanju do fajla gde se nalaze podaci. Druge deo ove promenljive je mogao imati i uopšteniji oblik: DBQ=" & Server.MapPath("northwind"), međutim opredelili smo se za ovaj, jer je za nijansu brži zbog toga što se ne mora pozivati metoda MapPath ASP-objekta Server, koji bi nam odredio fizičku putanju do fajla, koju i ovako znamo.
ADO-objekat Connection nam je potreban za ostvarivanje veze sa podacima, pa da bismo ga jednostavnije koristili u drugom redu smo kreirali ADO-objekat pod imenom objConn. Metoda Open ovog objekta u trećem redu koristi podatke sadržane u promenljivoj strProvider.
ADO-objekat Recordset, kreiran u četvrtom redu, će sadržati skup podataka "izvučenih" iz baze, ali da bi on bio adekvatno popunjen, mora se zadati komanda bazi sa kojom smo uspostavili konekciju. Ta komanda se zadaje preko ADO-objekta Command, pa se u petom i šestom redu kreira odgovarajuća promenljiva koja se bazi prosleđuje preko kreirane konekcije objConn.
Kao što možemo videti u sedmom redu, tekst komande je običan(?) sql-upit nad bazom preko kojeg uzimamo sve podatke iz tabele Customers. Ti podaci se u osmom redu ubacuju u skup zapisa (RecordSet).
Drugi deo stranice uglavnom sadrži HTML- i VBScript-kood, koje ovde nećemo tumačiti. Valja primetiti da se na odgovarajućim mestima pozivaju ASP-metode rs.Fields.Count, rs.Fields.Item.Value i rs.Fields.Item.Name; prva vraća ukupan broj kolona (polja) tabele sadržane u skupu zapisa, druga vrednost u konkretnoj ćeliji tabele, te treća i treća ime polja u kojoj je ta ćelija.

 

VRH STRANE

(c) 2003 OMEGA - sva prava zadržana