Newsgroup: it.comp.appl.access
Titolo: uso funzione dlookup

Salve,
Vorrei utilizzare la funzione Dlookup come regola di convalida per i valori
inseriti in una maschera, cioè una volta inserito un valore vorrei
verificare se questo rientra tra quelli ammissibili elencati in un'altra
tabella. L'elenco a discesa con la proprietà "solo in elenco" impostata a si
non è sufficiente in quanto alcuni utenti potrebbero non inserire i dati
direttamente in access bensì riempire il tutto con un copia/incolla e a
questo punto non riesco a verificare + nulla.
Mi sembra che la funzione in oggetto sia quella che fa al mio caso ma, a
parte il fatto che non riesco ad utilizzarla, se avete anche altre
soluzioni.....
Grazie
Max

 ha scritto nel messaggio
news:DVYl6.49985$k55.1...@news.infostrada.it...

Non riesco a capire cosa intendi quando dici che "alcuni utenti potrebbero
non inserire i dati direttamente in access bensì riempire il tutto con un
copia/incolla": dove e come? Sembrerebbe non utilizzando la tua maschera,
perchè in questo caso potresti mettere le cose in modo che possa farlo
solamente con la tua casella combinata per la quale attiveresti a Si la
proprietà "Solo in elenco".
Comunque, puoi sempre crearti una query che, sempre tramite la funzione
DLookup, verifichi la congruità del campo in tutti i record e ti evidenzi
quelli in cui esiste l'anomalia; la query la potresti aprire "Su apertura" o
"Su chiusura" della tua maschera. In alternativa alla query puoi aprire un
recordset sull'oggetto che è origine record della tua maschera.
Penso però che devi comunque passare per la funzione DLookup. Perché non
riesci ad utilizzarla?
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 wrote in message
0u6m6.52853$k55.1...@news.infostrada.it...

Impostando la proprietà elenco a discesa della maschera a "solo in elenco =
sì" mi cautelo in caso di immissione diretta di dati nella maschera stessa.
Tuttavia i dati da immettere sono dati contabili e presumibilmente
proverranno da elaborazioni fatte in excel. Perciò ci sarà qualche utente
che copia/incolla pezzi del suddetto foglio in access e così non riesco a
impedire cavolate. Io vorrei bloccare istantaneamente l'utente in caso di
errore, comunque se non ci riuscirò la tua idea della query a posteriori mi
pare valida.
Tra l'altro ho riscontrato un comportamento strano della funzione dlookup.
La maschera di immissione (in modalità foglio dati) ha tre campi, di cui i
primi due (codice contabilità e centro di costo) devono essere "controllati"
e il terzo è l'importo.
Se uso la seguente espressione   =DLookUp("[CodCogen]";"tCogen") Is Not Null
e una simile (=DLookUp("[cdc]";"tCdc") Is Not Null) nel secondo campo, posso
incollare sul record quello che voglio e access non protesta! Se invece
cambio la visualizzazione in modalità "maschera continua" (e non + foglio
dati) incollando il medesimo record access riesce a controllare solo il
codice contabilità (il primo) eliminandolo e inserendo nella prima e seconda
cella il contenuto destinato alla seconda e terza! e tutto senza messaggio
di errore, nonostante io abbia messo il messaggio nella riga successiva
delle proprietà. Ti è mai capitato un comportamento simile?
Ciao & grazie
Max

 ha scritto nel messaggio
news:JJ7m6.53634$k55.1...@news.infostrada.it...

Non hai specificato dove hai usato le funzioni DLookup: nella propietà
"Valido se" di un controllo?
Vediamo comunque di dare uno sguardo a come hai scritto le due funzioni
DLookup; in ambedue i casi le hai scritte senza indicare i criteri di
ricerca; ora, mentre può avere significato non indicare i criteri per altre
funzioni di aggragazione quali DSum o DCount, a mio avviso non ha alcun
significato farlo per una DLookup, specie per risolvere un problema come il
tuo.
Se non indichi i criteri, la DLookup ti restituirà SEMPRE e a caso un valore
contenuto nel campo CodGen (o cdc) di un qualsiasi record presente nella
tabella tCogen (o tCdc); la funzione ti restituirà il valore Null solo nel
caso in cui la tabella tCogen (o tCdc) sia vuota.
Comunque, se la tua tabella può essere manipolata anche aprendola
direttamente, o adotti la soluzione che ti ho suggerito nel mio precedente
messaggio, oppure le DLookup scrivile nelle proprietà di campo "Valido se"
dei due campi nella struttura della tua tabella; così facendo Access si
rifiuterà di accettare, per i due campi, valori che violino quanto stabilito
nelle proprietà "Valido se", e questo a prescindere dai magheggi
dell'operatore o se invece adoperi la procedura canonica di modificare i
dati tramite la tua maschera.
Resta il fatto che le due funzioni DLookup debbono essere scritte con
esplicitati i criteri di ricerca; naturalmente ciò è vero anche se deciderai
di adoperarle in una query.
Spero di essere stato chiaro.


ok funziona, grazie
Max