Newsgroup: it.comp.appl.access
Titolo: Confronto di una dlookup con più valori

Salve a tutti,
è un pò di tempo che mi sto facendo una domanda sull'utilizzo delle
dlookup all'interno di blocchi condizionali.
E' possibile scrivere in un campo di un report una cosa del tipo
SE Dlookup(...) = 1 OR 2 ALLORA...
??
Fino ad ora mi sono limitato a riscrivere più volte la dlookup: se
DL()=1 or DL()=2.
Solo che ultimamente mi sono trovato alle prese con molti più valori
da confrontare (ora dovrei confrontare 8 dlookup differenti ognuna con
10 valori e scrivere 80 dlookup per calcolare un singolo campo mi
sembra un pò esagerato)
Ho provato con l'OR come sopra e ad usare la condizione is in () come
faccio nelle query ma non c'è stato verso.
Suggerimenti?
Grazie.

 ha scritto nel messaggio
news:1174494590.8...@b75g2000hsg.googlegroups.com...
Salve a tutti,
è un pò di tempo che mi sto facendo una domanda sull'utilizzo delle
dlookup all'interno di blocchi condizionali.
E' possibile scrivere in un campo di un report una cosa del tipo
SE Dlookup(...) = 1 OR 2 ALLORA...
??
Fino ad ora mi sono limitato a riscrivere più volte la dlookup: se
DL()=1 or DL()=2.
Solo che ultimamente mi sono trovato alle prese con molti più valori
da confrontare (ora dovrei confrontare 8 dlookup differenti ognuna con
10 valori e scrivere 80 dlookup per calcolare un singolo campo mi
sembra un pò esagerato)
Prima considerazione:
quando l'espressione da valutare è molto complessa, invece di ficcarla
nell'origine dati del controllo, scomodo da gestire e visualizzare, utilizza
una bella funzione.
=fun()
che restituisce il valore desiderato a seconda di tutti i test che ti
vengono in mente.
Seconda considerazione:
non è carino utilizzare tante Dlookup, perchè ogni volta è un'interrogazione
che ti porta via tempo sull'elaborazione.
Sarebbe opportuno trovare altre strade.
Tra l'altro, passando il tuo al codice, potresti sfruttare i recordset e
muoverti all'interno con più rapidità.
Dipende poi dai test che devi eseguire...
Antonio

 Antonio
Quello che dovrei fare è andare a vedere se in una tra più colonne di
una tabella è presente uno tra diversi valori.
Utilizzando la strada delle funzioni (e quindi del recordset) dici che
la cosa si velocizzarebbe? Apro un recordset e per ogni record vado a
controllare i campi che mi interessano.
Il problema che ci vedo è che dovre aprire un sacco di record dato che
il controllo devo farlo su 5 caselle per ogni riga del report.
Comunque la risposta alla mia domanda originale l'ho trovata
banalmente ieri sera poco aver scritto il messaggio, ovvero:
if DL() in (1;2;3;4) then ...
In questo modo la dlookup dovrebbe essere eseguita una volta sola
(almeno spero)

 Antonio
Quello che dovrei fare è andare a vedere se in una tra più colonne di
una tabella è presente uno tra diversi valori.
Utilizzando la strada delle funzioni (e quindi del recordset) dici che
la cosa si velocizzarebbe? Apro un recordset e per ogni record vado a
controllare i campi che mi interessano.
Esatto
Il problema che ci vedo è che dovre aprire un sacco di record dato che
il controllo devo farlo su 5 caselle per ogni riga del report.
mbeh?
Comunque la risposta alla mia domanda originale l'ho trovata
banalmente ieri sera poco aver scritto il messaggio, ovvero:
if DL() in (1;2;3;4) then ...
In questo modo la dlookup dovrebbe essere eseguita una volta sola
(almeno spero)
Sì, ma io comunque farei una funzione che fa quello e dentro farei
app = DL
if app = 1 or app = 2 ... ecc
la DL è eseguita cmq una sola volta
Antonio

 mbeh?
Intendevo recordset, aprendo molti recordset non si rallenta un pò
l'esecuzione?

 mbeh?
Intendevo recordset, aprendo molti recordset non si rallenta un pň
l'esecuzione?
Ma ogni casella ha un recordset diverso su cui testare?
Eh oh, se č cosě, poco ci sta da fare
Forse una bella normalizzazione del database in modo da avere le
informazioni disponibili in altra maniera
Antonio

 Ma ogni casella ha un recordset diverso su cui testare?
No, il recordset è sempre quello, ma ogni chiamata alla funzione che
deve eseguire il controllo ne crea uno nuovo o sbaglio?

 ha scritto nel messaggio
news:1175101835....@l77g2000hsb.googlegroups.com...


E allora?
Una volta aperto scorrerlo con le move pesa meno che rieseguire la query
Antonio

Altra cosa: se devo confrontare una variabile con più valori, esiste
un modo diverso da
var=1 OR var=2 OR var=3 ... ? (Quando i valori da testare sono 26
comincia a essre una cosa un pò seccante)

 ha scritto nel messaggio
news:1175102026.2...@o5g2000hsb.googlegroups.com...

Infatti per questo esiste il costrutto Select ... Case...
Antonio

 Antonio
Cioè 26 case?
O posso scrivere
case 1 OR 2OR 3:

 ha scritto nel messaggio
news:1175182449.9...@n59g2000hsh.googlegroups.com...


scusami eh,
visto che non è un problema concettuale...
perchè non provi a dare uno sguardo all'help sul costrutto e a vedere gli
esempi dove ti si chiarirà tutto?
Antonio

Scusa, hai ragione tu, solo mi stavo abituando troppo a chiedere
anzichè cercare...