Newsgroup: it.comp.appl.access
Titolo: sostituire dlookup() per velocizzare la procedura

Nel mio db ho una tabella 'Dati base' dove inserisco dei valori che cambiano
solo se c'è un provvedimento normativo che li fa cambiare (ad esempio
aliquota iva ordinaria-Percentuale ritenuta provvigioni-ecc.).
Quando nelle mie maschere ho bisogno di tali valori utilizzo la funzione
dlookup().
Ho letto (e ultimamente constatato personalmente) che la funzione dlookup()
rallenta molto la procedura.
Allora chiedo: è possibile usare delle costanti simboliche che all'apertura
del db memorizzano i valori dei campi della tabella 'dati base' e poi,
quando ho bisogno di questi valori nella mia procedura, richiamo
semplicemente il nome della costante?
Così facendo velocizzo il tutto?
In caso affermativo, mi mostrate come si fa a livello di codice?
Oppure avete qualche altro suggerimento in merito?
Ringrazio anticipatamente.
GioVe

 ha scritto nel messaggio news:eLDWc.179137$5D1.8...@news4.tin.it...

a velocità non ti so dire....
a livello di codice basta che dichiari le variabili globali in un modulo indipendente in questo modo:
public PercIVA as double
public Pippo as string
.
.
.
poi con un apiccola sub le inizializzi
public sub Init_Var()
PercIVA = dlookup ("Percentuale","Tabella","filtro")
.
.
.
end sub
poi in tutto il resto del tuo codice puoi richiamarla semplicemente digitando il nome:
me.IVA = PercIVA * me.imponibile
spero di essere stato chiaro
ciao
Nick

 ha scritto nel messaggio
news:eLDWc.179137$5D1.8...@news4.tin.it...

Ciao GioVe
vedo con piacere che stai traendo molto beneficio da questo NG...così si fà,
a questo serve, averlo scoperto è stato utilissimo.
DlookUp è una funzione da usarsi preferibilmente con parsimonia nei cicli
lunghi e con tanti valori da cercare. Non così se ti serve conoscere "al
volo" il valore di un record in una tabella di impostazioni. Per esempio se
vuoi conoscere quale è stato il cambio del dollaro il 20 agosto 2004 e se
questo valore risiede in una tabella opportunamente strutturata, sarà
questione di millesimi di secondo trovare il valore con DlookUp.
Per quanto riguarda le Costanti Globali (per nulla "simboliche") da popolare
all'apertura del db la cosa si può fare ma per farlo quale metodo userai?
DlookUp?
Hai considerato l'uso dei Recordset magari ti tipo Snapshot?
Tutto dipende da quello che devi fare e sopratutto come e quando devi farlo.
Ciao, Carlo

 In caso affermativo, mi mostrate come si fa a livello di codice?
Tieni presente che se hai una tabella di valori con 10, 20, 100 record, tiè,
anche fare un dlookup non è che impatta poi molto.
A cronometrare, la var globale è comunque più veloce!
Antonio

 wrote in message
news:eLDWc.179137$
5D1.8...@news4.tin.it

[RISPOSTA]
Se hai dei Parametri che rimangono validi per tutta la sessione
del Progetto e li riutilizzi spesso convierrebbe salvarli
in Memoria come Variabili Globali.
(Ovviamente dò per scontato che la Tabella sia MONORECORD)
Es.:
In un Modulo...
Private Type DataList
 AliquotaOrdinaria as Bouble  (vedi tu il tipo)
 AliquotaPercentuale as Long
 Provvigioni as xxx
 'xxxx---- as yyyy
End type
Public pData as DataList
Function LoadDataList() as Boolean
 Dim rs as DAO.Database
 set rs=Currentdb.Openrecordset("NomeTAbella",dbreadonly) 
 If rs.Eof and rs.Bof then LoadDataList=False:Exit Function
 pData.AliquotaOrdinaria=rs!AliquotaOrdinaria
 pData.AliquotaPercentuale=Rs!AliquotaPercentuale
 '......ecc....ecc....!
 rs.Close
 Set rs=Nothing
End Function
La dichiarazione sembra un SOFISMO, per me è comoda in quanto non
mi devo ricordare tutti i nomi delle Variabili, ma mi basta
sapere la pData, in quanto poi vengono esposti come proprietà
i sottotipi.
Ciao.
@Alex.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:831550f303fe63adc6...@mygate.mailgate.org...

Ciao @Alex,
mi avete convinto che, visto l'uso sporadico, non ho bisogno di sostituire
il dlookup().
Comunque sono molto interessato al tuo codice.
Me lo puoi spiegare più in dettaglio?
Cos'è una o un DataList?
Cosa intendi quando dici che la dichiarazione sembra un SOFISMO?
Quando dimensioni rs come DAO.Database è da intendersi come DAO.Recordset?
Di nuovo grazie.
GioVe

 Cosa intendi quando dici che la dichiarazione sembra un SOFISMO?
antiq. sofismo , s. m. [pl. -smi]
1 (filos.) argomentazione solo apparentemente valida, ma in realtà fallace,
in quanto fondata su errori formali o ambiguità linguistiche
2 nell'uso corrente, ragionamento capzioso, che ha lo scopo di ingannare,
raggirare.
Mi sa che non era la parola adatta...
Antonio

 GioVe
DataList è solo il Nome di un Tipo di Variabile
personalizzata, composta da SottoItem.
Ho raggruppato le Tipologie di dati in un unica Variabile
di tipo, che ovviamente ho dichiarato io.
Private Type DataList
  AliquotaOrdinaria as Bouble  (vedi tu il tipo)
  AliquotaPercentuale as Long
  Provvigioni as xxx
  'xxxx---- as yyyy
End type
Potevi chiamarlo in tutti i modi che vuoi anche "AntonioBiso"
anche se forse non è il termine più adatto....! ;-)
Per il Recordset dichiarato come Database.....! Non ho parole
se mi credete è un'errore di scrittura...!
Ciao.
@Alex


"Antonio Biso" <ch...@NOSPAMetruria.net> ha
scritto nel messaggio
news:TkFWc.57944$OH4.1...@twister1.libero.it...

prova se va "superfetazione".
Oh, lo sapevo che avevi il traduttore per parlare
in italiano, però Biso mio, dovresti iniziare
a lasciarti andare e parlare anche senza...
magari per cominciare potresti avvicinarti
all'italiano di karl!!!
Anzi se davanti alle risposte in civitavecchiese
ci metti il numero di capitolo, possiamo vedere
se sul Ng esiste un bilingue come Valentino e
traduciamo anche te!!!
Sia chiaro, vada per la traduzione letterale, ma
non credo ci sia molto da fare per il senso di
quel che dici...
MAssimiliano