Support http://amicus.ba with small donation

 
Četvrtak 8 Juni 2023

Zvjezdica neaktivnaZvjezdica neaktivnaZvjezdica neaktivnaZvjezdica neaktivnaZvjezdica neaktivna
 

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

­­­­­­

Dodaj komentar

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.

Amicus copyright 2023