# Shkenca > Informatikë dhe Internet > Arti i programimit >  Access: Procedurë që njofton për plotësimin e një kushti

## valdetshala

Kam një databaze ne access 2003 me diku rreth 1000 Regjistrime(Records) kryesishte Punetor te nje firme, Ju kisha lutur dikujt qe merret me programime te me ndihmoje ne gjetjen e nje Kodi per te te Krijuar nje Event Procedure te Vetia e Datelindjes se punetorit(Date) On Current apo tjeter veti ne menyre qe te me shfaqet nje MESSAGE BOX ku do te me paralajmeronte se punetori ka mbushur 65 vjeç dhe se duhet pensionuar apo diqka te ngjajshme.  

Ju faleminderit kam besim te ju sepse qka kam pare ketu  mburrem qe jam Shqiptar........

----------


## edspace

Krijova databazën shembull_pensionistet.zip si shembull për atë që do të bësh ti. Databaza ka një tabelë me emrat e disa personave, datëlindjen e tyre, si dhe një kolonë po/jo që tregon nëse janë në pension apo jo. 

Gjithashtu ke dhe një formular i cili ka procedurat form_current() dhe NePension_AfterUpdate në të cilën kontrollohet nëse një person është mbi moshën 65 vjeç dhe nëse nuk është në pension, shfaq në formular një gabim për të të njoftuar që ai person duhet të jetë në pension. form_current e aktivizon kodin për çdo regjistrim ndërsa NePension_AfterUpdate e aktivizon sa herë që ndryshon statusin e pensionit. Për shembull, nëse një person është mbi 65 vjeç dhe përdoruesi ia heq statusin e pensioni, në formular do shfaqet gabimi:



Shfaqja e etiketës është më mirë se një mesazh (message box) sepse nuk i bezdis përdoruesit që ta mbyllin. Nëse të duhet me patjetër një mesazh, nuk është e vështirë ta ndryshosh kodin: 



```

Private Sub Form_Current()
    kontrolloMoshenPerPension
End Sub

Private Sub NePension_AfterUpdate()
    kontrolloMoshenPerPension
End Sub

Private Sub kontrolloMoshenPerPension()

    ' nese ditelindja eshte bosh, mos e shfaq gabimin
    If IsNull(Me.Ditelindja) Then
        Me.pensioniGabim.Visible = False
        Exit Sub
    End If

    ' gjej moshen
    Dim mosha As Integer
    mosha = DateDiff("yyyy", Me.Ditelindja, Now)
    
    ' nje person duhet te jete ne penson nese eshte 65 vjec e lart
    Dim duhetTeJeteNePension As Boolean
    duhetTeJeteNePension = mosha >= 65
    
    ' shfaq gabimin nese personi ka mbushur moshen e pensonit
    ' dhe nuk eshte ne pension
    Me.pensioniGabim.Visible = duhetTeJeteNePension And Not Me.NePension

End Sub
```

Vër re se kodi nuk nxjerr mesazh nëse mungon ditëlindja. Kjo është për regjistrimet pa ditëlindje, si në rastin kur krijon një regjistrim të ri dhe s'e ke futur ende ditëlindjen.

Zakonisht për nevoja të tilla është më mirë të krijosh një kërkesë (query) ose raport (report) sepse duke përdorur formularin do të duhet të shfletosh qindra ose mijëra regjistrime për të gjetur gabimet. Përveç formularit, në databazën shembull kam krijuar një kërkesë dhe një raport që tregojnë personat që kanë mbushur moshën 65 vjeç dhe nuk janë në pension. 

Me pak mundim është e mundur që të filtrosh formularin që shfaq personat që të shfaqë vetëm personat 65+ vjeç që nuk janë në pension. 

Access të ofron shumë mënyra për të arritur atë që do. Besoj se s'do e kesh të vështirë ta përshtatësh kodin për databazën tënde.

----------


## valdetshala

edspace te falenderohem nga zemra per pergjigjen; do ta provoj se shpejti kodin.

tung tung

----------


## valdetshala

edspace edhe nje here faleminderit shume sepse e kam provuar kodin dhe punon tamam ne menyren qe kam kerkuar, 

Shpresoj te kete me shume njerez si ti, flm

----------


## valdetshala

