Microsoft Office Access
uređuje Branislav Mihaljev, MVP

 Office Praktikum | Mapa sajta 

 
Bookmark and Share
Matična strana sajta
Novo na sajtu
Mapa sajta
Beleške
Knjiga posetilaca
Kontakt

Prethodna stranica
Pretraga sajta
Pretraga MSKB

Blog Praktikuma
RSS feed 
 
Office Praktikum

Još o Accessu
 


Skoro svakodnevno slušamo
  Radio Paradise:
  eklektični muzički online radio bez reklama!
 

   

Sponzori sajta

  Connectivity by SBB
 
Connectivity by SBB

 

Informacije

NOVOSTI
Novi prilog o Wordu
Tri nova autorska članka
Četiri priloga o Accessu
Opis i uputstvo za alatku YuCirLat '08 (Word)

SADRŽAJ ZA PREUZIMANJE
YuCirLat '08 unapređena alatka za konverziju kodnih rasporeda u Wordu

SKREĆEMO PAŽNJU
Beleške: B(l)oga li ti tvoga!- prilog koji će nekog možda čak i da naljuti
Kako pretraživati MSKB
* a pronaći ćete i još mnogo novih sadržaja...

USKORO SERIJA ČLANAKA O OFFICEU 2010

POZIVAMO VAS
* i prenesite svoja iskustva. Najbolji prilozi će biti objavljeni.



  (C) 2000-2009 Praktikum na Webu
 

Interaktivna pretraga u formi u Accessu

Nivo:  NIVO 3 - klinite za objašnjenje


U Accessu ne postoje valjani alati za pretraživanje, pa je dobro da se napravi takav alat, tako da radi tačno po ideji projektanta baze.

Ovaj problem nije od juče, a i suviše se često javlja - kako da korisniku baze obezbedite da pretražuje brzo, a istovremeno po svim poljima u jednoj velikoj tabeli bez obzira na broj slogova i broj polja u slogu. Naki DataBase alati nude ovu mogućnost i bez programiranja, dok se u Accessu nudi uglavnom samo filtriranje.

Filtriranja su vam uvek na raspolaganju, ali je zadavanje parametara filtriranja isuviše trapavo. Evo kompletnog i univerzalnog rešenja za primenu interaktivnog pretraživanja u Access formi oblika Datasheet.

Kreirajte formu oblika Datasheet, a neka njen Record Source bude neka veća tabela ili upit sa što većim rezultujućim setom. Unesite sledeći kôd u modul kôda ove forme:

Option Compare Database
Option Explicit
Public FT As String, MyTimer As Integer

Private Sub Form_Load()
Me.OrderBy = "" 'poništava prethodno sortiranje
MyTimer = 2000 'postavlja tajmer na 2 sekunda
End Sub


Private Sub Form_Timer()
' Ovaj tajmer obezbeđuje
' poništavanje traženja na 2 sekunde
' od završenog prethodnog pretraživanja

Me.TimerInterval = 0
FT = ""
SB "Poništeno traženje"
End Sub

Svojstvo forme Key Preview postavite na Yes. Ostala svojstva podesite na sledeći način:

Allow Edits: False
Allow Filters: True
Allow Updating: No
AllowAdditions: False
AllowDeletions: False
FilterOn: False
Record Locks: No Locks
RecordsetType: All Records

Kreirajte Class Modul, pa u njega upišite sledeći kôd:

Option Compare Database
Option Explicit

Public Function LookMyText(MyForm As Form, _
    myField As String, LookFor As String, _
    FromTop As Integer) As Boolean

Dim bookmark As String
Dim rs As Object
Dim FoundMatch As Integer
Dim FindCriteria As String

If MyForm.OrderBy <> "[" & myField & "]" Then
    SB "Sortiranje u toku ..."
    MyForm.OrderBy = "[" & myField & "]"
    MyForm.OrderByOn = True
End If


' PA®NJA:
' ako koristite Access 2000, sledeći red zamenite sa
' Set rs = MyForm.RecordsetClone
' priloženo rešenje radi u Accessu 97!

Set rs = MyForm.RecordsetClone
FindCriteria = "[" & myField & "]" & _
    " LIKE """ & LookFor & "*" & """"

If FromTop Or Len(LookFor) < 2 Then
    MyForm.RecordsetClone.FindFirst FindCriteria
Else
    MyForm.RecordsetClone.FindNext FindCriteria
End If

SB "TRA®ITE " & MyForm.ActiveControl.ControlName & _
    " na: " & UCase(LookFor)
MyForm.bookmark = MyForm.RecordsetClone.bookmark

If Not (MyForm.RecordsetClone.NoMatch) Then
    LookMyText = True
Else
    SB "NE postoji više " & _
        MyForm.ActiveControl.ControlName & _
        " na: " & UCase(LookFor)
    LookMyText = False
End If

End Function

Public Function SB(X As String)
'Funkcija obezbeđuje ispis teksta u Status Bar-u

Dim Y As Variant

If Len(X) > 0 Then
    Y = SysCmd(acSysCmdSetStatus, X)
Else
    Y = SysCmd(acSysCmdClearStatus)
End If

End Function

Obratite pažnju u kodu: ako koristite Access 2000,
trebalo bi da u listingu promenite RecordsetClone u Recordset.Clone (DAO u ADO).

Sačuvajte kreirane objekte i isprobajte.

Pretraživanje se obavlja prema polju (koloni) u kojoj se nalazite i čim otkucate neki tekst (ili broj). Treba napomenuti da će forma najpre biti sortirana prema polju po kome se pretražuje, a tek potom će biti nađen (ili ne) slog u kojem polje zadovoljava dati uslov. Podrazumeva se pretraživanje prema početnim znacima u polju, a korišćenjem džokerskih znakova * i/ili ? može se obezbediti i pronalaženje bilo kojeg dela podatka (unutrašnji ili završni deo teksta). Pri korišćenju džokerskih znakova sortiranje neće obezbediti lakše pretraživanje (teško ga je osmisliti).

 

  (C) 2000-2009 Praktikum na Webu

Radenko S. Mikanović, septembar 2000.


 
 

Vrh stranice  Prethodna stranica  Naslovna strana  Mapa sajta  Pretraga

AFORIZAM ZA DANAS OVIH DANA SLUŠAMO...

Copyright © Praktikum na Webu, 2000-2009; Valinor Design; sva prava pridržana.