Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Sintassi DLookup

92 views
Skip to first unread message

francodel...@gmail.com

unread,
Nov 7, 2015, 3:36:21 AM11/7/15
to
ciao a tutti

non riesco a trovare l'errore in questo codice:

If DLookup("IdProdotto1", "TrovaDuplicatiTbImpostazioni", "IdCliente1= " & CboCliente & " And " & "IdPrdotto1= " & CboProdotto) Then

errore 2001

ed è in questo punto: & " And " &

grazie

vlad...@libero.it

unread,
Nov 7, 2015, 7:30:32 AM11/7/15
to
Ciao,
la sintassi giusta è:
If DLookup("IdProdotto1", "TrovaDuplicatiTbImpostazioni", "IdCliente1= " & CboCliente & " And IdPrdotto1= " & CboProdotto) Then

Vladimiro

francodel...@gmail.com

unread,
Nov 7, 2015, 11:51:19 AM11/7/15
to
grazie

@Alex

unread,
Nov 11, 2015, 1:58:04 PM11/11/15
to
La sintassi giusta è questa:

Dim varLK As Variant
varLK=DLookup("IdProdotto1", "TrovaDuplicatiTbImpostazioni", "IdCliente1= " & Me!CboCliente.Value & " And IdPrdotto1= " & Me!CboProdotto.Value)

If NOT VarLK Is Null Then

Else

End If

Per chi sa cosa significa fare DEBUG, non serve spiegare perchè questa è la sintassi corretta..., per gli altri basta chiedere...

@Alex

francodel...@gmail.com

unread,
Nov 11, 2015, 2:32:05 PM11/11/15
to
Grazie Alex

vlad...@libero.it

unread,
Nov 12, 2015, 12:50:40 PM11/12/15
to
Il giorno mercoledì 11 novembre 2015 19:58:04 UTC+1, @Alex ha scritto:
Ciao @Alex,
a me invece servirebbe proprio sapere come fare il debug, nel senso che oltre ad inserire il punto di interruzione sulla riga e far partire la routine non saprei come altro agire.

Sono anni che uso la seguente riga di codice senza aver mai riscontrato problemi:
stLinkCriteria = "Id=" & Me!CboRicerca

mentre, come hai fatto notare, dovrebbe essere:
stLinkCriteria = "Id=" & Me!CboRicerca.Value

Vladimiro

ps
che dici, apro un altro thread?

@Alex

unread,
Nov 15, 2015, 7:59:46 AM11/15/15
to
Non confondere il DEBUG con la sintassi strutturalmente più corretta...!
Molti sviluppatori hanno concetti anche personali, io sono dell'idea che rendere ESPLICITI riferimenti sia sempre fonte di valore aggiunto...!

Così, è bene individuare a colpo d'occhio le properties... e la proprety VALUE è uno di questi esempi.
Se ti trovassi a sviluppare CLASSI ed ad usarle, potrebbe essere relativamente evidente di cosa parlo.
Un controllo o un'oggetto di fatto sono usabili come classi, l'istanza avviene in modo grafico come un OCX...

Detto ciò ognuno si orienta come crede.


Per il DEBUG invece, la stringa che hai scritto non è DEBUGGABILE...
Se metti il punto di interruzione non ti rendi conto se la Funzione DLOOKUP
ha elaborato il dato correttamente... per questo, lo sviluppo deve contenere l'idea di riuscire a determinare le veriabili ed il valore delle elaborazioni.

In questo modo se metti un BreakPoint su if ed accedi all'elenco VARIABILI oppure anche mettendo il Mouse sulla variabile alla riga prima, ottieni la valorizzazione del dato... e ti rendi conto se poi la Condizione IF si comporta in modo corretto.

Dim varLK As Variant
varLK=DLookup("IdProdotto1", "TrovaDuplicatiTbImpostazioni", "IdCliente1= " & Me!CboCliente.Value & " And IdPrdotto1= " & Me!CboProdotto.Value)

>>> If varLK....

E' evidente che dal punto di vista dell'ottimizzazione del codice è meglio OMETTERE dichiarazioni non necessarie... ma il DEBUG è sempre prioritario...

Chiaramente sono spunti, come istituire un LOG Centralizzato al quale far derivare tutti gli errori delle Function/Sub con i dati per poter ricostruire il problema e quant'altro serve per trovare le anomalie...

Saluti
@Alex

vlad...@libero.it

unread,
Nov 15, 2015, 3:27:58 PM11/15/15
to
Ok, perfetto!
Grazie Vladimiro
0 new messages