Edspace jam shumë kurreshtar qe di pak me shumë për Procedurat ne Access pra si ajo qe ju e krijuat, a ka mundësi pak sqarim se si krijohet nje procedure e tillë, prej hapave fillestar apo mundësishte ku mund te mësoj këto procedura që nga hapat e parë pra mundësisht me sqarime per çdo hap te bërë.

Nëse ke kohë per sqarime ta kisha ditur shumë për nder.

Përshëndetje!

----------


## edspace

Valdet, 

Për të shkruajtur procedurat të duhet të studiosh parimet e programimit dhe gjuhëve programuese. Për këto njohuri bazë do të këshilloja të lexoje ndonjë libër, ose të marrësh ndonjë klasë/kurs programimi në shkollë. Më pas mund të mësosh vetë duke ndjekur udhëzimet e shumta në Internet dhe të pyesësh në forum kur has në ndonjë vështirësi. 

Në Microsoft Access përdoret gjuha VBA - Visual Basic për Aplikacionet (Visual Basic for Applications). Kjo gjuhë të lejon të kontrollosh veprimet e formularëve, raporteve, kërkesave, e çdo funksioni tjetër që ofrohet në Access. 

Për të shtuar një procedure të re, duhet të zgjedhësh më parë veprimin/ngjarjen që do shkaktojë procedurën të ekzekutohet. Për shembull, nëse procedura duhet ekzekutuar gjatë shfletimit të regjistrimeve, procedurën duhet ta shtosh në ngjarjen _On Current_. Këtë e bën tek vetitë e formularit, në tabelën e ngjareve (events). Zgjidh _event procedure_ dhe shtyp butonin *...* për të hapur dritaren ku shkruhet kodi (code builder). 



Siç e shikon më lart, gjatë përdorimit të formularit ndodhin shumë ngjarje dhe Access të lejon të shkruash një procedurë për secilën prej tyre. Formularët, raportet, dhe të gjithë kontrollet që vendos në ta kanë ngjarje të ngjashme në të cilat mund të ekzekutohet një procedurë. 

Për shembull, në databazën e pensionistëve më lart do vësh re se procedura _kontrolloMoshenPerPension_ ekzekutohet gjatë dy ngjarjeve: (I) Kur shfletohet regjistri dhe (II) pas azhurnimit të fushës _nePension_. 


Për më shumë informacion për programimin në Access, lexo manualin që vjen me Microsoft Access, të cilin mund ta hapësh edhe në Internet.

----------


## valdetshala

Edspace me të vërtetë nuk di si te falenderohem sepse e e kam verejtur qe posedon ate miresine per te ju ndihmuar te tjereve, do ta provoj ate linkun qe ma kishe derguar, sepse per literature ne Peje kam kerkuar por Kot sepse nuk kam gjetur, por do te provoj ne Prishtine kur te kam mundesine te shkoj. Sa per kurse nuk kam kohe sepse edhe punoj deri ne 16.30 per qdo dite edhe " kogja do vjet i kam bo" mirepo ta dish se po ta tregoj nje te vertete ate bazen e te dhenave qe te kam treguar se e kam krijuar, e kam krijuar ne baze te njohurise qe kam lexuar dhe mesuar prej Librit te Agni Dikes mirepo per fat te keq nuk kishte shume per Visual Basic vetem 2 a 3 shembuj te Ndodhive te Ngjarjeve apo spo di qysh ti emertoj Shqip. Kam fituar nje respekt te thelle per ty andaj edhe ndoshta kam shkruar pak shume por prej besimit. Shpresoj qe te mund te mesoj shume gjera nga Ju . Respekt!

Jam shume i nteresuar qe te mesoj Procedurat e Ngjarjeve te Formulareve apo raporteve por shpresoj qe kam fatin te kontaktoj njeriun e duhur sepse per keto gjera te nevojitet edhe fati jo vetem vullneti. 
Edhe diqka se tani e verejta, Si duhet te veproj me Code Builder, a bon nje spjegim ne praktike, nje shembull apo eshte me mire te punohet me Event Procedure sepse me te vertet me duhet vetem ne fillim ndihma qe te kuptoj esencen e Kodeve apo Ngjarjeve

----------


## klodj

Valedetsha pershendetje,

