» »

VB6+Access kako iskati?

VB6+Access kako iskati?

overlord_tm ::

A mogoče kdo ve (no sigurn kdo ve:D ) kako iskat po Access datoteki s Find?(kukr vem se po tabeli ne da iskat s Find ampak morš uporabt Seek:( )

A s Find se da iskat z jokerjem?
Npr.: Pepe*
zvezdica je lahko katerakol črka ali znak.


TNX za odgovore!

LP

ToniT ::

Po tabeli se išče s SQL ukazi.
Pozabi na Clipper!
select * from ImeTabele where ImePolja='Pepe'

Fim ::

V VB ali VBA lahko iščeš an več načinov, glede na potrebe in glede na izvor baze podatkov. Vsi načini so na voljo, če imaš npr. accessovo bazo, če pa dostopaš do SQL server tabel si pa malo omejen (seek ne gre)....
Glede na izvor programiranja VB/VBA boš sigurno našel kaj uporabnega:

Nekaj primerov:
DAO FindFirst (VBA):

Public Function DAO_Primer1()

Dim db As Database, myq As QueryDef, rs As Recordset

Set db = CurrentDb()
Set myq = db.CreateQueryDef("")

myq.SQL = "SELECT Polje1,Polje2,... FROM myTabela"
Set rs = myq.OpenRecordset(DB_OPEN_DYNASET)
rs.FindFirst "Polje =" & Vrednost_Ki_jo_Iščeš
If rs.NoMatch Then
msgbox "Nič našel"
else
........ 'obdelava najdenih podatkov
endif

Set rs = Nothing
Set myq = Nothing
Set db = Nothing

End Function

Še primer za seek: V rs.Index omenjeni index mora biti narejen na polju po katerem iščeš!

Public Function DAO_Primer2()

Dim db As Database, rs As Recordset

Set db = CurrentDb()
Set rs = DB.OpenRecordset("myTabela",db_OpenTable)
rs.Index = "myIndex"

rs.Seek "=", Vrednost_Ki_jo_Iščeš
If rs.NoMatch Then
msgbox "Nič našel"
Else
...........
Endif

Set rs = Nothing
Set DB = Nothing

End function

Druga funkcija je zastavljena malo drugače, da lahko vidiš še drug način brez queryDef objekta. Načeloma pa sta si funkcije identične. V helpu si oglej še razlike med FindFirst (FindNext, FindLast,....) in Seek.

Seveda pa lahko vse to počneš tudi z ADO:

Public Function ADO_Primer()

Dim cnn As ADODB.Connection, rs As ADODB.Recordset
Dim SQLString As String

Set cnn = New ADODB.Connection
cnn.Open "File Name=myData.udl"
'v udl datoteki si specificiraš dostop do podatkov. Ustvari
'si prazno udl datoteko, jo shrani, 2x klik in vpiši podatke....

Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient 'Opt.

SQLString = "Select Polje1,Polje2 from myTabela"
rs.Open SQLString, cnn, adOpenStatic, adLockReadOnly, adCmdText
rs!Polje1.Properties("Optimize") = True 'Opt.

rs.MoveFirst
rs.Find "Polje1=" & Vrednost_Ki_jo_Iščeš

Set rs = Nothing
Set cnn = Nothing

end Function

V Helpu si oglej ADO in DAO ter razlike, je kar lepo vse razloženo pa še mnogo drugih načinov najdeš (tudi seek). Tam najdeš tudi podatke kako je z RO, RW dostopom glede na izvor podatkov in tip dela ADO/DAO. Obstajajo tudi načini iskanja s FindRecord, Bookmark,......

Če želiš iskati z "*" in stalimi podobnimi znaki uporabi SQL String in funkcijo LIKE. Query lahko nato daš na formo kjer prikazuješ najdene podatke ali pa kot parameter v Dlookup funkciji (VBA), ali pa kot SQLstring v gornjem primeru.......

Vse te funkcije pa imajo slabo lastnost, da če ne postaviš indexov tako kot je treba so počasne. Razen ADO primera, ki pa vsebuje že optimizacijo in kar sam naredi nekakšen Index na polju po katerem iščeš (te dve vrstici označuje 'Opt.).
Je pa tako, da ti najboljša koda ne reši slabo postavljene baze podatkov......

Zgodovina sprememb…

  • spremenil: Fim ()

overlord_tm ::

TNX za odgovore!:)
Bom preizkusu takoj ko pridem za moj comp.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Access 2007]

Oddelek: Programiranje
132638 (2238) urosz
»

access -> word ali excel

Oddelek: Programska oprema
51234 (1175) zavajon
»

Dve tabeli v accessu

Oddelek: Programiranje
51047 (899) clipperaš
»

en problem v MS Accessu

Oddelek: Programiranje
51010 (911) destiny
»

Kako do podatka v queryu iz VisualBasicScripta (VBA) v accessu?

Oddelek: Programiranje
112171 (2056) Fim

Več podobnih tem