Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

currentdb i recordset (brzina i performanse)

[es] :: Access :: currentdb i recordset (brzina i performanse)

[ Pregleda: 1714 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

rribaric
romano ribarić
rijeka

Član broj: 31410
Poruke: 165
*.net.htnet.hr.



Profil

icon currentdb i recordset (brzina i performanse)21.10.2004. u 21:48 - pre 237 meseci
Može jedno pitanje koje možda može bit korisno i za ostale!
1.Imam jedno pitanje dali ovaj kod može brže I bolje napravit.S njime sortiram neku bazu(tblartikli) I sortiram je u u tbledupla I dodijeljujem svakom zapisu svoj redni broj RowID.
2.Također me interesira pošto sam pročitao na ovom forumu za funkciju Set db=Currentdb da je ona spora I zidar je ponudio ovaj zamjenski kod koji sam kopirao u modul I sad ga uredno pozivam tokom izvršenja programa. Currentdb pozivam kasnije više puta tokom izvršenja programa pa me interesira dali to utječe na kvalitetu I brzinu aplikacije.
3.Dali ako na početku postavim Set db=Currentdb za neki .openrecordse nakon završetka rada s tim recordsetom moram obavezno zatvarat db.close iako nakon toga otvaram novi openrecordset.Ili mogu taj isti Set db=Currentdb koristit za sljedeći recordset.
Koje je riješenje prihvatljivo.
Imam ovakav kod :

Public Function ftable()
Dim tSQL As String, br As Integer
Dim tb As DAO.Recordset, db As DAO.Database
DoCmd.SetWarnings (False)
tSQL = " SELECT tblartikli.* INTO tbledupla "
tSQL = tSQL & "FROM tblartikli "
tSQL = tSQL & " ORDER BY artikal ;"
DoCmd.RunSQL (tSQL)
Set db = GetCurrentdB
Set tb = db.OpenRecordset("tbledupla")
tb.MoveFirst
br = -1
Do While Not tb.EOF
With tb
tb.Edit
tb!rowid = br + 1
tb.Update
End With
br = br + 1
tb.MoveNext
Loop
tb.Close
db.Close

rem ovdje ponovno setiram db
Set db = GetCurrentdB
Set tb = db.OpenRecordset("parametri")
tb.MoveFirst
tb.Edit
tb!Broj = 0
tb.Update
tb.Close
db.Close
Me!LSTSEARCH = Me!LSTSEARCH.ItemData(0)
DoCmd.SetWarnings (True)
End Function


U modulu mi je kopiran :
Function GetCurrentdB() As Database
Static db As Database
Dim STRNAME As String
On Error Resume Next
STRNAME = db.Name
Rem previos line produces error if db=nothing(first time we call the function)
Rem That error is ignored and db is set to currentdb()
Rem This will crash if break On All Errors
Rem Next time ,db.names does not produce error ,for its STATIC ,means it remembers
Rem its value between function calls
If Err.Number <> 0 Then
Set db = CurrentDb
End If
Set GetCurrentdB = db
End Function



romano
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: currentdb i recordset (brzina i performanse)25.10.2004. u 13:38 - pre 237 meseci
Tvoja funkcija je OK. Ne treba ti da dva puta radis GetCurrentDb. Jednom je dovoljno. Znaci

rem ovdje ponovno setiram db
Set db = GetCurrentdB

ne treba.

Sto se tice GetCurrentDB i currentDB - da ponovimo - GetCurrentDB izvrsava CurrentDB i pamti vracenu vrednost (referenca na tekuci Access fajl) tokom celog programa. Ako tvoju funkciju izvrsavas samo jednom, ne mozes da primetis razliku izmadju CurrentDB i getCurrentDB. medjutim, ako tvoju funkciju pozivas 500 puta, na primer ides kroz neku tabelu i za svaki rekord pozivas tvoju funkciju, koja svaki put treba informav=ciju o CurrentDB, onda ces osetiti razliku i to veliku. probaj i videces.

:-)
 
Odgovor na temu

rribaric
romano ribarić
rijeka

Član broj: 31410
Poruke: 165
*.net.htnet.hr.



Profil

icon Re: currentdb i recordset (brzina i performanse)25.10.2004. u 17:25 - pre 237 meseci
Ok sad mi je kasnije zašto i kako funkcionira ovaj currentdb.
Iskreno na početku sam bio malo zbunjen s tim kodom ali sad mi je jasno zašto.
A i drago mi je da nemoram non stop pisat set db=currentdb,jer se na kraju kad pišem nešto dužu proceduru izgubim.Više ne znam dali je .open ili .close.
Hvala ti Zidar!Ti si stvarno majstor!

romano
 
Odgovor na temu

[es] :: Access :: currentdb i recordset (brzina i performanse)

[ Pregleda: 1714 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.