Tutortial #1: CD-teka

Tutortial #1: CD-teka

offline
  • Pridružio: 28 Jun 2004
  • Poruke: 990
  • Gde živiš: Kucura

Evo napisah neki mali tutorial... Pa da podelim sa vama.

Ovaj program "Svi moji CD-ovi" (mogao sam i bolje ime da smislim) sluzi da bi znali da li su vam svi CD-ovi kuci i ako nisu koji su to CD-ovi.
Koristio sam source kod (komitenti) koji je okacio snoop, malo prepravio da bi imao o cemu da pisem i evo ga tutor...

Prvo skinite source [url=https://www.mycity.rs/must-login.png Pogledajte sta tamo ima pa se vratite ovde da procitate sta koji deo koda predstavlja.


Prvo sto vidite kada otvorite source je ovo:

'// da bi dodali ovo, idite na Project » Reference '// izaberite Microsoft ActiveX Data Objects 2.7 Library i stisnite OK

To treba da uradite ako bi ste vi pravili vas novi projekat koji bi koristio bazu. U ovom projektu je to vec uradjeno tako da ne morate da se zamarate sa time. Ovo sluzi da bi dodali ADOB komponentu za konektovanje na bazu podataka.



Sledece, odma ispod onog kratkog objasnjenja je ovo:

Public conn As New ADODB.Connection Public rs As ADODB.Recordset Public j As Integer Public k As String

E sad, da vidimo sta je sta... Kao prvo vidite da svaki red pocinje sa 'Public' To znaci da se deklarisane komponente, stringovi itd. mogu koristiti u celom projektu. Recimo da imate jos 5 formi u svakoj mozete ocitati vrednost integera j. Posto u ovom projektu postoji samo jedna forma mogo sam zameniti sa 'Public' na 'Private'. Tako deklarisane komponente bi mogao pozvati samo u source kodu za form1.

Prvi red oznacava da je conn konekcija prema bazi.
U drugom redu je deklarisan rs kao Recordset u tabeli koji deklarisemo u SQL upitu (to cemo kasnije)
j je deklarisan kao Integer sto znaci da moze sadrzati samo brojeve (dalje u kodu se nalazi procedura gde se u 'j' upisuje vrednost indexa slektovanog itema u listi).

Idemo na sledeci deo:

Public Sub openconn()     conn.ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & App.Path & "\CD.mdb" & ";"     conn.Open End Sub Public Sub closeconn()     conn.Close End Sub

Ovo su dve procedure pomocu kojih otvaramo i zatvaramo konekciju prema bazi. Kada zelimo da izvrsimo neki upit u bazi moramo prvo da otvorimo konekciju. To radimo sa prvim delom koda

conn.ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & App.Path & "\CD.mdb" & ";" conn.Open

Posto cemo cesto otvarati konekciju to smo stavili u proceduru openconn da ne bi svaki put pisali ova dva reda iznad. Procedura je ovo sto se nalzai izmedju Public sub [ime_procedure] - End Sub.

Takodje imamo i proceduru closeconn sa kojom zatvaramo konekciju kada smo izvrsili SQL upit.
Proceduru pozivamo tako sto jednostavno ispisemo njeno ime tamo gde nam je potrebna.

------------------------------------------------------------------------------

Ukoliko zelimo da se izvrsi neki kod odmah po ucitavanju forme treba da otvorimo Form_Load() proceduru (dvoklik na formu u design prozoru). U nasem slucaju u Form_Load() eventu izvrsava se sledece:

cmdProcitaj_Click

Tako pozivamo procedutu cmdProcitaj_Click a to ustvari znaci da ce se program uraditi isto kao da smo klikli na cmdProcitaj. Kada kliknemo na pomenuto dugme izvrsava se kod upisan u proceduru cmdProcitaj_Click() koji ce podatke da ubaci u tabelu.

.....

Evo stigli smo i do naseg dugmeta za citanje podataka. Pa da vidimo kako to funkcionise.

Dim sql As String

Deklarisemo sql kao String.

openconn

Pozivamo proceduru za otvaranje konekcije prema bazi.

sql = "SELECT * FROM Moja_zbirka_diskova ORDER BY ID DESC;"

Zadajemo SQL upit.

Set rs = conn.Execute(sql)

Izvrsavamo SQL upit.

If rs.EOF Then         MsgBox "U bazi ne postoji ni jedan zapis!", vbExclamation, "Access"         closeconn         Exit Sub     End If

-Proveravamo da li postoji zapis u bazi. Ukoliko ne postoji saljemo informaciju u vidu poruke [MsgBox "...]
-zatvaramo konekciju prema bazi [closeconn]
-izlazimo iz procedure [Exit Sub].

Sve sto je upisano ispod [Exit Sub] nece biti izvrseno.



ListView1.ListItems.Clear

Brisemo podatke iz liste.

Do Until rs.EOF         ListView1.ListItems.Add 1, , rs("ID")         ListView1.ListItems(1).SubItems(1) = rs("CD")         ListView1.ListItems(1).SubItems(2) = rs("Opis")         ListView1.ListItems(1).SubItems(3) = rs("Velicina")         ListView1.ListItems(1).SubItems(4) = rs("Izdato")             rs.MoveNext     Loop

Ovde upisujemo nove podatke u bazu tj. one podztke koje smo izvrsenjem SQL upita ubacili u rs (recordset).
Prvo imamo Do petlju. Kao sto vidite pise Do Until a to oznacava da ce se petlja izvrsavati dogod uslov ne bude zadovoljen. Uslov u ovom slucaju je rs.EOF [poslednji zapis u bazi]. Pomocu [ListView1.ListItems.Add 1, , rs("ID")] ubacujemo sadrzaj kolone ID iz baze u nasu tabelu u prvu kolonu. [ListView1.ListItems(1).SubItems(1) = rs("CD")] Prva kolona nase tabele ima index 0 tako da druga kolona ima index 1. Zato se koristi funkcija Subitems(1) i u tu kolonu u tabeli upisujemo sadrzaj druge kolone u bazi (kolona u bazi nazvana CD). Ostatak je slican ovom postupku. (ovo nije gramaticni najispravnije napisano zato procitajte zadnju recenicu par puta Razz)

[rs.MoveNext] pomeramo record et na sledeci zapis.

[Loop] zavrsetak Do petlje.


Citat:Do petlja se moze postaviti i ovako:

a = 1 Do While a < 10 a = a + 1 Loop

Ovako postavljena petlja ce se izvrsavati sve dok a ima vrednost manju od 10.



closeconn

Zatvaramo konekciju.


Sledi cmdIzmene. Klikom na ovo dugme snimamo izmene u bazu. Prvo zadajemo sql upit za snimanje izmena, otvaramo konekciju, zatim izvrsavamo sql upit, zatvaramo konekciju i na kraju ponovo pozivamo cmdProcitaj_Click. To radimo da bi izmene koje smo uneli u bazu prikazali u tabeli. Smile

Postupak izvrsavanja komandi u cmdBrisanje je identican samo sto se SQL upit razlikuje...

Klikom na ListView1 mi ustvari upisujemo u memoriju koju stavku smo obelezili. Na pocetku proveravamo da li u listi postoji neki zapis tj da li je korisnik kliknuo na praznu listu ili na neku vrednost u listi.

If ListView1.ListItems.Count = 0 Then Exit Sub

Ukoliko ne postoji izlazimo iz ove procedure komandom [Exit Sub] u suprotnom u string [j] upisujemo redni broj zapisa u tabeli.
U nastavku koda na Labele koje smo postavili na nasu formu upisujemo podatke o selektovanom itemu u listi:

To je ovaj deo koda:
    lblID.Caption = ListView1.ListItems(j).Text     txtCD.Text = ListView1.ListItems(j).SubItems(1)     txtOpis.Text = ListView1.ListItems(j).SubItems(2)     txtVelicina.Text = ListView1.ListItems(j).SubItems(3)]

Zatim jos preostaje da u CheckBox postavimo odgovarajucu vrednost tj. ukoliko je CD iznajmljen da vrednost postavimo na Checked u suproitnom postavljamo Unchecked. To radimo preko Select Vase petlje. Prvo zadajemo sta cemo da posmatramo. U nasem slucaju je ListView1.ListItems(j).SubItems(4) ili kolona u tabeli gde je zapisamo da li je CD iznajmljen (onda je vrednost True) ili nije (predpostavljate vrednost je False).

Evo to bi bilo objasnjenje ovog koda... Za sledeci tutorial cu se potruditi da napisem nesto vise o SQL upitima i kako ih koristiti u VB-u.
{pozzz}



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
Ko je trenutno na forumu
 

Ukupno su 1253 korisnika na forumu :: 41 registrovanih, 8 sakrivenih i 1204 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: aleksmajstor, Atomski čoban, Ben Roj, Bluper, bojank, Boris Bosiljčić, Boris90, Buzdovan, ccoogg123, cenejac111, cinoeye, comi_pfc, dekan.m, Demostant, Denaya, doktor1964, Dr.Strangelove, Excalibur13, flash12, FOX, GenZee, ILGromovnik, ivica976, Joja, Karla, Kriglord, kunktator, laki_bb, mercedesamg, Mixelotti, Mlav, Ne doznajem se u oružje, nenad81, procesor, slonic_tonic, Srki94, Stoilkovic, YU-UKI, zdrebac, |_MeD_|, 1107