Newsgroup: it.comp.appl.access
Titolo: Dlookup

Ho provato ad usare la funzioneDLookup nell'esempio  vorrei ottenete il
contenuto del campo GIACENZA (intero lungo) dellla tabella PRODOTTI  quando
il campo CODICE_PRODOTTO (testo  e chiave primaria della tabella prodotti)
contiene il valore 1. l'errore che mi viene dato è il seguente:
"Tipi di dati non corrispondenti nell'espressione del criterio " Errore di
runtime 62506"
Grazie per l'aiuto. Simone
************************************************
Dim VARX As Long, CODICE As String
CODICE = 1
VARX = DLookup("[GIACENZA]", "PRODOTTI", _
"[CODICE_PRODOTTO] = " & CODICE)
*************************************************

 ha scritto nel messaggio
news:Jgpl9.2593$dj7....@tornado.fastwebnet.it...

Ciao Simone, l'errore è dovuto al fatto che il campo CODICE_PRODOTTO è di
tipo Testo quindi devi racchiuderlo tra singoli apici. Modifica il tuo
codice in ..
VARX = DLookup("[GIACENZA]", "PRODOTTI", _
"[CODICE_PRODOTTO] = '" & CODICE & "'")
Ciao Giorgio.

 ha scritto nel messaggio
news:an59p3$7vd$1...@lacerta.tiscalinet.it...

molte grazie


Ciao Maurizio quello che dici a riguardo del post di poche ore fa è vero ma
può sfuggire in quanto il codice di errore segnalato è diverso (errore di
run-time 64479) e la risposta data da Alessandro può non essere intuita
immediatamente.
Ciao Giorgio.


A questo proposito apro una parentesi (solo per rompere un po' le
palle).
Non voglio essere provocatorio ma solo aprire una discussione.
Il mio prof di Sistemi Informativi diceva sempre che gli unici campi
numerici in un database devono essere quelli sui quali si prevede (o
sembra logico) fare dei calcoli (somme, prodotti, sottrazioni).
Per dirla in breve i codici dei prodotti, i numeri di cartella clinica,
i riferimenti di un archivio devono essere trattati in modo testuale
anche quando si tratta di soli numeri.
A patto di una maggiore occupazione di spazio e la complicazione di
alcune funzioni, quali autoincrementare un codice, sosteneva che il
vantaggio era innegabile e citava sempre l'esempio di quando il
responsabile di turno decideva che bisognava aggiungere qualcosa
all'inizio di ogni codice (una lettera, un'altro codice) per creare una
codifica diversa: con il numerico erano ca..i amari mentre con il testo
bastava una query di aggiornamento e il gioco era fatto.
Dicevo, giusto per rompere un po' le palle.
Bye
giaconet

 ha scritto nel messaggio
news:an74s4$bl1ru$1...@ID-71483.news.dfncis.de...

***************
Adesso devo fare una ricerca con una chiave composta da due campi PRODOTTO
(Testo) e DATA (Data) per ottenere un CONSUMO (Numerico) vedi esempio.
L'errore dato è; "Errore di runtime '13'  , tipo non corrispondente".
Evidentemente non ho capito bene la sintassi del DLookup
Grazie per l'aiuto
Simone
___________________________________________________________________
Me.CONSUMO = DLookup("[CONSUMO]", "PREVISIONE_CONSUMI_MESE", _
 "[PRODOTTO]+[DATA] =  '" & Me.PRODOTTO + Me.DATA & "'")

  "[PRODOTTO]+[DATA] =  '" & Me.PRODOTTO + Me.DATA & "'")
Prova con:
Me!CONSUMO = DLookup("[CONSUMO]", "PREVISIONE_CONSUMI_MESE", _
"PRODOTTO =" & Chr$(34) & Me!PRODOTTO & Chr$(34) & _
" And DATA=#" & Format(Me!DATA, "mm/dd/yyyy") & "#")
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:OIGl9.28097$e31.6...@twister2.libero.it...

Ho provato ma non funziona bene: se vi sono due PRODOTTI con data diversa
prende sempre il  CONSUMO del primo prodotto. Grazie

 ha scritto nel messaggio
news:vCFl9.3403$dj7....@tornado.fastwebnet.it...

Ciao Simone,tieni presente che in Access le date sono memorizzate con il
numero di giorni trascorsi dal 01/01/1900,  per comodità io passo sempre la
data convertita in numero alle query o ai Dlookup Dmax Dsum ecc, in questo
modo non devi preoccuparti del formato data utilizzato dal sistema
operativo. (Tieni presente che questa regola non funziona se utilizzi
Microsoft SqlServer o Oracle ecc, i server Sql hanno loro funzioni di
conversione per i vari tipi di dati)
Prova in  questo modo.
VARX = DLookup("[GIACENZA]", "PRODOTTI", _
"[CODICE_PRODOTTO] = '" & Me!PRODOTTO & "' AND [DATA]=" &
Clng(Datevalue(Me.DATA)))
Ciao Giorgio.

 >
