[consiglio] DLookup Vs Recordset

di il
7 risposte

[consiglio] DLookup Vs Recordset

Ciao,

sto sviluppando una maschera che contiene diverse caselle combinate che si aggiornano mediante la funzione DLookup che arriva (per ora) ad avere 3 parametri di selezione.

Premesso che ottengo gia il risultato voluto mi chiedevo se in termini prestazionali o per eventuali implementazioni future non sarebbe meglio passare ad una selezione tramite recordset.

Suggerimenti in merito?

7 Risposte

  • Re: [consiglio] DLookup Vs Recordset

    Non sono sicuro di cogliere a pieno il senso della domanda. Soprattutto sul discorso "recordset". DLookup fa il suo dovere di "andare a prendere/guardare" un valore in base a ciò che i suoi argomenti gli suggeriscono. Il mio consiglio è di usare DLookup.
  • Re: [consiglio] DLookup Vs Recordset

    Ciao, scusa mi rendo conto ti non essere stato abbastanza chiaro, ti spiego meglio il problema:
    ho una maschera dove visualizzo una serie di testi da una caselle combinanta:

    Testo1
    Testo2
    Testo3

    Prelevo il testo contenuto nella casella combinata e con la funzione DLookup compilo altri campi.

    Il problema è che nella casella combinata viene visualizzato un testo mentre quando utilizzo DLookup il campo in cui vado ad eseguire il confronto è di tipo numerico collegato poi ad una tabella che contiene effettivamente il testo. Per ovviare al "tipo di dati non corrispondente" ho scritto:
    var1 = DLookup("ID", "Macchine", "Macchina ='" & Forms!Dimensionamento.Tipo & "'")
       
    Angolo_Morto.Value = DLookup("Camma", "Angoli", "Diametro =" & Forms!Dimensionamento.Diametro & " And angolo =" & var1)
    Funziona ma mi sembra un po macchinosa come cosa quindi mi chiedevo se non ci fosse un metodo migliore (utilizzando ad esempio il metodo DAO) per poterlo fare
  • Re: [consiglio] DLookup Vs Recordset

    La premessa è che le Funzioni di Aggregazione sui Domini, DlookUp/Dcount/Dsum... ecc..., sono poco performanti, quindi l'uso di un RS è in qualche modo sempre da prediligere.
    Se poi usi 3 DlookUp per recuperare il valore di 3 Campi dello Stesso Record, direi la risposta verrebbe da se dal momento che con un RS la chiamata è singola.
    Tuttavia credo sia da valutare la RIPETITIVITA' o FREQUENZA di accesso al metodo, nel senso che se la richiesta è a SPOT una Tantum, non mi starei a porre il problema e forse l'uso del DlookUp è molto comodo, viceversa se la chiamata fosse inserito in un Ciclo con decine o centinaia di Esecuzioni... la cosa potrebbe avere un peso differente.
  • Re: [consiglio] DLookup Vs Recordset

    In realta la ripetitività per ora è molto bassa e la ricerca si limita a pochi record mi ponevo il problema in virtu di sviluppi futuri, nel caso optero per il passaggio ad una soluzione diversa

    Per quanto riguarda il confronto la soluzione che ho adottato è corretta o c'è un metodo migliore per bypassare il "tipo non corrispondente"?
  • Re: [consiglio] DLookup Vs Recordset

    bean_bandit ha scritto:


    ...
    Per quanto riguarda il confronto la soluzione che ho adottato è corretta o c'è un metodo migliore per bypassare il "tipo non corrispondente"?
    Ho riletto il thread e non ho capito praticamente niente. Perché devi fare tutti questi DLookup? Ci sono combobox che però usi per compilare caselle di testo... come direbbe Osvaldo: nomi propri (quindi reali) di maschera e controlli, tabella o query associata e relativi campi. Per quanto riguarda le combo: specificare il numero di colonne presenti (non solo quelle visibili) e qual è quella associata.
  • Re: [consiglio] DLookup Vs Recordset

    bean_bandit ha scritto:


    In realta la ripetitività per ora è molto bassa e la ricerca si limita a pochi record mi ponevo il problema in virtu di sviluppi futuri, nel caso optero per il passaggio ad una soluzione diversa
    Basta che vengano esclusi prima i concetti STANDARD di AutoLookUp di Queries sfruttando le Combo... di cui dovresti essere a conoscenza... e che io solo ipotizzo dal momento che non ci descrivi il problema reale, ma solo quello già elaborato dal tuo metodo... quindi diamo per scontato tu abbia le conoscenze minime per evitare i problemi più tipici di chi non ha basi tecniche.

    bean_bandit ha scritto:


    Per quanto riguarda il confronto la soluzione che ho adottato è corretta o c'è un metodo migliore per bypassare il "tipo non corrispondente"?
    Questa cosa devi descriverla... perchè prima di tutto esce questo errore...? A mio avviso hai una difformità di dichiarazione Variabili e Campi... cosa da conoscere a priori.

    Come hai dichiarato le variabili...?
    Che tipo di dato restituisce la Funzione DlookUp secondo te...?
  • Re: [consiglio] DLookup Vs Recordset

    Philcattivocarattere ha scritto:


    Ho riletto il thread e non ho capito praticamente niente. Perché devi fare tutti questi DLookup? Ci sono combobox che però usi per compilare caselle di testo... come direbbe Osvaldo: nomi propri (quindi reali) di maschera e controlli, tabella o query associata e relativi campi. Per quanto riguarda le combo: specificare il numero di colonne presenti (non solo quelle visibili) e qual è quella associata.

    @Alex ha scritto:


    Basta che vengano esclusi prima i concetti STANDARD di AutoLookUp di Queries sfruttando le Combo... di cui dovresti essere a conoscenza... e che io solo ipotizzo dal momento che non ci descrivi il problema reale, ma solo quello già elaborato dal tuo metodo... quindi diamo per scontato tu abbia le conoscenze minime per evitare i problemi più tipici di chi non ha basi tecniche.

    Questa cosa devi descriverla... perchè prima di tutto esce questo errore...? A mio avviso hai una difformità di dichiarazione Variabili e Campi... cosa da conoscere a priori.

    Come hai dichiarato le variabili...?
    Che tipo di dato restituisce la Funzione DlookUp secondo te...?
    In sostanza quello che voglio creare è una sorta di calcolatrice, all'inserimento di tre dati e considerando una una serie di condizioni di default vengono compilati n campi.
    Questi campi possono poi essere modificati con altri valori ed ogni modifica a loro volta cambia alcuni campi. Quindi il DLoockup lo uso associandolo alla proprieta after update per andare a recuperare e ricompilare di volta in volta i campi interessati in funzione dei valori che ho forzato.

    Per com'è strutturata questa parte l'autolookup lo riesco ad usare solo su una casella di testo, le altre sono definite tutte dal mix delle tre condizioni iniziali piu una serie di variabili.

    @Alex ha scritto:


    Questa cosa devi descriverla... perchè prima di tutto esce questo errore...? A mio avviso hai una difformità di dichiarazione Variabili e Campi... cosa da conoscere a priori.
    Questo problema l'ho risolto, era una domanda stupida, a volte mi perdo in un bicchiere d'acqua, semplicemente avevo associato alla casella di riepilogo la query con la sola colonna testo senza ID, modificata l'istruzione SQL visualizzo il testo ma prendo il valore ID e quindi il confronto è numero vs numero, lampadina accesa dopo aver letto il post di Philcattivocarattere, tnx
Devi accedere o registrarti per scrivere nel forum
7 risposte