Te mesosh nje gjuhe programimi eshte si te mesosh alfabetin e gjuhes Shqipe dhe pastaj te perpiqesh te shkruash dhe te besh fjali. Nje programator i zoti dhe profesionist mund te arrije te beje "hartime" apo "poezi" me gjuhet e programimit, pra qe jane programet e te gjitha llojeve. Per pune te vogla mund te besh programe te thjeshta dhe nqs di anglisht ka literature sa te duash. Psh Visual Basic eshte i thjeshte por nuk mund te mesohet ne forum. Mund te shfrytezosh Ndihmen e VB te Accessi dhe te mesosh fillimisht komandat dhe pastaj procedurat qe vine si shkak i nje klikimi etj etj..

Te uroj fat se vullnetit nuk ja kam friken te ty..

----------


## zenusi

EDI,
Të lumtë je i mrekullushë, dhe çdo herë i freskët për pëgjegjëje nga lëmia e informatikës.
Përshendetje.
N.A.

----------


## PROGRAM

Desha tu kerkoj nese ka mundsi dikush te me ndimoj te subforma me lidh barkodin artikullin edhe qmimin kur ti ipet barkodi me ma propzu artikullin edhe qmimin ne at rresht

----------


## hot_prinz

ku na mbeti edspace me keto spjegime te mrekullueshme..

...

@PROGRAM

nuk e di taman se si po e mendon me ate propozimin ne rresht por nese e kerkon qe sipas kerkimit te barkodit te shfaqen artikulli dhe cmimi ne fusha te nje forme atehre:
- krijojme nje tabele me te disa fusha (Barkodi, Artikulli, Cmimi) dhe mbushim disa vlera:
- formojme nje formular me fushat (Barkodi, Artikulli, Cmimi):

Fusha e Barkodit ne formular eshte nje "ComboBox" dhe do e mbushim me vlerat e Barkodit ne tabele gjate procedures fillestare te formularit, perparsia eshte se mund te zgjidhen Barkodet nga ComboBoxi ose gjate shtypjes se Barkodit ne ComboBox qe nga shkronja/numri i pare do te sortohen barkodet qe fillojne me ate shkronje e keshtu me radhe per shkronjat tjera, nje ndihme e madhe per te mos patur nevoje te shtypet i gjithe barkodi.

Kodi ne vijim:



```


Option Compare Database

Private Sub Form_Load()

    Dim databaza As DAO.Database
    Dim rekordseti As DAO.Recordset
    Dim komandaSQL As String
    
    Set databaza = CurrentDb
    komandaSQL = "SELECT * FROM Tabelle1"
    Set rekordseti = databaza.OpenRecordset(komandaSQL)
    
    Do While Not rekordseti.EOF
        Me.cmbBarkodi.AddItem (rekordseti.Fields("Barkodi"))
        rekordseti.MoveNext
    Loop
    
    rekordseti.Close
    Set rekordseti = Nothing
    Set databaza = Nothing
    
End Sub

Private Sub cmbBarkodi_AfterUpdate()

    Me.lblBarkodi.Caption = ""

    On Error GoTo gabimi

    Dim databaza As DAO.Database
    Dim rekordseti As DAO.Recordset
    Dim komandaSQL As String

    Set databaza = CurrentDb
    komandaSQL = "SELECT * FROM Tabelle1 WHERE Barkodi = '" & Me.cmbBarkodi & "'"
    Set rekordseti = databaza.OpenRecordset(komandaSQL)
    
    Me.Artikulli = rekordseti.Fields("Artikulli")
    Me.Cmimi = rekordseti.Fields("Cmimi")
    
    rekordseti.Close
    Set rekordseti = Nothing
    Set databaza = Nothing
    
gabimi:
    If Err.Number = -2147352567 Then
        Me.lblBarkodi.Caption = "Barkodi nuk ekziston!"
        Me.Artikulli = ""
        Me.Cmimi = ""
    End If

End Sub 



```

Nese barkodi nuk gjindet ne databaze atehere shfaqet nje gabim ne nje Label.

----------


## sarandioti_

Ok por si behet i egzekutueshem ky kod qe une mos te shikoj databaze por programin?

----------


## hot_prinz

@sarandioti e ke fjalen per pergjigjen time kundrejt PROGRAMIT?

----------