Correzione!!  (comunque il concetto è lo stesso)
Me.CONSUMO = DLookup("[CONSUMO]", "PREVISIONE_CONSUMI_MESE", _
 "[PRODOTTO] =  '" & Me.PRODOTTO & "' AND DATA=" & Clng(Datevalue(Me.DATA)))
Se invece devi sommare il campo consumo per lo stesso prodotto sino alla
data desiderata...
Me.CONSUMO = DSum("[CONSUMO]", "PREVISIONE_CONSUMI_MESE", _
 "[PRODOTTO] =  '" & Me.PRODOTTO & "' AND DATA<=" &
Clng(Datevalue(Me.DATA)))
Ciao Giorgio.

 ha scritto nel messaggio
news:an7i8o$aja$1...@lacerta.tiscalinet.it...

Giorgio ho usato il tuo esempio:
Me.CONSUMO = DLookup("[CONSUMO]", "PREVISIONE_CONSUMI_MESE", _
  "[PRODOTTO] =  '" & Me.PRODOTTO & "' AND DATA=" &
Clng(Datevalue(Me.DATA)))
ma non ottengo un risultato corrretto del CONSUMO. Provo a rispiegare:
I campi della tabella PREVISIONE_CONSUMI_MESE sono CONSUMO (numero) PRODOTTO
(testo) e DATA (data).
Con DLookup la chiave di ricerca è data da due campi PRODOTTO e DATA (nel
mio esempio fatto per prova sono ME.PRODOTTO e ME.DATA) .
Mel tuo esempio non mi hai chiarito come usare le date ma  vedo solo il
campo [PRODOTTO] e la data?
Grazie
Nicola

 ha scritto nel messaggio
news:aiIl9.3874$dj7....@tornado.fastwebnet.it...

Ciao Simone, il terzo parametro della funzione Dlookup (come ben saprai) è
il criterio di ricerca, se per esempio cerchi il [PRODOTTO]  "1"  in  [DATA]
29/09/2002 il parametro di ricerca passato alla funzione dal mio esempio è
"[PRODOTTO]='1' AND [DATA]= 37528", Dlookup ti rende il primo record della
tabella PREVISIONE_CONSUMI_MESE che soddisfa le condizioni Prodotto='1' e
(AND) data = 29/08/2002, Clng(Datevalue(Me.Data)) converte la data in
numero, controlla la tabella PREVISIONE_CONSUMI_MESE deve contenere il
record cercato in altro caso la funzione Dlookup rende NULL.
Se il risultato che ottieni non è quello atteso il problema è di altra
natura.
Ciao Giorgio.

[CUT  Giorgio MESSAGE]
Ho trovato l'errore la data era registrata con il formato "m" perchè mi
ineressava avere solo il mese ho messo il formato gg/mm/aaa è funziona
perfettamente. Grazie
Simone

 ha scritto nel messaggio
news:ueHl9.3588$dj7....@tornado.fastwebnet.it...

Per scrupolo ho provato e a me ha funzionato bene gestendo anche prodotti
uguali con data diversa.
Ad ogni buon conto, se vuoi usare una formulazione piů vicina a quella che
hai indicato tu, prova con:
Me!CONSUMO = DLookup("[CONSUMO]", "PREVISIONE_CONSUMI_MESE", _
"PRODOTTO & Format(DATA, 'yyyymmdd')=" & _
Chr$(34) & Me!PRODOTTO & Format(Me!DATA, "yyyymmdd") & Chr$(34))
Comunque DATA č un nome riservato di Access, ti sconsiglio quindi di usarlo
come nome di un tuo oggetto: a volte genera inspiegabili errori.


 come nome di un tuo oggetto: a volte genera inspiegabili errori.
    Scusa Roberto se insisto ancora una volta ma questa cosa proprio non
riesci a farmela andare giu'...
    Dove sta scritto che "DATA" e' una parola riservata?
    E' possibile prendere visione di 'sto codice con gli inspiegabili
errori?
    Nota bene: non dico che hai torto, solo vorrei capire...
--
Ciao :-)
Maurizio
--------
?SPQR(C)
 X
--------

     Nota bene: non dico che hai torto, solo vorrei capire...
E' solo frutto di una mia disgraziata esperienza; l'help indica come parola
riservata Date e non Data. Resta il fatto che in uno dei miei primi database
non riuscivo a venir fuori da una inspiegabile segnalazione di errore fino a
quando ho cambiato nome ad un oggetto chiamato Data. Pensi che sia una
coincidenza? Non ho elementi sufficienti per escluderlo: resta il fatto che
Data da allora non lo uso piů per i miei oggetti, ed invito gli altri a fare
altrettanto.


 E' solo frutto di una mia disgraziata esperienza;
    Capisco anche troppo bene.
    (-: Io pero' piu' che superstizioso sono superstizzoso. :-)


 --------
--
