Newsgroup: it.comp.appl.access
Titolo: anomalia condizione if

ho il seguente problema:
una Maschera1 con origine dati una Query1 che seleziona 5 campi della
Tabella1 e uno della Tabella2;
posso modificare il valore di ogni campo e tutto funziona perfettamente;
quando confermo il tutto ho creato un messaggio che mi chiede se confermo:
la modifica del campo1, del campo 2, ecc. tramite le seguenti condizioni:
mess = "Sei sicuro di voler cambiare:" & vbCrLf
If Me.campo1.OldValue <> Me.campo1 Then
    mess = mess & "il campo1 da " & Me.campo1.OldValue & " a " & Me.campo1 &
vbCrLf
If Me.NEW.OldValue <> Me.NEW Then
    mess = mess & "il campo2 da " & Me.campo2.OldValue & " a " & Me.camnpo2
& vbCrLf
End If
[...] e così per tutti i campi.
Tutto funziona perfettamente se modifico i valori dei 5 campi della
Tabella1, ma se modifico il campo della Tabella2 facendo debug vedo che é
come se ignorasse il comando if ovvero pur non avendo cambiato il valore dei
campi della Tabella1 esegue l'istruzione Then. Inoltre puntando il mouse sul
valore OldValue del campo mi compare il seguente messaggio "operation is not
supported for this type of object"
grazie a chi può aiutarmi
matteo

 End If
[...]
mi sono accorto di un errore nello scrivere il messaggio al newgroup:
ovviemente If Me.NEW.OldValue <> Me.NEW Then é If Me.campo2.OldValue <>
Me.campo2 Then
grazie ancora a chi può essermi di aiuto

 ha scritto nel messaggio
news:bnl8u9$1nc$1...@fata.cs.interbusiness.it...

1) non ho capito: se modifichi il campo della tabella 2 esegue male il
codice per i campi della tabella 1?
2) non hai postato il codice per il campo della tabella 2
3) che tipo di controllo c'è associato al campo della tabella 2? Guarda che
oldvalue è relativo ad un controllo non ad un campo
4) sei sicuro che tu riesci a cambiare i valori dei campi anche se l'origine
record della maschera è una query?
Antonio

 Antonio
 Ti posto il codice completo sperando di essere più chiaro:
Dim risp, mess As String, impon, coniva, spesepost
    Dim db As Database, rcss As Recordset
    mess = "Sei sicuro di voler sgravare cambiando:" & vbCrLf
    If Me.OLD.OldValue <> Me.OLD Then
        mess = mess & "la vecchia lettura da " & Me.OLD.OldValue & " a " &
Me.OLD & vbCrLf
    If Me.NEW.OldValue <> Me.NEW Then
      mess = mess & "la nuova lettura da " & Me.NEW.OldValue & " a " &
Me.NEW & vbCrLf
    End If
   If Me.Sanzion.OldValue <> Me.Sanzion Then
      mess = mess & "la sanzione da " & Me.Sanzion.OldValue & " a " &
Me.Sanzion & vbCrLf
    End If
considera che:
1) Old é un campo della Tabella1; New é un campo della Tabella1; Sanzion é
un campo dell Tabella2.
2) la Tabella1 e la Tabella2 sono origine dati dei record della maschera
Form1 tramite una semplice Select delle due tabelle
3) se modifico dalla maschera il valore di Old e/o New tutto funziona,
mentre se modifico il valore di Sanzion allora ho visto che invece che
saltare il then delle prime 2 istruzioni if le esegue e se vado a vedere in
debug il valore di old.oldvalue e new.oldvalue mi compare quel messaggio di
errore
ciao grazie

ho cercato ancora sulla guida. Può essere che il mio recordset non sia di
tipo snapshot (arabo?!?) e in questo caso cosa devo fare? sull'indice della
guida in linea ho cercato "Recordsets, tipo snapshot"
ciao

 errore
Hai provato a modificare sia old che sanzion?
Secondo me il problema non è che modifichi sanzion, ma che NON modifichi
old.
In quel caso evidentemente il valore oldvalue di old è qualcosa tipo null o
cose strane che rende vera la condizione di confronto.
Fai una prova mettendo dei msgbox con
me.old
me.old.oldvalue
me.old <> me.old.oldvalue
Antonio


Anzitutto grazie per i suggerimenti. Dopo tre giorni ,ci ho messo poco vero?
:-), sembra che una soluzione l'abbia trovata. Ho fatto come mi hai detto,
mettendo dei msgbox, ma l'anomalia era che nella maschera avevo già messo
dei campi in cui inserivo i vecchi valori e i vecchi valori riportati erano
esatti, quando premevo il pulsante conferma e quindi veniva eseguito il
codice era come se quei valori non li trovasse più, ma solo se modificavo il
valore nella tabella2. Cmq dopo inuumerevoli tentativi il tutto é funzionato
mettendo nella Maschera tipo recordsetDynaset (aggiornamenti non coerenti).
Ho guardato nell'help ma non ho capito cosa significhi e soprattutto cosa
comporta di diverso rispetto a quando la Form aveva Dynaset e basta. I
valori nei campi ho visto sono giusti. Potrei avere problemi? ciao matteo