Prije početka rada sa ADO konekcijom potrebno je u Project\referencesuključiti Microsoft activeX data objects 2.5 library. Data grid kontrola, za prikaz podataka kao u tabeli, se uključi u Components\controls i uključiti Microsoft Data Grid Control
Deklaracija konekcije
U proceduri General declarations deklarisati sljedeće:
Dim db As New ADODB.Connection
Dim WithEvents rs As ADODB.Recordset
Otvaranje konekcija
U Form load proceduri upisati sljedeći kôd:
'Otvaranje konekcije
Set rs = New ADODB.Recordset
db.CursorLocation = adUseClient
db.Open "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & CurDir & "\baza.mdb"
rs.Open "SELECT uplate.rbu, uplate.broju, uplate.guplate, uplate.datumu, uplate.uplaceno, uplate.svrhau, uplate.iznosu FROM uplate;", db, adOpenStatic, adLockOptimistic
Otvaranje konekcije na bazu sa password-om
Ako je access baza zaštićena password-om onda joj se pristupa na sljedeći način:
'Otvaranje konekcije za učitavanje prevoda ako baza ima password
Set rsJezik = New ADODB.Recordset
dbJezik.CursorLocation = adUseClient
dbJezik.Open "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & CurDir & "\dbOrders.mdb;Jet OLEDB:Database Password=Amica"
rsJezik.Open "SELECT * FROM tbSetup;", dbJezik, adOpenStatic, adLockOptimistic
Linkovanje tabele
Ako je potrebno vršiti linkovanje tabela kroz kôd onda koristiti sljedeći primjer:
Dim j As Long
Dim dbMaster As DAO.Database
'Linkovanje tabela
Set dbMaster = DAO.OpenDatabase(App.path & "\komercijala.mdb")
For j = 0 To dbMaster.TableDefs.Count - 1
If j > dbMaster.TableDefs.Count - 1 Then Exit For
If UCase(Left(dbMaster.TableDefs(j).Connect, 9)) = ";DATABASE" Then
dbMaster.TableDefs.Delete (dbMaster.TableDefs(j).Name)
j = j - 1
End If
Next j
Set dbMaster = Nothing
If Err.Number <> 0 Then Err.clear
ProvjeraBaza "GLAVNA", frmMain.path2
rs.Properties("Unique Table").Value = "ImeTabele"
Primjer query-a sa WHERE uslovom
Ako je uslov fiksan string onda se query kreira sa znakom jednakosti i to pod jednostrukim apostrofima:
SELECT ZDKpolaznici.ime_i_prezime AS Expr1 FROM ZDKpolaznici WHERE (((ZDKpolaznici.funkcija)='direktor'));
U slučaju da je uslov varijabla string tipa onda je sintaksa kao što slijedi:
rsdd.Open "SELECT diplome.tip, diplome.ime, diplome.prezime FROM diplome WHERE (((diplome.tip)='" & tip & "')) AND ((diplome.ime)='" & frmpolaznici.imep & "') AND ((diplome.prezime)='" & frmpolaznici.prezimep & "') ;", dbdiplome, adOpenStatic, adLockOptimistic
Iza znaka jednakosti za postavljanje uslova, prvo dolazi apostrof a zatim navodnici. Isto tako, na kraju uslova, iza navodnika ide apostrof.
Ako je uslov datum koristi se znak # kao u primjeru:
'Učitavanje samo za određenu šifru i samo između dva datuma
oddatuma = Format(Month(frmprint.oddatuma), "00") & "/" &
Format (Day(frmprint.oddatuma), "00") & "/" & Year(frmprint.oddatuma)
dodatuma = Format(Month(frmprint.dodatuma), "00") & "/" &
Format(Day(frmprint.dodatuma), "00") & "/" & Year(frmprint.dodatuma)
query = "SELECT tabela.stavka1, tabela.stavka2, tabela.stavka3, tabela.datum, " & _
"tabela.stavka3 " & _
"FROM tabela2 INNER JOIN tabela ON tabela2.stavka1 = tabela.stavka1 WHERE izlaz.sifraa='" & sifraartikla & "' AND tabela.datum>= #" & oddatuma & "# AND tabela.datum <= #" & dodatuma & "#" rs.Open query, db, adOpenStatic, adLockOptimistic
Varijable oddatuma i dodatuma moraju biti deklarisane kao string. Ovaj tip query-a (sa datumima) radi samo ako su datumi predstavljeni u US formatu (mm/dd/yyyy). Zbog toga prije kreiranja query-a ide Format.
Ako je potrebno učitati maksimalni element iz neke kolone, ali pod uslovom da se traži samo u vrstama koje zadovoljavaju određeni uslov onda se koristi sintaksa kao u primjeru:
rsbroj.Open "SELECT Max(diplome.rbroj) AS MaxOfrbroj FROM diplome WHERE (((diplome.godina)=" & godina & ") AND ((diplome.tip)='" & tip & "'));", dbdiplome, adOpenStatic, adLockOptimistic
'Učitavanje samo svih stavki jedne kolone ali bez ponavljanja iste vrijednosti
rsstampa.Open "SELECTDISTINCT komercijala.skladiste FROM komercijala;",dbstampa, adOpenStatic, adLockOptimistic
Čitanje podataka iz baze
If rs.RecordCount = 0 Then Exit Sub
txtskladiste.text = rs.Fields("skladiste").Value
Ako je polje koje se čita iz baze prazno, prilikom upisa u neku kontrolu nastaje greška. VB pokazuje da je vrijednost za to polje rekordseta = Null. Da se spriječi nastajanje greške vršiti sljedeću provjeru:
Na ovom primjeru je učitavanje putanje do slike i postavljanje te slike u picture kontrolu.
If rspodaci.Fields("slika").Value <> Empty Then
'Učitavanje putanje do slike
picslika.Picture = LoadPicture(rspodaci.Fields("slika").Value)
Else
'Učitavanje slike koja označava da u bazi podataka nije zabilježena putanja do prave slike
picslika.Picture = LoadPicture(CurDir & "\Slike\Slika.jpg")
End If
Ako prilikom primjene prethodne IF naredbe i dalje nastaje greška, onda koristiti sljedeći kod:
If IsNull (rspodaci.Fields("slika").Value) = False Then
'Učitavanje putanje do slike
picslika.Picture = LoadPicture(rspodaci.Fields("slika").Value)
Else
'Učitavanje slike koja označava da u bazi podataka nije zabilježena putanja do prave slike
picslika.Picture = LoadPicture(CurDir & "\Slike\Slika.jpg")
End If
Dodavanje novog zapisa u bazu
Da bi u bazu bi dodan novi zapis potrebno je pokrenuti AddNew proceduru. Na primjeru je i upotreba With strukture za skraćeno pisanje komandi:
With rs
.AddNew
.Fields("sifra").Value = txtSifra.text
.Update
End With
Izmjena zapisa u bazi
Izmjena zapisa se vrši dodjelom vrijednosti stavki rekordseta i pozivom procedure update:
rs.fields("sifra").value= varijabla
rs.update
Brisanje zapisa iz baze
Primjer pokazuje brisanje stavke iz baze uz poruku koja prethodi brisanju i koja zahtijeva potvrdu brisanja izborom YES ili NO.
dim yesno as byte 'YES=6; NO=7
yesno = MsgBox("Jeste li sigurni da želite da izbrišete podatke od " & Chr(10) & _
rspotrosnja.Fields("datum").Value & " datuma ?", vbYesNo + vbExclamation, "Poruka")
If yesno = 6 Then
rspotrosnja.Delete
rspotrosnja.Requery
End IF
Komentari odražavaju stavove svojih autora a NE stavove http://amicus.ba. Možete slobodno izraziti svoje mišljenje o članku koji komentarišete ili o komentarima drugih sve dok su vaši komentari u granicama uljudnosti. Uvredljivi, vulgarni, rasistički, nacionalistički i ostali opšte neprihvatljivi komentari će biti izbrisani! Ako imate neku sugestiju, prijedlog ili primjedbu ovo je dobro mjesto da je iznesete.
Coments WILL NOT BE published automatically. Administrator will check and publish each comment.