Newsgroup: it.comp.appl.access
Titolo: Travaso ed utilizzo temporaneo di records

Sono in una fase di cortocircuito mentale, pertanto accetto
suggerimenti di qualunque tipo per risolvere un problema probabilmente
banale (ma si sà che tutti i problemi sono banali se si conosce la
soluzione).
Ho un database piuttosto semplice costituito da una tabella con un
centinaio di record cui devo poter accedere tramite una maschera che mi
consenta di modificare un record determinato, stampare in un report il
record stesso con le modifiche, senza che esse, alla fine della
operazione (chiusura della maschera), incidano sul contenuto originario
della tabella: i record della tabella  devono cioè rimanere inalterati
(la loro eventuale modifica è demandata ad altra zona della
procedura). Mi trovo in conclusione nella necessità di non dover
creare un separato archivio che contenga le modifiche ma di poterle
effettuare soltanto per effettuare una stampa con delle variazioni.
Grazie a chiunque incroci da queste parti.

 ha scritto nel messaggio 
news:1163847178.0...@b28g2000cwb.googlegroups.com...

_________________
Private Sub Form_BeforeUpdate(Cancel As Integer)
    'Fai quel che credi ...
    Me.Undo
End Sub
Ciao.
eSQueL 

crei una mschera non associata.
sull'evento open fai popolare i controlli coi dati prelevati da un 
recordset (che legge i record della tabella)
Modifichi i valori che vuoi
Stampi il report, che avrà come i controlli che puntano come origine ai 
controlli non associati della maschera.

Silver ha scritto:

potresti specificarmi come posso fare a "popolare i controlli coi dati
prelevati da un
recordset" ? Tieni conto che la mia maschera contiene una
sottomaschera, il che forse complica un tantino le cose. 
Grazie

tracker ha scritto:

crei una maschera con i 100 record (non modificabili)
sull'evento doppio click della form (o altro evento) apri un'altra form 
nn associata a nulla ma che ha un numero di controlli uguali a quello 
dei campi della tabella da mostrare.
Apri un recordset coi dati del solo record selezionato
riempi i controlli.
qualcosa_dblclick(cancel as integer)
dim rs as recordset
docmd.openform, "nome form non associata"
'per controlli sulla form principale
set rs=currentdb.openrecordset("Select  campo1, campo2, campo3, from 
nome_tabella where chiaveprimaria=" & me.chiaveprimaria & ";")
with forms!nomeform.form
.controllo1=rs!campo1
.controllo2=rs!campo2
.controllo3=rs!campo3
end with
'per controlli su sottomaschera
'set rs=currentdb.openrecordset("Select  campo1, campo2, campo3, from 
nome_tabella where chiaveprimaria=" & me.nomesubform.form.chiaveprimaria 
'& ";")
'with forms!nomeform.nomesubform.form
'.controllo1=rs!campo1
'.controllo2=rs!campo2
'.controllo3=rs!campo3
.setfocus
'end with
set rs=nothing
end sub

Silver ha scritto:

In teoria ho capito tutto, in pratica mi sono bloccato e non riesco a
proseguire:
Formule= tabella base dati per maschera Formule (associata)
Voci formule= tabella base per sottomaschera VociFormule(associata)
Ricetta= maschera non associata
VociRicetta=sottomaschera incorporata in maschera Ricetta
non associata (anche questa non deve essere associata, credo).
Ho associato la routine su click di un interruttore della maschera
Formule
Private Sub Interruttore208_Click()
Dim rs As Recordset
DoCmd.OpenForm (ricetta) *** qui ho dovuto per forza usare le parentesi
e non la virgola e gli apici ***
'per controlli sulla form principale
Set rs = CurrentDb.openrecordset("Select nome, datacreazione,
posologia, from formule where idformula =" & Me.idformula & ";")
With Forms!ricetta.Form
.testonome = rs!nome
.testodatacreazione = rs!datacreazione
.testoposologia = rs!posologia
End With
'per controlli su sottomaschera
 Set rs = CurrentDb.openrecordset("Select  nomecinese, nomelatino,
grammi, from vociformule where idvoceformula=" &
Me[.vociformula].Form.idvoceformula & ";")
 With Forms!ricetta.vociricetta.Form
.testonomecinese = rs!nomecinese
.testonomelatino = rs!nomelatino
.Testogrammi = rs!grammi
.SetFocus
End With
Set rs = Nothing
End Sub
Il debugger mi segnala un "errore di compilazione (impossibile trovare
il metodo o il membro dati - access '97) evidenziando in blu il testo
che ho incluso tra parentesi quadre: di che può trattarsi?

tracker ha scritto:

RETTIFICO il problema sopra esposto che risulta superato (banale errore
di sintassi)
Il problema che invece attualmente mi assilla consiste nel messaggio:
La dichiarazione della routine di eventi non corrisponde alla
descrizione dell'evento con lo stesso nome. L'espressione non
corrisponde al nome di una macro, di una funzione definita
dall'utente oppure a Routine Evento.
Si è verificato un errore durante la valutazione di una funzione, di
un evento
o di una macro.
Ho cercato di indagare prima di inoltrare questa ennesima richiesta ma
finora non ne sono vento a capo.
La routine è quella che segue:
Private Sub ctrlopenform_Click(Cancel As Integer)
Dim rs As Recordset
DoCmd.OpenForm (ricetta)
'per controlli sulla form principale
Set rs = CurrentDb.openrecordset("Select nome, datacreazione,
posologia, from formule where idformula =" & Me.idformula & ";")
With Forms!ricetta.Form
.ctrlnome = rs!nome
.ctrldatacreazione = rs!datacreazione
.ctrlposologia = rs!posologia
End With
'per controlli su sottomaschera
 Set rs = CurrentDb.openrecordset("Select  nomecinese, nomelatino,
grammi, from vociformule where idvoceformula=" &
Me.vociformule.Form.idvoceformula & ";")
 With Forms!ricetta.vociricetta.Form
.ctrlnomecinese = rs!nomecinese
.ctrlnomelatino = rs!nomelatino
.ctrlgrammi = rs!grammi
.SetFocus
End With
End Sub