[ rribaric @ 21.10.2004. 21:48 ] @
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 |