Za pocetak cu da odvojim aplikaciju od podataka. Ovo znaci da cu da pocnem od novog, praznog Access fajla. Onda cu da atatchujem ili linkujem ili povezem sve tabele iz verzije koju je TheNoise postavio. Za sada to radim rucno, kasnije cemo vec negde pronaci kod koji ce to raditi za nas.
Napravicemo mekoliko formi za pocetak, tek toliko da mozemo da upravljamo javnim nabavama. Uz form ce ici i poneki izvestaj i poneka zgodna funkcionalnost, zavisno od toga kako smo razumeli i zamislili da s eodvja proces upravljanja javnim nabavama. Zelja je da naucimo dovoljno principa da bi ih kasnije mogli samostalno primeniti na ostale delove baze. Trudicemo se da izbegnemo programiranje koliko god je moguce. Ova aplikacija se radi za inzenjere, a inzenjeri su prakticni ljudi, ne ole da rade sto ne moraju.
Da pocnemo.
Kreiram datasheet formu "frmJavneNabave_DS", row source tabela JavneNabave, za sada. Mozda kasnije ponesto i nadogradimo.
Onda kreiram formu frmMaster, nepovezana forma:
Record Selector = No
Navigation Buttons = No
Alow Datasheet view = No
Caption = "Upravljanje Investicijama"
Dodajem form Header/Footer
Na frmMaster navucem frmJavneNabave_DS, pojavljue se kontrola tipa 'subform. Menjam joj ime u name = "ctlSubform". Source Object za subformu je frmJavneNabave_DS. Ako koristim verzije 2007 i vise, za subformu stavim Anchoring: spread right and down, da bi se subforma prilagodjavala velicini glavne forme (frmMaster) na ekranu. Za starije verzije - ostaviti ovako akko je pa podesiti rucno za neku najverovatniju velicinu ekrana. ne isplati se raditi 'resize', radije predjite na verziju 2007 ili noviju.
Sada napravim datsheet fome za tabele 'PotencijalniIzvodjaci', 'Projekti', 'Ntjecatelji'. Usudjujem se da kazem da ce za svaku tabelu, ali bas za svaki koja postoji u modelu, do kraja biti napravljena bar po jedna datasheet forma. Za neke cemo imati i dve DS forme, a za neke i master forme sa subformama. O tom potom, sve u svoje vreme.
Sada na frmMaster dodam dugmad, u Form.header skciji, kao na slici. Dugmad se zovu:
cmdPotencijalniIzvodjaci, cmdProjekti, cmdNtjecatelji:
Sad na dugmad dodajem kod, ovako:
Code:
Private Sub cmdJavneNabave_Click()
Me!ctlSubform.SourceObject = "frmJavneNabave_DS"
End Sub
I tako za sva tri dugmeta. Kao rezultat, kad kliknem na odredjeno dugme, ta se subforma pojavi na glavnoj formi. Posto nismo datasheet forme nicim ogranicili, mozemo direktno u njih d aunosimo podatke. Ako ima mnogo podataka, mozemo d aih sortiramo i filtriramo po volji. Satite se, ako postavite kursor u neku kolonu, pa urdite Right-Click, dobijete opcije da filtrirate i sortirate tu kolonu skoro neograniceno:
Filter BySelection dozvoljava da izaberete deo teksta u polju i dobijete filter tila LIKE .., Filter For dozvoljava da unesete izraz kao u kveriju. Bez ikakvog programiranja dobijate strasno puno funkcionalnosti na jednom mestu. A i korisnik ce se osecati vaznijim ako ganaucite ove jednostavne aveoma korisne operacije.
Mozemo dakle da menjamo datsheet koji se pokazuje na subformi, i da ako hocemo pretrazujemo i editujemo podatke. Primetite da smo izabrali tabele koje su na neki nacin na ‘vanjskoj’ strani dijagrama, ili bar prilicno daleko od sredine. Subforme cemo koristiti za navigaciju – za pristup tabelama koje zavise od ovih vanjskih tabela.
Za Javne Nabave, zgodno je videti 1) sve ucesnici natjecanja 2) ugovore koje smo potpisali za posmatranu nabavu. Da bi to postigli, napravicemo formu frmJavnaNabava, koja ce biti forma sa dve subforme.
frmJavnaNabava (jednina u nazivu, zato sto se forma odnosi na jednu odredjenu nabavu):
Caption: Javna Nabava
Default View: Single Form
Allow Datasheet View: No
Usput na brzinu napravimo subformu frmIzvodjackiUgovori_DS.
Postavimo Tab kontrolu na frmJavnenabave, i na njih navucemo datsheet forme frmNatjecatelji_DS i frmIzvodjackiUgovori_DS. Forma treba da izgleda nekako ovako:
Access bi trebalo sam da postavi Parent-Child veze izmedju glavne forme i subformi. To mozemo da proverimo u form properties, Data section, ovako:
Ako Access nije postavio veze, uradite to sami, za obe subforme.
Sad treba da malo napravimo da se sa subforme frmJavnanabava_DS nekako pozove forma frmJavnaNabava. Dopisemo malo koda. Otvorimo frmJavnanabava_DS u design modu i na properties Events unesemo ovakav event:
Private Sub JavnaNabavaID_DblClick(Cancel As Integer)
Code:
Dim strWhere As String
Dim strForm As String
strWhere = "JavnaNabavaID = " & Me!JavnaNabavaID
strForm = "frmJavnaNabava"
DoCmd.OpenForm FormName:=strForm _
, View:=acNormal _
, WhereCondition:=strWhere _
, DataMode:=acFormEdit _
, WindowMode:=acDialog
End Sub
Ovom kodu, i onom ranije, nedosraj kontrola gresaka – Error Handling. Ako odete na sajt
http://www.mztools.com/v3/download.aspx i besplatno skinete MZ-Tools 3.0 for VBA. Instalirate i dobijete novi toolbar u Access VB editoru. Tamo imate alat za dodavanje Error Handling. Proucite i opciju dodavanja komentara. Ima jos toga korisnog, ali se meni Error Handling najvise dopada. Error Handling daje vasim aplikacijama jedan profesionalni ton. Ni jedna procedura ni funkcija ne bi smela da bude bez error handling i komentara. Evo:
Code:
Private Sub JavnaNabavaID_DblClick(Cancel As Integer)
'---------------------------------------------------------------------------------------
' Procedure : JavnaNabavaID_DblClick
' Author : Zidar
' Date : 25/02/2013
' Purpose : Otvara single-form frmJavnaNabava ako se double-click na me!JavnaNabavaID
' How it works: Forma se otvara u Dialog modu, znaci mora se zatvorriti da bi se vratili
' odakle ste posli.
' Called by :
'---------------------------------------------------------------------------------------
'
Dim strWhere As String
Dim strForm As String
On Error GoTo JavnaNabavaID_DblClick_Error
strWhere = "JavnaNabavaID = " & Me!JavnaNabavaID
strForm = "frmJavnaNabava"
DoCmd.OpenForm FormName:=strForm _
, View:=acNormal _
, WhereCondition:=strWhere _
, DataMode:=acFormEdit _
, WindowMode:=acDialog
EXIT_HERE:
On Error Resume Next
Exit Sub
JavnaNabavaID_DblClick_Error:
MsgBox "Error " & Err.Number _
& vbCrLf & " (" & Err.Description _
& vbCrLf & ") in procedure JavnaNabavaID_DblClick of VBA Document Form_frmJavneNabave_DS"
Resume EXIT_HERE
End Sub
Posto smo pokazali gde se moze dobiti alat za dodavanje Error Handling i komentara, u daljem radu cemo to koristiti obavezno. Na poceku smo hteli da se fokusirate na to sta procedura/funkcija radi, a ovo je pripremanje programa za ozbiljan rad.
Za sada ovoliko. Za neki dan cemo da pokusamo da malo upristojimo forme koje smo napravili, da izgledaju i funkcionisu profesionalno. Ovo je guba skica. Mozda ce trebati da se ponesto uradi i na tabelama, primetio sam rupe u integritetu podataka. Ne bojte se, ne menjamo relacije, ali cemo pogledati za tabele Validation rule i Required properties. To ce nam ustedeti mnogo problema u daljem radu.
[Ovu poruku je menjao Getsbi dana 26.02.2013. u 07:37 GMT+1]