Newsgroup: it.comp.appl.access
Titolo: Dlookup e problermi di visualizzazione

A seguito di un suggerimento avuto sul newsgroup
ho creato una funzione, che  dovrebbe, dopo aver inserito il nome  nel
contollo "Autista" della sottomaschera "MscAutista2", controllare se
ci sono autisti già presenti ed avvisarmi  a video, inoltre dovrebbe
visualizzare il record per permettermi un' eventuale modifica.
Private Sub Autista_Exit(Cancel As Integer)
If Not IsNull(DLookup("IdAutista", "TblAutista2", "IdAutista=" &
Me!IdAutista)) Then MsgBox Me!Autista & "Nominativo già presente in
elenco"
Cancel = True
Me!Autista.SetFocus
End Sub
Il problema è che qualsiasi Autista inserisco nel controllo della
sottomaschera MscAutista2 il sistema mi dice che è già in elenco,
perchè?  
inoltre non posso fare nulla perchè è tutto bloccato e sono costretto
a chiudere la maschera, dopo aver chiuso innumerevoli finestre di
avviso, relative alla procedura suddetta.
 
Vi spiego cosa ho fatto
In realtà questo DB mi serve  registrare l'ingresso e l'uscita
nell'arco di 24 ore, quindi ho creato due maschere una principale
"MscAutista" , che fa riferimento d un tabella TblAutista, con un
campo IdAutista e due campi datainizio e datafine. 
Una seconda Maschera "MscAutista2" (sottomaschera), che fa riferimento
alla tbella TblAutista2, nella quale ci sono numerosi campi tra i
quali "Autista", "orafine" , "orainizio" e "IdAutista" che è il
controllo di riferimento delle due maschere ed è il campo che mette in
relazione le due tabelle.
Il mio scopo è 
1) cercare al momento dell'inserimento se ci sono duplicati che
soddisfano una condizione, cioè il controllo "orafine" della
MscAutista2 deve essere null (vuoto)
2) Se viene trovato questo record devo poterlo modificare nel campo
orafine, quindi il DB si posizionerà sul record ed mi permetterà di
modificarlo.
Credo di aver individuato un errore :
Secondo me ho sbagliato  relazionare le due tabelle, ma dopo svriti
tentativi mi rivolgo  voi.
Volendo ottenere un elenco delle movimentazioni efettuate in un arco
temporale che va dalle 06.00 alle 05.00 del giorno successivo (24 ore
circa) quindi due giorni, ho pensato di creare una maschera ed una
sottomaschera collegata in modo da ottenere con una query ed in un
report l'elenco che mi interessa.
 
Grazie di tutto.
 

 perchè?
Non vorrei mai che dopo l'evento exit il DlookUp riuscisse già a vedere il valore che ha immesso. 
praticamente dice che già esiste perchè vede la stessa cosa che hai appena digitato.
Prova a fare lo stesso utilizzando l'evento BeforeUpdate. Almeno con questo evento il valore del 
controllo deve ancora essere registrato.
Fammi sapere
Michele



Ho già provato ed in questo modo non effettua la ricerca e mi fa
inserire il record senza avvisarmi che è un duplicato.
Hai un'altra soluzione da suggerirmi?
Grazie cmq.


Io ho provato a capire la dinamica di funzionamento della tua maschera, ma stento a riuscirci. Se 
magari mi fai un esempio di inserimento autista con autista già esistente (che ne so, scrivi un pò 
di record e il nuovo record che dovrebbe avvisare del duplicato), nomi dei controlli e relativi 
campi associati, nome sottomaschera e nome maschera, e vedo se posso suggerirti qualcosa.
Se non ha funzionato una cosa del sito comune, può essere che la tua situazione vada presa da sola. 
Non sto neanche qua a spararti soluzioni, evidentemente c'è un concetto di fondo da capire meglio da 
parte mia, o un problema di base da parte tua.
Michele 



Scusa il ritardo.
Il DB mi serve  per registrare l'ingresso e l'uscita nell'arco di 24
ore, quindi ho creato due maschere una principale
"MscAutista" , che fa riferimento ad un tabella TblAutista, con un
campo IdAutista e due campi datainizio e datafine. 
Una seconda Maschera "MscAutista2" (sottomaschera), che fa riferimento
alla tbella TblAutista2, nella quale ci sono numerosi campi tra i
quali "Autista", "orafine" , "orainizio" e "IdAutista" che è il
controllo di riferimento delle due maschere ed è il campo che mette in
relazione le due tabelle.
Il mio scopo è 
1) cercare al momento dell'inserimento se ci sono duplicati che
soddisfano una condizione, cioè il controllo "orafine" della
MscAutista2 deve essere null (vuoto)
2) Se viene trovato questo record devo poterlo modificare nel campo
orafine, quindi il DB si posizionerà sul record ed mi permetterà di
modificarlo.
Credo di aver individuato un errore :
Secondo me ho sbagliato  relazionare le due tabelle, ma dopo svriti
tentativi mi rivolgo  voi.
Volendo ottenere un elenco delle movimentazioni efettuate in un arco
temporale che va dalle 06.00 alle 05.00 del giorno successivo (24 ore
circa) quindi due giorni, ho pensato di creare una maschera ed una
sottomaschera collegata in modo da ottenere con una query ed in un
report l'elenco che mi interessa.
Spero di essere stato chiaro.
Ciao e grazie.


Guarda, staserta sono di corsa, e domani sarň full di impegni, domenica ho un pranzo. Non appena mi 
sono liberato o avrň un pň di tempo, vedrň di risponderti con calma e vediamo di risolvere, sempre 
che qualcuno non voglia inserirsi.
Buon fine settimana
Michele 


Ti ringrazio della disponibilità ed attendo tue notizie.