Newsgroup: it.comp.appl.access
Titolo: Ripetere il valore del record precedente

Ho l'esigenza di riportare su un nuovo record in una form, alcuni valori già
inseriti nei rispettivi campi del record precedente, in modo da evitare una
nuova digitazione di un valore che al 90% sarà identico.
Ho quindi usato il metodo descritto nel sito comune, nella sezione forms,
che mi consiglia di inserire il seguente codice nell'evento BeforeUpdate del
controllo che mi interessa (nell'esempio txtanno):
Me.txtanno.DefaltValue = " ' "& Me.txtanno.Value & " ' "
il codice funziona egregiamente però solo nel caso di valori che vengano
modificati o inseriti al momento, mentre mi da il controllo vuoto nel caso
(ed è quello che a me capita maggiormente) io voglia riportare dei valori
già esistenti nella maschera (che punta sull'ultimo record).
Specifico che, dato che ho settato la maschera con "pulsanti di spostamento
= SI",  l'inserimento del nuovo record viene gestito direttamente dal
pulsante *
Grazie in anticipo per l'aiuto.
Carmix
--
Una volta ho bevuto un amaro così schifoso che anche sull'etichetta c'era un
frate che vomitava...

 ha scritto nel messaggio
news:5SJk7.19922$MO.7...@news.infostrada.it...

Scusami, ma tu il problema di digitare il dato dovresti averlo solo per
inserire il primo record dopo l'apertura della maschera; e così?
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


Si è così :(
Purtroppo al 99,9% dei casi i record verranno inseriti uno alla volta. La
mascherà in realtà è una sottomaschera riferita ad una tabella che gestisce
gli ordini clienti, legata ad una maschera con una tabella che gestisce
l'anagrafica. Le due sono in relazione1 a molti codice cliente - codice
ordine. Il guaio è che questi ordini sono degli abbonamenti prepagati con
rinnovo annuale (o a fine utilizzo), i cui campi (circa 40) sono per l'80%
uguali al precedente. Va da sé che molto scocciante doverli ogni volta
reinserire.
Carmix

 ha scritto nel messaggio
news:iN%k7.25917$MO.9...@news.infostrada.it...

Bhe, mi sembra di capire che non fa al caso tuo quanto scritto sul Sito
Comune.
Se non ho capito male, a te serve che, quando inserisci un nuovo record
nella sottomaschera ordini ti vengano riproposti, come valori di default dei
controlli della sottomaschera, i valori dei campi dell'ultimo record
inserito nella tabella ordini per quel determinato cliente.
Se è così, a mio avviso non dovrai operare a fronte degli eventi "Prima di
aggiornare" dei controlli ma a fronte dell'evento "Su corrente"
dellasottomaschera.
Se la tabella origine record della maschera principale si chiama tblAnagrafe
ed ha come chiave primaria un campo di tipo contatore che si chiama
IDCliente.
Se la maschera principale si chiama frmAnagrafe e contiene una casella di
testo chiamata IDCliente ed associata al campo IDCliente della tblAnagrafe.
Se la tabella che è origine record della sottomaschera si chiama tblOrdini
ed ha la seguente struttura:
IDOrdine            Contatore e chiave primaria
IDCliente            Numerico
Campo1             Di tipo non definito
Se le due tabelle sono in relazione uno-a-molti in base ai campi IDCliente.
Se i controlli della sottomaschera hanno lo stesso nome dei campi di
tblOrdini cui sono associati.
A fronte dell'evento "Su corrente" della sottomaschera genera il seguente
codice VBA:
Private Sub Form_Current()
If Not IsNull(Forms!frmAnagrafe!IDCliente) Then
 If DCount("IDOrdine", "tblOrdini", "IDCliente=" _
  & Forms!frmAnagrafe!IDCliente) <> 0 Then
    Me!Campo1.DefaultValue = "'" & DLookup("Campo1", _
    "tblOrdini", "IDOrdine=" & DMax("IDOrdine", _
    "tblOrdini", "IDCliente=" & _
     Forms!frmAnagrafe!IDCliente)) & "'"
 End If
Else
 Me!Campo1.DefaultValue = "'" & " " & "'"
End If
End Sub
Se i controlli interessati al "giochino" fossero due, Campo1 e Campo2, il
codice diventerebbe:
Private Sub Form_Current()
If Not IsNull(Forms!frmAnagrafe!IDCliente) Then
 If DCount("IDOrdine", "tblOrdini", "IDCliente=" _
  & Forms!frmAnagrafe!IDCliente) <> 0 Then
    Me!Campo1.DefaultValue = "'" & DLookup("Campo1", _
    "tblOrdini", "IDOrdine=" & DMax("IDOrdine", _
    "tblOrdini", "IDCliente=" & _
     Forms!frmAnagrafe!IDCliente)) & "'"
    Me!Campo2.DefaultValue = "'" & DLookup("Campo2", _
    "tblOrdini", "IDOrdine=" & DMax("IDOrdine", _
    "tblOrdini", "IDCliente=" & _
     Forms!frmAnagrafe!IDCliente)) & "'"
 End If
Else
 Me!Campo1.DefaultValue = "'" & " " & "'"
 Me!Campo2.DefaultValue = "'" & " " & "'"
End If
End Sub
Non mi viene in mente qualcosa di meno complicato.


 ha scritto nel messaggio
news:iN%k7.25917$MO.9...@news.infostrada.it...

Bhe, mi sembra di capire che non fa al caso tuo quanto scritto sul Sito







 End If
Else
 Me!Campo1.DefaultValue = "'" & " " & "'"
End If
End Sub




 End If
Else

End If
End Sub

--


 ha scritto nel messaggio
news:iN%k7.25917$MO.9...@news.infostrada.it...

Bhe, mi sembra di capire che non fa al caso tuo quanto scritto sul Sito







 End If
Else
 Me!Campo1.DefaultValue = "'" & " " & "'"
End If
End Sub




 End If
Else

End If
End Sub

--


 ha scritto nel messaggio
news:A79l7.1349$kt4....@news.infostrada.it...


 ha scritto nel messaggio
news:A79l7.1349$kt4....@news.infostrada.it...