## valdetshala

sarandioti as une nuk po te kuptoj ne kete pyetje tenden sidomos me nje sqarim aq te paster sikur ky i hot-prinz!!!!!!!

----------


## sarandioti_

Nefakt pyetja ime nuk ka te beje me sqarimin konkret te hot-prinz por me dicka tjeter.
Pak me larte tek Kodi *PHP:* tregohet nje liste e codeve ndersa me poshte tregohen disa foto, pyetja ime eshte: Si mund te bej qe nje databaze ta shikoj si ne foto dhe jo si cod PHP?
Nuk di sa jam shpjeguar por ajo qe dua te di eshte nese deshiroj nje tabel si ajo e pensionistave dhe kam nje cod per kete, a meduhet dicka tjeter per te bere qe ky kod te duket ne formen e nje tabele?

----------


## valdetshala

qe ky kod te duket ne tabele asgje tjeter nuk te duhet sepse ne kod jane te perfshira te gjitha,  mundesite

----------


## sarandioti_

Ose une nuk ju kuptoj juve ase ju nuk po me kuptoni mua  :buzeqeshje:  Ka shume mundesi te jet e para. (Eshte e vertet qe une nuk di shum gjera per Kompjuterin dhe aq me pak per Programimin.) 

Por... po e zgjas edhe pak.
P.SH.   kemi kodin 



```
Option Compare Database 

Private Sub Form_Load() 

    Dim databaza As DAO.Database 
    Dim rekordseti As DAO.Recordset 
    Dim komandaSQL As String 
     
    Set databaza = CurrentDb 
    komandaSQL = "SELECT * FROM Tabelle1" 
    Set rekordseti = databaza.OpenRecordset(komandaSQL) 
     
    Do While Not rekordseti.EOF 
        Me.cmbBarkodi.AddItem (rekordseti.Fields("Barkodi")) 
        rekordseti.MoveNext 
    Loop 
     
    rekordseti.Close 
    Set rekordseti = Nothing 
    Set databaza = Nothing 
     
End Sub 

Private Sub cmbBarkodi_AfterUpdate() 

    Me.lblBarkodi.Caption = "" 

    On Error GoTo gabimi 

    Dim databaza As DAO.Database 
    Dim rekordseti As DAO.Recordset 
    Dim komandaSQL As String 

    Set databaza = CurrentDb 
    komandaSQL = "SELECT * FROM Tabelle1 WHERE Barkodi = '" & Me.cmbBarkodi & "'" 
    Set rekordseti = databaza.OpenRecordset(komandaSQL) 
     
    Me.Artikulli = rekordseti.Fields("Artikulli") 
    Me.Cmimi = rekordseti.Fields("Cmimi") 
     
    rekordseti.Close 
    Set rekordseti = Nothing 
    Set databaza = Nothing 
     
gabimi: 
    If Err.Number = -2147352567 Then 
        Me.lblBarkodi.Caption = "Barkodi nuk ekziston!" 
        Me.Artikulli = "" 
        Me.Cmimi = "" 
    End If 

End Sub
```


si mund ta shikoj kete jo si kod por si tabele?
KU duhet ta vendos ne pc, cfar me duhet tjeter, a me kuptuat?

Po pyes kaq shume per kete sepse une vat kam nje dyqan per rriparime elektro-shtepiake (nefakt e ka vellai im).
Por ne dyqan eshte nje rremuj e vertete dhe meqe ka bler nje kompjuter ne dyqan une doja ti vendosja nje program ku te beje hyrjen e mallit te per tu riparuar dhe vendosjen e nje numri qe kur klienti te vije, te mari shpejt dhe sakte mallin e tij.
Dy here klientit i eshte dhene nje hekur rrobash gabim ose qendrojne te pyesin dy ore per te kuptuar cfar klienti ka sjell 1muaj para.

----------


## hot_prinz

sarandioti_

per ta perdore kete kod te duhet programi i databazave Microsoft Access, nuk e di sa e njeh kete program, por njohurite elementare per te jane te doemosdoshme, si krijimi i nje tabele, krijimi i nje formulari, futja e kodit ne formular dhe ekzekutimi i formularit.

Nese e njeh gjuhen angleze ja nje link per te mesuar Access ne internet:
Learn Access Now

----------

