(3) VB i Baze Podataka

download (3) VB i Baze Podataka

of 14

Transcript of (3) VB i Baze Podataka

  • 7/22/2019 (3) VB i Baze Podataka

    1/14

    www.elitesecurity.orgVB & ASP FORUM

    3. Visual Basic 6 kod za rad sa bazom - ADO 2.5

    ADO OBJEKTNI MODEL KRATAK OPIS

    Connectionobjekat je top level objekat uADO hijerarhiji. Ovaj objekat predstavljavezu ka data sourceu i preko njega ide svakomunikacija izmeu VB aplikacije i datasourcea. Vaniji metodi su: Open, Close,BeginTrans, CommitTrans i RollbackTrans.Command objekat predstavlja SQL izraz,stored proceduru ili neku drugu akciju nadpodacima. Parameters kolekcija prihvataulazne i izlazne parametre. Obino sekoristi za parametrizovane kverije (query) iizvravanje stored procedura koje vraajuneki parametar.Recordsetobjekat predstavlja skup zapisakoji su rezultat nekog upita i kursor unutarnjih. Sadri kolekciju Fields koja sadriField objekte. Field objekat predstavljajednu kolonu podataka unutar Recordseta.

    Error objekat sadri informacije o grecikoju vraa OLE DB provider. Jedan SQLizraz moe izazvati vie greaka, pa Errorskolekcija moe sadrati vie Errorobjekatakoji su svi posledica istog SQL izraza.

    strana 1/14 Korak po korak: VB, Access, SQL i ADO www.elitesecurity.org

    http://www.elitesecurity.org/http://www.elitesecurity.org/
  • 7/22/2019 (3) VB i Baze Podataka

    2/14

    3.1. Povezivanje sa bazom podataka - Connection String

    Connection String predstavlja informaciju koja se koristi za uspostavljanjeveze sa data sourceom (izvorom podataka, bazom). Ovaj property sadri niz

    parova argument = vrednost, odvojenih znakom ;.

    Kako izgleda i kako se formira Connection String? Za ovo e posluiti jedanprimer koji je degojspar puta postovao na VB&ASP forumu :).

    Kreirajte fajl (iz Notepada, ili kako veko voli) koji se zove, na primer,cs.udl (bitno je da ima ekstenziju UDL).

    Otvorite udl fajl iz Windows Explorera (double click, ili Open, ili ...) Trebalo bi da vam se pojavi jedan prozor kao na slici 3.1.1

    slika 3.1.1 slika 3.1.2

    Vratite se na prvi jeziak (Provider) slika 3.1.2, i odaberiteProvidera. Za rad sa Accessom 2000 to e biti Microsoft Jet 4.0OLE DB Provider

    Kliknite na na Next Na Connection jeziku odaberite putanju do baze (UserName emo

    ostaviti Admin, a password e biti prazan (slika 3.1.3) Sada smo sve podesili, i trebalo bi proveriti da li je sve kako treba.

    Kliknite na dugme test Connection.

    Ukoliko je sve u redu, pojavi

    e se poruka Test connectionsuceeded(slika 3.1.4)

    strana 2/14 Korak po korak: VB, Access, SQL i ADO www.elitesecurity.org

  • 7/22/2019 (3) VB i Baze Podataka

    3/14

    slika 3.1.3 slika 3.1.4

    Kliknite na OK dugme Otvorite fajl u Notepadu Fajl bi trebao da izgleda ovako nekako (samo e se path do baze

    razlikovati):

    [oledb]; Everything after this line is an OLE DB initstringProvider=Microsoft.Jet.OLEDB.4.0;DataSource=D:\Projects\ES\ADO StepByStep\Data\db1.mdb;PersistSecurity Info=False

    Na Connection Stringizgleda ovako:

    Provider=Microsoft.Jet.OLEDB.4.0;DataSource=D:\Projects\ES\ADO StepByStep\Data\db1.mdb;PersistSecurity Info=False

    OK. Sada imamo Connection String. Vreme je da ga iskoristimo.

    strana 3/14 Korak po korak: VB, Access, SQL i ADO www.elitesecurity.org

  • 7/22/2019 (3) VB i Baze Podataka

    4/14

    3.2. Otvaranje konekcije, preuzimanje podataka, zatvaranjekonekcije

    Uz ovu dokumentaciju ide i jedna VB aplikacija gde je sav kod za ono o emuse ovde govori. Glavna forma sadri menije i dugmie za navigaciju krozpoglavlja ovog dokumenta.

    Za poetak da objasnimo kako se formira ConnectionString unutar aplikacije.U basMain modulu postoje tri konstante koje se koriste pri formiranjuConnection Stringa:

    '-- connection string constantsPrivate Const mcstrDSNStart As String ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="Private Const mcstrDSNEnd As String = ";Persist Security

    Info=False"Private Const mcstrDbPath As String = "\Data\db1.mdb"

    Prve dve su fiksne, a trea (mcstrDbPath) predstavlja relativnu putanju dobaze u odnosu na App.Path. ConnectionString se formira prilikom startovanjasample aplikacije u Sub Main(basMain modul)

    Global gConnectionString As StringGlobal gFSO As Scripting.FileSystemObject

    ...

    gConnectionString = mcstrDSNStart & _gFSO.BuildPath(App.Path, mcstrDbPath) & _mcstrDSNEnd

    Na ovaj nain smo dobili Connection String i koristiemo ga za sve daljeprimere. Kod za ovaj primer se nalazi u frmChapter32 formi.

    Kako ovo radi? Na formi treba selektovati iz koje tabele/kverija

    e seselektovati podaci i kliknuti na dugme. Nakon toga e se pojaviti podaci u textboxu sa desne strane.

    1. za ovo nam trebaju sledee promenljive

    Private m_TableName As String...Dim adoConn As ADODB.Connection ' konekcijaDim adoRS As ADODB.Recordset ' rekordset sa podacimaDim adoFld As ADODB.Field ' polje iz rekordsetaDim sQry As String ' SQL upit

    strana 4/14 Korak po korak: VB, Access, SQL i ADO www.elitesecurity.org

  • 7/22/2019 (3) VB i Baze Podataka

    5/14

    Promenljiva m_TableName predstavlja ime tabele/kverija odakle e sepreuzimati podaci. Ova promenljiva se aurira im korisnik klikne na nazivtabele/kverija:

    Private Sub optTable_Click(Index As Integer)' u captionu se nalazi ime tabele/kverijam_TableName = optTable(Index).Caption

    End Sub

    2. kreiranje i otvaranje konekcije

    '-- kreiraj i otvori konekcijuSet adoConn = New ADODB.ConnectionadoConn.Open gConnectionString

    Konekcija se otvara metodom OpenConnection objekta, a kao parametar seprosleuje Connection String. Ako se Connection String ne prosledi kaoparametar, onda se uzima vrednost ConnectionString propertya. Znaikonekciju smo mogli i ovako da otvorimo:

    Set adoConn = New ADODB.ConnectionadoConn.ConnectionString = gConnectionString

    adoConn.Open

    Pored Connection Stringa, Open metod prihvata i parametre UserID,Password i Options. UserID i Password se koriste da bi se prosledilainformacija o korisniku koji se kai na bazu ukoliko je to potrebno (u ovomsluaju nije). Options parametar definie nain izvravanja Open metoda sinhrono (default) ili asinhrono. Ako se prosledi adAsyncConnect ondasmo konektovani na bazu kada Connection objekat digne eventConnectComplete. U ovom sluaju bi Connection objekat trebalo deklarisatina nivou forme/klase i koristiti WithEvents u deklaraciji.

    3. formiranje SQL upita za selekciju podataka

    Public Const pcstrTableName As String = ""Public Const pcstrTableQuery As String = "SELECT * FROM " &pcstrTableName

    Ove konstante su definisane u basMain. Znai pcstrTableQuery izgledaovako: SELECT * FROM . Da bi selektovali podatke iz neke

    tabele/kverija, potrebno je "" odnosno konstantupcstrTableName zameniti nazivom eljene tabele/kverija:

    strana 5/14 Korak po korak: VB, Access, SQL i ADO www.elitesecurity.org

  • 7/22/2019 (3) VB i Baze Podataka

    6/14

    '-- formiraj upitsQry = Replace(pcstrTableQuery, pcstrTableName, m_TableName)

    4. kreiranje i otvaranje recordseta

    '-- kreiraj i otvori rekordsetSet adoRS = New ADODB.RecordsetadoRS.Open sQry, adoConn

    Recordset objekat se otvara metodom Open. Prvi parametar je Source i u

    ovom slu

    aju je SQL upit. Sourcemoe biti Command objekat, poziv storedprocedure, SQL upit, ime tabele ili naziv fajla koji sadri persisted recordset(takav fajl se moe dobiti pozivom adoRS.Save). Drugi parametar je aktivnakonekcija. To moe biti Connection objekat ili string koji predstavljaConnectionString. Ostali parametri nisu navedeni pa se koriste defaultvrednosti. Ostali parametri su CursorType, LockType, Options. Ovi parametrizavise od toga ta emo raditi sa recordsetom. Za sada se neu baviti njima(u MSDNu ima sve lepo objanjeno, a i mislim da e se kroz primere videtikad se koji koristi), a moda se kasnije vratim na ovo.

    Recordset smo u ovom sluaju mogli otvoriti i ovako:

    adoRS.Open m_TableName, adoConn, , , adCmdTable

    ili ovako:

    adoRS.CursorType = adOpenForwardOnlyadoRS.LockType = adLockReadOnlyadoRS.Open m_TableName, adoConn, , , adCmdTable

    Znai CursorType i LockType parametri se mogu proslediti metodu Open, amogu se setovati propertyji Recordset objekta.

    O prolasku kroz recordset e biti rei u poglavlju 3.4.

    strana 6/14 Korak po korak: VB, Access, SQL i ADO www.elitesecurity.org

  • 7/22/2019 (3) VB i Baze Podataka

    7/14

    3.3. Prikazivanje podataka u DataGrid kontroli

    Kod ovog poglavlja se nalazi u formi frmChapter33. Ova forma sadri jednugrupu option buttona koja slui za biranje tabele iz koje e se prikazivati

    podaci, DataGrid kontrolu u kojoj e se prikazati podaci i comand button kojiotvara konekciju, preuzima podatke i prikazuje ih u gridu. Skoro sav kod jeobjanjen u prethodnom poglavlju, a najbitniji deo je

    '-- prikazi zapiseSet dgrData.DataSource = adoRS

    DataSource property moe bitiADO Recordset, kao i klasa ili kontrola koja jedefinisana kao DataSource (DataSourceBehavior property =

    vbDataSource).

    3.4. Prolazak kroz recordset runo

    Kod ovog poglavlja se nalazi u formi frmChapter34.

    Ova forma sadri grupu textboxova ukojima e biti prikazani podaci iz tabeletbl_Korisnici, dugmie za navigaciju idugme Start (otvaranje konekcije irekordseta i preuzimanje podataka).

    Textboxovi u kojima se prikazujupodaci imaju podeen Tag property udesign timeu na naziv polja izrecordseta ija e se vrednost prikazatiu tom textboxu.

    Metodi Recordset objekta koji su bitniza ovo poglavlje su: Move, MoveFirst,

    MovePrevious, MoveNexti MoveLast.Propertyji Recordset objekta koji sunam ovde bitni su BOF, EOF iAbsolutePosition.

    BOF i EOF su tipa Boolean. BOF je True ako je pozicija tekueg zapisa uRecordset objektu pre prvog zapisa (indikator poetka). EOF je True ako jepozicija tekueg zapisa u Recordset objektu posle zadnjeg zapisa (indikatorkraja). EOF i BOFsu istovremeno True ako ne postoji tekui zapis (currentrecord) tj. ako Recordset ne sadri nijedan zapis. EOF i BOF slue kao

    granice za kretanje po Recordset objektu.

    strana 7/14 Korak po korak: VB, Access, SQL i ADO www.elitesecurity.org

  • 7/22/2019 (3) VB i Baze Podataka

    8/14

    AbsolutePosition property omoguava itanje/setovanje trenutne pozicijeunutar Recordset objekta. Ovaj property vraa broj u intervalu od 1 doukupnog broja zapisa u Recordsetu, ili jednu od sledee tri konstante:

    adPosUnknown ako je Recordset prazan, ili ako provider nepodrava property

    adPosBOF ako je BOFproperty True adPosEOF ako je EOFTrue

    MoveFirst, MoveLast, MovePreviousi MoveNextmetode neu pojanjavati jersu nazivi metoda deskriptivni.

    Movemetod omoguava pomeranje za odreeni broj zapisa napred ili nazadu odnosu na trenutnu poziciju ili u odnosu na bookmark (Bookmarke pogledatiu MSDNu :)).

    recordset.Move numrecords [,start]

    Numrecords predstavlja broj zapisa za koliko treba izvrsiti pomeranje. Moyebiti pozitivan ili negativan i od toga zavisi smer pomeranja. startparametarpredstavlja zapis u odnosu na koga se vri pomeranje. Ako se parametar startizostavi, podrazumeva se trenutna pozicija.

    Kad se forma otvori, treba kliknuti na dugme Start. Tada se otvara konekcija,otvara se recordset i preuzimaju podaci. Zatim se proverava da li ima zapisa urecordsetu:

    If Not (m_adoRS.EOF And m_adoRS.BOF) Then

    Ako recordset nije prazan, podeavaju se parametri UpDown kontrole, koja ese koristiti za demonstraciju Movemetoda:

    udPosition.Min = 1udPosition.Max = m_adoRS.RecordCount

    Na kraju se prikazuje trenutni zapis i trenutna pozicija (AbsolutePositionproperty) u recordsetu:

    Call m_DisplayRecordtxtPos.Text = m_adoRS.AbsolutePosition

    m_DisplayRecord prikazuje trenutni zapis na formi. Zapis se prikazuje unizu TextBoxova kojima je u design timeu u Tagproperty upisano ime polja

    koje e se prikazivati u tom textboxu. Kroz niz textboxova se prolazi For Each... Nextpetljom i prikazuju se vrednosti iz recordseta.

    strana 8/14 Korak po korak: VB, Access, SQL i ADO www.elitesecurity.org

  • 7/22/2019 (3) VB i Baze Podataka

    9/14

    For Each oTextBox In txtFieldIf Not IsNull(m_adoRS.Fields(oTextBox.Tag).Value) Then

    oTextBox.Text = m_adoRS.Fields(oTextBox.Tag).ValueElse

    oTextBox.Text = ""End If

    Next

    Ovo je moglo i drugaije da se implementira (imate u kodu i kako), ali ja radimovako :).

    E, stigosmo do pomeranja. Deo koda za kretanje kroz RS nalazi se ucmdNavigation_Click

    Select Case IndexCase 0 ' move first

    m_adoRS.MoveFirstCase 1 ' move prev

    If Not m_adoRS.BOF Then m_adoRS.MovePreviousIf m_adoRS.BOF And m_adoRS.RecordCount > 0 Then

    Beep'moved off the end so go backm_adoRS.MoveFirst

    End If

    Case 2 ' move nextIf Not m_adoRS.EOF Then m_adoRS.MoveNextIf m_adoRS.EOF And m_adoRS.RecordCount > 0 Then

    Beep'moved off the end so go backm_adoRS.MoveLast

    End IfCase 3 ' move last

    m_adoRS.MoveLastEnd Select

    Prilikom pomeranja na sledei ili prethodni zapis, potrebno je proveriti da lismo na kraju (EOF), odnosno poetku (BOF).

    U udPosition_Change moe se videti kako se koristi Move metod.UpDown kontrola je napunjena brojevima od 1 do broja zapisa. Kad UpDownkontrola ima vrednost n, treba se pomeriti na n-ti zapis:

    m_adoRS.Move udPosition.Value - 1, adBookmarkFirst

    Gore navedeni kod pomera poziciju u recordsetu za n-1 u odnosu na prvizapis. Ovo se moglo izvesti i ovako:

    strana 9/14 Korak po korak: VB, Access, SQL i ADO www.elitesecurity.org

  • 7/22/2019 (3) VB i Baze Podataka

    10/14

    m_adoRS.AbsolutePosition = udPosition.Value

    3.5. Izmena podataka (UPDATE, DELETE, INSERT)

    Podaci se mogu menjati izvravanjem SQL izraza (UPDATE, DELETE,INSERT) ili u recordsetu metodama Delete, AddNew, Update i UpdateBatch.Poto se degojs bavio privm nainom u drugom poglavlju ovog tutoriala, otome nee biti rei ovde.

    Kod koji se odnosi na ovo poglavlje nalazi se u formi frmChapter35. Ovaforma lii na formu iz prethodnog poglavlja, s tim to ovde postoje dugmii za

    dodavanje novog zapisa, brisanje zapisa, izmenu podataka, snimanje izmena,odustajanje od izmena i osveavanje podataka. Vei deo koda je isti kao uformi frmChapter34, pa e ovde biti objanjen samo deo koji se odnosi naizmenu podataka.

    3.5.1. DODAVANJE NOVOG ZAPISA (ADD)

    '-- clear fieldsCall m_ClearFields(txtField)'-- otkljucaj kontrole

    Call m_LockControls(txtField, False)With m_adoRS

    If Not (.BOF And .EOF) Then'-- zapamti trenutnu poziciju da bi se vratili'-- ako korisnik odustane od novog zapisam_Bookmark = .Bookmark

    End If.AddNewm_Mode = mdAdd

    End With'-- prikazi dugmicem_ShowButtons cmdAction, "001010"m_EnableButtons cmdNavigation, "0000"

    Prvo treba obrisati vrednosti iz textboxova. Da su kontrole bile boundovaneovo bi se automatski desilo. Ako hoete da radite sa boundovanimkontrolama, VB vam nudi VB Data Form Wizard prilikom dodavanja noveforme, tako da kad odgovorite na sva pitanja wizarda dobijate gotovu formukoja ima slinu funkcionalnost kao ova naa, samo to su kontroleboundovane. Zatim, treba otkljuati polja da bi se u njih moglo neto upisati.Sledei korak je pamenje trenutne pozicije u reordsetu, da bi mogli da sevratimo na tu poziciju ako se odustane od dodavanja novog zapisa. I sad ononajvanije AddNew. Ovaj metod kreira novi zapis u recordsetu i postavlja ga

    za tekui. Nakon ovoga treba disableovati dugmie za navigaciju, i prikazatisamo Save i Cancel dugmie. Sada treba uneti vrednosti za novi zapis,

    strana 10/14 Korak po korak: VB, Access, SQL i ADO www.elitesecurity.org

  • 7/22/2019 (3) VB i Baze Podataka

    11/14

    kliknuti na Save da bi se zapis dodao u bazu, ili Cancel da bi se odustalo oddodavanja novog zapisa.

    VANO: Ne vri se provera da li su podaci koji se unose validni (tip,duina,...). Ukoliko se unese neispravan podataka baza e vratiti greku.

    3.5.2. IZMENA TRENUTNOG ZAPISA (EDIT)

    '-- otkljucaj kontroleCall m_LockControls(txtField, False)m_Mode = mdEdit'-- prikazi dugmicem_ShowButtons cmdAction, "001010"m_EnableButtons cmdNavigation, "0000"

    Prvo se otkljuavaju polja da bi se mogle menjati vrednosti, prikazuju seodgovarajui dugmii i sad treba promeniti podatke i zapamtiti ih (Save) iliponititi izmene (Cancel).

    3.5.3. SNIMANJE PROMENA (SAVE)

    '-- prepisi podatke iz textboxova u RSCall m_UpdateData'-- updatem_adoRS.UpdateBatch adAffectAll

    '-- pozicioniraj se na novi/izmenjeni zapisIf m_Mode = mdAdd Then

    m_adoRS.MoveLast'-- new key is avaliable at this pointtxtField(0).Text = m_adoRS("UserID")

    End Ifm_Mode = mdNone'-- prikazi dugmicem_ShowButtons cmdAction, "110101"m_EnableButtons cmdNavigation, "1111"

    Za poetak treba prepisati podatke iz textboxova u recordset (da su kontroleboundovane ovo se ne bi radilo). Zatim, ide poziv metoda UpdateBatch.Zavisno od parametra, ovaj metod e updateovati trenutni zapis(adAffectCurrent) ili sve zapise (adAffectAll). Ukoliko je dodat novi zapis,treba se pozicinirati na njega (dodaje se na kraj) i prikazati vrednost kljua.Poto je klju Autonumber, njegova vrednost se ne unosi, ve baza vodirauna o tome. Nakon poziva metoda UpdateBatch informacija o IDu novogzapisa je dostupna. Na kraju treba prikazati dugmie. Kad smo ve ovde,dugmii su nizovi kontrola i enableuju se i prikazuju metodamam_EnableButtons im_ShowButtons.Ove metode prihvataju stringove nula i

    jednica, pa ako je string npr. 101 to znai da e dugme sa indexom 0 biti

    strana 11/14 Korak po korak: VB, Access, SQL i ADO www.elitesecurity.org

  • 7/22/2019 (3) VB i Baze Podataka

    12/14

    enableovano, dugme sa indexom 1 e biti disbleovano, a dugme sa indexom2 e biti enableovano, ...

    3.5.4. BRISANJE ZAPISA (DELETE)

    With m_adoRS'-- brisi zapis.Delete'-- pomeri se na sledeci zapis.MoveNextIf .EOF Then .MoveLast

    End With'-- updatem_adoRS.UpdateBatch adAffectAll

    Metod Delete slui za brisanje zapisa. Poto koristimo LockType=adLockBatchOptimistic, zapis e nakon poziva Deletemetoda biti markiran zabrisanje (nema brisanja iz baze), a tek nakon poziva UpdateBatch bieobrisan iz baze. Za vie informacija pogledati LockType property u MSDNu.

    Brisanje zapisa se moglo obaviti izvravanjem sledeeg SQL izraza:

    DELETE FROM tbl_Korisnici WHERE UserID=IDUsera

    SQL izraz se izvrava pozivanjem Execute metode Connection objekta(pogledati u MSDNu)

    Prilikom brisanja korisnika za kojeg postoje zapisi u tabeli tbl_Korisnici etedobiti greku. Ovo se obino reava ekiranjem opcije Cascade DeleteRelated Records na propertyjima veze izmedju dve tabele u samoj bazi.Otvorite bazu, pa Tools/Realtionships, selektujte vezu izmedju dve tabele,desni klik, pa Edit Relationship. Drugi nain je da se pre brisanja korisnika,izvri brisanje svih njegovih textova iz druge tabele.

    m_adoConn.Execute DELETE FROM tbl_Tekstovi WHERE UserID=IDUsera

    3.5.5. ODUSTAJANJE OD PROMENA (CANCEL)

    CancelUpdatemetod ponitava promene koje su izvrene na tekuem zapisuili na novom zapisu koji je dodat metodom AddNew. Ukoliko je ponitenododavanje novog zapisa, potrebno je vratiti se na onaj zapis na kojem jekliknuto na Add.

    strana 12/14 Korak po korak: VB, Access, SQL i ADO www.elitesecurity.org

  • 7/22/2019 (3) VB i Baze Podataka

    13/14

    '-- cancel updateCall m_LockControls(txtField, True)m_adoRS.CancelUpdate'-- pomeri se na zadnju poziciju ako je bilo AddNewIf m_Bookmark > 0 Then

    m_adoRS.Bookmark = m_Bookmark

    Elsem_adoRS.MoveFirst

    End Ifm_Mode = mdNone'-- prikazi dugmicem_ShowButtons cmdAction, "110101"m_EnableButtons cmdNavigation, "1111"

    3.5.6. OSVEAVANJE PODATKA (REFRESH)

    m_adoRS.Requery

    Requerymetod osveava podatke ponovnim izvravanjem upita ije podatkerecordset sadri.

    3.6. Slanje podataka nazad u bazu (disconnected recordset)

    Disconnected recordset je rekordset koji je popunjen podacima iz datasourceai nije nakaen na data source (disconnected), tj. ne postoji konekcijaka data sourceu. Sve promene koje se vre su lokalne (ne vide se u bazi).Promene e se reflektovati na bazu ako se recordset objekat rekonektuje iako se pozove Updateili UpdateBatchmetod.

    VB kod koji se odnosi na ovo poglavlje nalazi se u formi frmChapter36 i slianje kodu iz forme frmChapter34. U emu je razlika?

    Kada se preuzmu podaci, recordsetse diskonektuje i konekcija se zatvara:

    '-- diskonektuj RSSet m_adoRS.ActiveConnection = Nothing

    '-- zatvori konekcijum_adoConn.CloseSet m_adoConn = Nothing

    Poto polja nisu boundovana, pre pomeranja sa tekueg zapisa potrebno jeupamtiti promene. To se radi u funkciji m_UpdateData.

    strana 13/14 Korak po korak: VB, Access, SQL i ADO www.elitesecurity.org

  • 7/22/2019 (3) VB i Baze Podataka

    14/14

    '--prepisi podatke iz text boxova u RSFor Each oTextBox In txtField' updateuj sve osim UserID (kljuc autonumber)If oTextBox.Tag "UserID" Thenm_adoRS.Fields(oTextBox.Tag).Value = oTextBox.Text

    End IfNext

    Ova funkcija ima opcioni parametar tipa Boolean koji govori da li trebarekonektovati recordset. Ova funkcija se poziva sa parametrom True (tj.recordset se rekonektuje) samo kad se klikine na dugme Vrati podatke ubazu. Znai, kreira se i otvara konekcija, a recordset se rekonektuje:

    If bReconnectRS Then'-- kreiraj i otvori konekcijuSet m_adoConn = New ADODB.Connectionm_adoConn.Open gConnectionString

    '-- "rekonektuj" RSSet m_adoRS.ActiveConnection = m_adoConn

    End If

    Na kraju treba pozvati UpdateBatch metod:

    '--updateuj podatkeIf bReconnectRS Then m_adoRS.UpdateBatch

    Nakon ovoga, promene koje su vrene nad podacima videe se i u bazi.

    Eto toliko. Ako naidjete na bugove, prijavite ih i sreno programiranje

    Pozdrav,eljko Mladenovi, aka mladenovicz

    strana 14/14 Korak po korak: VB, Access, SQL i ADO www.elitesecurity.org