Newsgroup: it.comp.appl.access
Titolo: Su creazione nuovo record, valorizzare campi predefiniti come funzione

Sto cercando di automatizzare l'inserimento di alcuni campi predefiniti 
ad ogni creazione nuovo  record su diverse tabelle
Prendiamo ad esempio la tabella classica degli Aspetti Beni
Per l'inserimento nuovo record, uso il classico
 
DoCmd.GoToRecord , , acnewRec
 
perche' predispone l'inserimento del nuovo record e consente, premendo 
l'Esc da tastiera, di rinunciare all'inserimento (funzionalita' che 
vorrei mantenere)
Quindi il codice che uso e' questo
 
-------------------------------------------------------
DoCmd.GoToRecord , , acNewRec
Me!ID_ASPETTOBENI = NEW_GEN_GLOB()
Me!CODICE = NUOVO_CODICE_TABELLA("ASPETTOBENI")
Me!CREAZIONE_IP_ADDRESS = GetIP()
Me!CREAZIONE_NOME_PC = Environ("computername")
ecc ...
-------------------------------------------------------
 
Fin qua tutto bene
Ora vorrei concentrare in una sola funzione la valorizzazione di alcuni 
campi comuni su tutte le tabelle, come ad esempio il 
CREAZIONE_IP_ADDRESS, CREAZIONE_NOME_PC che si vedono sopra
Ho scritto una funzione del tipo
 
-------------------------------------------------------
Function dati_testata_record(ByVal mio_recordset As Recordset)
mio_recordset("creazione_ip_address") = GetIP()
mio_recordset("CREAZIONE_NOME_PC ") = nome_picci()
End Function
-------------------------------------------------------
 
Speravo che bastasse sostituire alla form per la gestione Aspetti Beni 
di cui sopra il codice, richiamando la funzione per settare i campi 
predefiniti, passandogli come parametro il me.Recordset della form, in 
questo modo
 
-------------------------------------------------------
DoCmd.GoToRecord , , acNewRec
Me!ID_ASPETTOBENI = NEW_GEN_GLOB()
Me!CODICE = NUOVO_CODICE_TABELLA("ASPETTOBENI")
dummy = dati_testata_record(Me.Recordset)
ecc ...
-------------------------------------------------------
 
Ma dentro la funzione dati_testata_record, alla prima istruzione, mi 
spara fuori un 3020 "Metodo Update o CancelUpdate senza AddNew o Edit"
La domanda e':  il comando    DoCmd.GoToRecord , , acNewRec  impartito 
all'inizio della creazione record non e' equivalente ad un ADDNEW ?
Dov'e' lo sballio?
 
Se per la creazione uso la classica creazione recordset
Set MyRS=Currentdb.openrecordet("SELECT * FROm ASPETTOBENI")
MyRS.addnew
MyRS("ID_ASPETTOBENI") = NEW_GEN_GLOB()
MyRS("CODICE") = NUOVO_CODICE_TABELLA("ASPETTOBENI")
dummy = dati_testata_record(MyRS)
MyRS.update
 
funziona tutto perfettamente
Ma non vorrei operare cosi', perche' non posso rinunciare alla creazione 
a meta' strada, come e' invece possibile fare col
DoCmd.GoToRecord , , acnewRec  premendo l'Esc
 


SOLO come osservazione sull'argomento
 
come sai c'è anche la proprietà valore predefinito
che, di fatto, non avvia le registrazioni
(e quindi "tutto tace")
 
NON è utilizzabile nella tua situazione ?
 
 
 


Si, il fatto e' che non ho i campi bindati con dei controlli
sulla form
E non vorrei neanche metterceli perche' sono piu' d'uno
La form ha come RecordSource la tabella, che contiene i campi 'predefiniti'
Ma sulla form ho solo i controlli per Codice e Descrizione, non ho i 
controlli corrispondenti ai campi predefiniti
Credo la proprieta' "predefinito" si possa valorizzare solo sui 
controlli visuali
O no?
 
 
 
 

 O no?
 
"no Martini, no party":
se non c'è l'oggetto (il controllo) non c'è la proprietà ...
 

 se non c'è l'oggetto (il controllo) non c'è la proprietà ...
 
mah, m'era venuto di aggiungere questo (con l'evento sbagliato):
 
è attuabile aggiornare all'evento AfterUpdate ?
(ci sarà certamente una id di record or ora registrato)

 mantenere)
L'operazione più semplice di inserimento record su una tabella è
quella di compilarne i vari campi da una Form, dalla quale puoi
interrompere l'inserimento di nuovo record con ESC, cancellare e
modificare record già esistenti, etc.
Se poi ogni nuovo record deve essere riportato anche su una o più
tabelle, allora in AfterUpdate della Form puoi scrivere quelle
quattro righe di codice che ti servono.
Il tutto è talmente semplice che mi sto chiedendo se abbia
correttamente inteso la tua richiesta.
 
Bruno