Newsgroup: it.comp.appl.access
Titolo: Istruzione If con campi nulli

Ho un problema..devo fare un controllo tra una data che sta su di
un'archivio e una data di una maschera, il campo data della maschera ha
valore iniziale null, quando faccio il confronto dalle duese ne frega
altamente, ho provato a metterein valore predefinito 0 (in modo da levare il
valore null) ma nel campo data scrive 30/12/1899
Sapete come aiutarmi
Il mio problema è un pò più complesso devo confrontare i campoi della
maschera con i campi della tabella il problema è che alcuni di questi nella
tabella sono nulli e il confronto non me lo fa
Saluti
Marco
** Free nntp server at 
www.x-privat.org
 **

 ha scritto nel messaggio
news:3ee5b7a3$1...@x-privat.org...

nel controllo inserisci:
se da query:
iif(isnull(data1);"dagli un valore che vuoi tu, oppure non eseguire il
calcolo";iif(isnull(data2);"dagli il valore che vuoi tu, oppure non eseguire
il calcolo";CALCOLO))
se da VbA
if isnull(data1) then
    data1 = #valore che vuoi tu#
    'oppure
    goto uscita 'salta i calcoli
elseif isnull(data2) then
    data2 = #valore che vuoi tu#
    'oppure
    goto uscita 'salta i calcoli
else
   CALCOLO
end if

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

 fare se il campo non è Null.
Mi spiego meglio in una maschera ho delle caselle di testo che riempio
manualmente (via codice) con i campi di una tabella.
Il mio problema è che sull'evento del bottone che mi chiude la maschera (sul
click) voglio controllare che i dati che sono sulla maschera sono identici a
quelli che sono sulla tabella, per questo devo fare un controllo tra le
caselle di testo della maschera e i campi della tabella.
Il problema è che un'istruzione del genere:
If tab1!campo1 <> Me.Xcampo1 or tab1!campo2 <> Me.Xcampo2 or tab1!campo3 <>
Me.Xcampo3 then
MsgBox ("i dati della maschera sono stati variati")
endif
Con i campi null non funziona anzi se ---  tab1!campo1 = Me.Xcampo1,
tab1!campo1 = Me.Xcampo1, tab1!campo3 = null e Me.Xcampo3 = "aaaa" mi
dovrebbe dare il messaggio cosa che non fa
Spero di essere stato più chiaro
Grazie Marco
** Articoli inviato tramite i servizi gratuiti di 
www.x-privat.org
 **

 ha scritto nel messaggio
news:3ee6...@x-privat.org...

La prima cosa che sento di dirti è che, se il tuo problema è quello di
sapere se il record corrente è stato modificato, usa la proprietà Dirty
della maschera (vedi help); cioè puoi generare il seguente codice VBA:
If Me.Dirty Then
  MsgBox ("i dati della maschera sono stati variati")
End If
Ciò premesso, per confrontare il valore di una casella di testo con il
valore di un campo del record corrente, devi far ricorso ad una funzione
DLookup; dovresti scrivere una cosa del genere:
If Me!Xcampo1 <> DLookup("campo1", "tab1", "ID=" & Me!ID)
Dove ID è il nome della chiave primaria della tabella tab1.
Se poi ti interessa sapere se campo1 è Null, prova così:
If IsNull(DLookup("campo1", "tab1", "ID=" & Me!ID)) Then
Stai però attento che la condizione si verificherà sia se il campo campo1 è
Null e sia se i criteri dell funzione DLookup non sono soddisfatti.
