Newsgroup: it.comp.appl.access
Titolo: Vba con Acces97: Funzione Dlooku

Ciao a tutti,
in una form, ho un button con associato un evento. Al click
del bottone, devo controllare se il campo codice inserito  è già presente
in una tabella, se si, apro la tabella per l'aggiornamento, se no imposto
per la scrittura.
Per testare se il record è presente, uso la funzione
Dlookup come segue:  
Trovato_record = DLookup("[Fornitore]",
"Tb_Ricezione", "[Progressivo] = Txt_progressivo ")
dove "trovato record"
è una variabile definita con Dim. Per vedere se il record è già presente o
no uso la funzione IsNull: 
If IsNull(Trovato_record) Then
Converte_Maiuscolo
rst.AddNew
Muovo_msk_file
rst.Update
.........
Peccato che non arriva a testare la variabile Trovato record con IsNull, ma
da il seguente errore nella Dlookup :
"Utilizzo non valido di Null"
Come
posso ovviare al problema??? E' corretto l'utilizzo di ISNULL per
verificare che un record sia già presente o meno?
Grazie mille a tutti.
Ronny
--------------------------------
Inviato via 
http://usenet.iol.it

 "Utilizzo non valido di Null"
Hai verificato se il Campo Fornitore accetta Lunghezza zero?
Ciao Filippo

 ha
scritto: 

In che senso? Io ho
dichiarato la variabile con Dim definendola String, null'altro.
Grazie
mille.
Ronny.


record = DLookup("[Fornitore]","Tb_Ricezione","[Progressivo] = Txt_progressivo ")
Cosě non puň funzionare perchč Txt_Progressivo non credo sia un valore, ma un
riferimento ad un Controllo.
Allora la sintassi corretta diventa nel caso Progressivo sia Stringa:
record = DLookup("[Fornitore]","Tb_Ricezione","[Progressivo]'=" &
Txt_progressivo & "'")
Se invece il Progressivo č Numerico vanno omessi gli APICI:
record = DLookup("[Fornitore]","Tb_Ricezione","[Progressivo]=" &
Txt_progressivo)
@Alex
-- 
Posted from  [146.133.1.30] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

via
Mailgate.ORG Server - 
http://www.Mailgate.ORG
Ciao, ho provato ma non
funziona ancora.
Sempre lo stesso errore. Un altro modo per sostituire la
Dlookup? Con Sql?
tipo RecordCount > 0 , si puo fare?
Grazie.
Ronny


 Ronny
Partendo dal presupposto che deve funzionare credo tu stia omettendo
involontariamente
qualche particolare....!
In ogni caso puoi aprire un RECORDSET con DAO ed utilizzare la Proprietą
FindFrist e in successione Nomatch per verificare l'esistenza del dato:
Dim rs as DAO.Recordset (non sapendo se usi A2000)
set rs=CurrentDb.Openrecordset("NomeTabella")
rs.findFirst (Condizione)
If NoMatch then....


 @Alex
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

---------------------------------------------
Adesso con la prima
sintassi mi da l'errore : "Data type mismatch in criteria expression"
Progressivo è numerico, il campo fornitore che voglio recuperare è stringa
e record è stringa.
Dove canno ??? Porca miseria.....
Grazie mille



E Txt_progressivo che tipo dato ha?


---------------------------------------------
E' una casella di testo
non associata , non gli ho messo nessun formato.
E' un problema???
Grazie
Ronny



Allora vediamo di mettere un po' di ordine.
In base alle informazioni che hai dato sino ad ora, secondo me la sintassi
giusta della DLokkup è la seguente:
Trovato_record = DLookup("[Fornitore]", "Tb_Ricezione", "[Progressivo] =" &
Txt_progressivo)
Però c'è un però.
La variabile Trovato_record non può essere di tipo String ma di tipo
Variant; infatti se la ricerca della DLookup dà esito negativo dovrà poter
contenere Null cosa che non è posibile per una variabile String, riceveresti
un errore da Access.
Inoltre Access ti dà errore anche se usi la funzione IsNull su una variabile
di tipo String: ma che questo succede, se non ricordo male, lo hai già
sperimentato.
Spero che così tu possa risolvere il tuo problema.


 wrote in message
s2qT7.5185$7%3.13...@twister1.libero.it...

FUNZIONA . MITICO.
Davvero grazie mille .
Ronny.