![]() ![]() ![]() ![]() ![]() |
![]() |
|
Formßtovanie ADODB.Recordset do HTML tabu╛kySformßtovanie v²sledkov databßzovej po₧iadavky (query) do podoby HTML tabu╛ky je najΦastejÜφm prφkladom vo vÜetk²ch ASP/ADO prφruΦkßch. My sa pok·sime prφklad trocha rozÜφri¥ a ukßza¥ ako si uÜetri¥ kopec duplicitnej roboty. Majme Ütandardn· databßzku pubs, dodßvan· ako sampel s MS SQL SQL 6.5. Z nej si vyberieme tabu╛ku authors s nasledovnou Ütrukt·rou: "ètandard²" sp⌠sob v²pisu vÜetk²ch zßznamov by bol asi nasledovn² (select * from authors): do while not rs.EOF 'iteracia po riadkoch Response.Write rs("au_id") Response.Write rs("au_lname") Response.Write rs("au_fname") ..... next rs.moveNext Response.Write "" loop Povedzme ₧e ste pou₧ili popφsan² k≤d. Ak by ste teraz chceli zmeni¥ query museli by ste zmeni¥ aj nßzvy a poΦet vypisovan²ch stσpcov v k≤de. Naprφklad ak chcete len au_lname, musφte vyhodi¥ dva riadky : Response.Write rs("au_id") Response.Write rs("au_fname") Pok·sme sa vybra¥ z naÜej tabu╛ky vÜetky zßznamy a
zobrazi¥ ich ako HTML tabu╛ku, trocha vÜeobecnejÜie: 'priklad1 sqlCommandString="select * from authors" ' Connection a Recordset objekty Set dc=Server.CreateObject("ADODB.Connection") Set rs=Server.CreateObject("ADODB.Recordset") ' vytvorenie spojenia a otvorenie recordset objektu dc.Open "DSN=pubs;UID=sa;PWD=" rs.Open sqlCommandString,dc,1,3 ' ak neexistuje ziaden zaznam v tabulke if rs.EOF and rs.BOF Then ' vypis chybovu hlasku Response.Write "" ' ak existuje nejaky zaznam else Response.Write "
" end if V²sledok vyzerß nasledovne:
Zme≥me teraz iba prv² riadok prφkladu, naÜu databßzov· query: sqlCommandString="select au_lname,phone from authors" V²sledok, bez akΘhoko╛vek dopisovania alebo vymazßvania riadkov bude tak²to: K╛·Φov²m prvkom v naÜom prφklade je collection Recordset.Fields
. Tßto collection reprezentuje stσpce v tabu╛ke. Ka₧d² stσpec, prvok tejto
collection, je objektom typu Field. Tento
objekt obsahuje podrobnΘ informßcie o mene, ve╛kosti a dßtovom type stσpca. My sme v
prφklade vyu₧ili iba meno (field.Name).Pomocou takto "dynamicky" zφskan²ch
mien stσpcov sme vyrobili hlaviΦku (pozri k≤d). No a na zßver eÜte prφklad ako premenova¥ "ÜkaredΘ nßzvy" z datovΘho modelu na peknΘ nßzvy v HTML strßnke. StaΦφ ak zmenφte naÜu query takto: sqlCommandString="select 'Priezvisko'=au_lname,'Telef≤n'=phone from authors" a mßte v HTML strßnke miesto au_lname napφsanΘ Priezvisko a miest phone, Telef≤n. Samozrejme, ₧e query m⌠₧ete zmeni¥ na ak·ko╛vek in· tabu╛ku, prφpadne vymeni¥ za volanie stored proced·ry alebo view. Nabud·ce: sa mo₧no pozrieme ako pomocou Fileds collection vygenerova¥ dynamicky formulßr na pridßvanie a editßciu ·dajov v SQL tabu╛kßch. ╚lßnek nßm poslal marcus@gratex.sk
Michal Blßha (SPRINX)
|