Newsgroup: it.comp.appl.access
Titolo: costrutto if ...then - confronto ignorato

Ciao a tutti.
 
Ho questa anomalia in Access 2003.
 
In una maschera, dopo aver inserito un record con 1 solo campo testo e diversi campi numerici, devo valutare se in CampoTesto sono stai immessi dei dati o meno.
Nella tabella sottostante ho impostato il valore predefinito di CampoTesto a "".
La valutazione di CampoTesto è agganciata all'evento di maschera "su corrente".
Nella subroutine ho il costrutto:
 
1  Dim testo as String
2  testo = Me.CampoTesto
3  If testo <>"" then
4      istruzioni...
5  End if
 
Nell'esecuzione del programma, apparentemente il confronto non veniva effettuato.
Ho impostato un punto di interruzione in "Private Sub Form_Current()" e ho rieseguito, usando F8 per eseguire passo passo:
riga 1 viene eseguita,
riga 2 viene eseguita
riga 3 viene eseguita
riga 4 non viene eseguita anche se CampoTesto contiene sicuramente del testo.
 
Come può succedere una cosa simile?
 
Qualcuno ha dritte?
 
Grazie
Stefanone
 
 
 
 
 

It happens that Stefano Vanoli formulated :

Hai salvato il record?
 
Comunque può bastare:
   If Len([CampoTesto]) Then
       ...
   End If
 
Bruno

Grazie, ma non può funzionare nulla xché sono un bestione.
Io effettuo il confronto dopo aver lanciato l'inserimento di un nuovo record, ma prima di editare i campi. 
Ci credo che mi legge sempre CampoTesto = "" !!!
Adesso ho spostato il confronto prima di inserire il record nuovo e va benone
Ciao
Stefanone


grazie per averci aggiornato
per una completezza del thread: in che evento avevi messo il costrutto if? e dopo dove l'hai spostato?
 
Grazie

Ciao pfmarro.
In sintesi, creo un nuovo record direttamente in tabella con:
 
Dim rs As Variant                           dichiaro la variabile
Set rs = CurrentDb.OpenRecordset("Tabella") apro il recordset corrente x Tabella
rs.AddNew                                   forzo creazione record vuoto
rs.Update                                   lo memorizzo
Me.Requery

Ciao pfmarro.
Ignora il messaggio smozzicato delle 16:59 dovuto a uno scatto inconsulto per evitare di versare il caffè sulla tastiera!
 
In sintesi, con l'sevento su click del pulsante "Nuovo record", creo un nuovo record direttamente in tabella con:
 
Dim rs As Variant                           dichiaro la variabile
Set rs = CurrentDb.OpenRecordset("Tabella") apro il recordset corrente x
                                            Tabella 
rs.AddNew                                   forzo creazione nuovo record vuoto
rs.Update                                   lo memorizzo
Me.Requery                                  esco dalla fase di memorizzazione
                                            e salto alla subroutine agganciata
                                            a "su corrente" del form.
Il Requery è indispensabile, perchè così mi viene mostrato il nuovo record vuoto e pronto per essere editato.
Poichè devo valutare il valore di CampoTesto, ho scritto in "su corrente" form:
 
if CampoTesto<>"" then
   istruzioni varie...
end if
 
ma senza considerare che in realtà l'editazione di CampoTesto è come se non fosse ancora avvenuta in "su corrente".
Il valore di CampoTesto è ancora "", cioè il valore predefinito impostato in struttura tabella.
Quando mi sono reso conto di questa lampante verità, ho deciso di spostare il confronto if...then in uno qualunque degli eventi di CampoTesto, che si succedono dopo che il CampoTesto vuoto è stato riempito con dati ("dopo modifica", "prima di aggiornare", "dopo aggiornamento", "su disattivazione", "su uscita".
La mia scelta è stata "su uscita", perchè in fondo mi piacciono le situazioni ben definite, o bianco o nero, i grigi mi fanno venire mal di pancia.
Ovviamente "su uscita" di CampoTesto, mi pdermette finalmente di verificare se effettivamente c'è stata editazione in CampoTesto e così ho risolto il problema.
Et voilà!
 
Ciao
Stefanone