Newsgroup: it.comp.appl.access
Titolo: Differenze tra funzione DLookup e Me.Controllo.Column()

Ciao a tutti.
mi chiedevo:
se devo ricavare dei valori da una tabella partendo da un dato
    es. CLIENTE(Nome, Cognome) da CLIENTE(IdCliente)
per riempire automaticamente i campi di una maschera
č meglio fare:
       - creare un combo combo_IDCLIENTE
       - come ORIGINE DATI della combo_IDCLIENTE mettere l'istruzione
       - SELECT idcliente, nome, cognome from CLIENTI
       - Nell'evento combo_IDCLIENTE _AfterUpdate assegnare il valore di
NOME a Me.ControlloIDCliente.Column(1) ecc.
oppure:
       - creare un combo combo_IDCLIENTE
       - come ORIGINE DATI della combo_IDCLIENTE mettere l'istruzione
       - SELECT idcliente from CLIENTI
       - nell'origine dati del controllo TXT_NOMECLIENTE utilizzare la
funzione DLOOKUP con la condizione data dal valore          di
combo_IDCLIENTE
Il risultato č indubbiamente lo stesso ma mi chiedo:
    qual'č il metodo migliore in termini di prestazioni?
    la scelta del metodo dipende dal numero dei controlli da aggiornare?
Supponendo di avere 10 controlli (incluso combo_IDCLIENTE) utilizzando
Dlookup ACCESS effettua 10 interrogazioni distinte (una per ogni controllo),
mentre non utilizzandolo si mantiene in memoria 10 campi sul controllo
combo_IDCLIENTE.
In definitiva, visto che sto notando un degrado di prestazioni del mio Db,
cosa č meglio usare??
marco


Se devo utilizzare 10 dlookup prendo in condiderazione la possibilità di
inserire una sottomaschera che filtrerò in base al valore delle combo. Per
me 10 Dlookup su una form sono tante; ne reggo massimo 3...
Ciao.
--
Sergio MAZZA


Io utilizzo una sola select e via codice assegno il valore agli altri campi.
Non sono molto pratico di sottomaschere ma le posso iniziare a prendere in
considerazione.
Avrei un miglioramento di prestazioni?
marco

 marco
Il miglioramento delle prestazioni dipende anche da come progetti le
maschere. Se troppo cariche di informazioni che vengono lette da più tabelle
chiaramente rallentano l'operatività dell'utente. Io sono convinto che
razionalizzare le informazioni, magari utilizzando qualche maschera in più,
separando le tipologie di dati ne guadagna l'utente e anche tu nella
gestione del progetto.
Facciamo un esempio; tu stai guardando una form che visualizza una fattura
di un cliente. E' chiaro che dall'anagrafica del cliente ti interessano solo
i dati per emettere la fattura; se voglio sincerarmi che il cliente
selezionato dalla combo sia quello giusto cliccherò su un bottoncino posto a
lato della combo che mi aprirà una form con i dati rimanenti.
Io la vedo così...
Ciao.
--
Sergio MAZZA

 combo_IDCLIENTE.
La combo, piuttosto che 10 dlookup.
Teoricamente almeno, poi magari la differenza, soprattutto se le tabelle
sono scariche, neanche la senti...
Antonio

 marco
E' indiscussa l'utilità delle funzioni di aggregazione sui dominii (DLookup,
DSum, DCount ecc.), ma è altrettanto indiscusso il loro effetto dirompente
nelle performance del database che induce ad usarle con moooolta
discrezione: sicuramente, quando esistono soluzioni alternative (come nel
tuo caso), non usarle e te lo dice uno che se non esistessero le avrebbe
inventate lui.
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 Sergio MAZZA
Se ti fa piacere Sergio io te lo appoggio.................!
Nel senso che concordo con la tua valutazione....! Che avevi capito..??
@Alex.


Concordo anch'io sull'inutilità di creare delle maschere iper piene (che
risultano poi di difficile interpretazione).
Per la gestione degli intestatari ad esempio, utilizzo solo nome+cognome o
nome ditta che metto come CAPTION su un pulsante; cliccandoci sopra se ne
hanno i dettagli.
la mia domanda era piuttosto relativa al fatto che, essendoci molti modi per
arrivare ad una soluzione, mi chiedevo semplicemente quali fossero i
vantaggi/svantaggi delle due soluzioni.
marco


Per un amico... questo ed altro... (il trenino no però!)
Ciao.
--
Sergio MAZZA