Re: Copiare un record senza o con variazioni
|
- Subject: Re: Copiare un record senza o con variazioni
- From: Cinzia
- Data: Fri, 4 Jul 2008 22:09:26 +0200
- Newsgroups: it.comp.appl.access
"Cristina Bernazzani" <
ohcieloandi@libero.it> ha scritto nel messaggio
news:
e7vbk.110533$FR.366895@twister1.libero.it...
> Ciao ragazzi
> un aiutino per favore...sto diventando pazza
>
> Dovrei fare una cosa semplicissima.Da una maschera avvio un
> recordset e
> ..vbYes...duplico il record modificando solo il campo Attività (da
> Proposta a Chiusura)in automatico
> ..vbNo...duplico il record modificando oltre al campo Attività, ma a
> manina, i campi da modificare.
> In entrambi i casi mi deve aggiornare la maschera col record
> aggiunto.
>
> Ora, nel primo caso duplica perfettamente il record con la
> correzione in automatico, mi fa vedere l'aggiunta del
> nuovo record nella maschera, ma mi da errore "l'operazione richiesta
> non è supportata dall'oggetto o dal provider"
> nell'istruzione: Set Forms("Proposte").Recordset = Rst.Proposte
> E' molto strano perchè è come riportato esattamente nella guida in
> linea.
>
> Nel secondo caso , invece non mi duplica il record, ma va ad
> aggiornare con i cambiamenti che faccio a manina
> il record di origine. Eppure dovrebbe funzionare.
>
> E perchè nel primo caso duplica e nel secondo no?
>
> Dove sbaglio ? Ho provato in tanti modi ma non riesco ad uscirne
>
> Un aiutino per favore...vi posto il codice incriminato.
>
> Private Sub Contratto_AfterUpdate()
> Dim Con As ADODB.Connection
> Dim Rst As ADODB.Recordset
> Set Con = CurrentProject.Connection
> Set Rst = New ADODB.Recordset
> Rst.Open "SELECT Proposte.* FROM Proposte", Con,
> adOpenKeyset, adLockOptimistic, adCmdTableDirect
>
> 'salva una copia del record modificando solo Attività (da
> Proposta a Chiusura)
> With Rst
> If MsgBox("Il contratto è uguale alla proposta ?",
> vbYesNo, "Avviso") = vbYes Then
> .AddNew
> !Cliente = Me.Cliente.Value
> !Attività = "Chiusura"
> !Proposta = Me.Proposta.Value
> !Gennaio = Me.Gennaio.Value
> !Febbraio = Me.Febbraio.Value
> !Marzo = Me.Marzo.Value
> !Aprile = Me.Aprile.Value
> !Maggio = Me.Maggio.Value
> !Giugno = Me.Giugno.Value
> !Luglio = Me.Luglio.Value
> !Agosto = Me.Agosto.Value
> !Settembre = Me.Settembre.Value
> !Ottobre = Me.Ottobre.Value
> !Novembre = Me.Novembre.Value
> !Dicembre = Me.Dicembre.Value
> DoCmd.RunCommand acCmdSaveRecord
> .Update
> Set Forms("Proposte").Recordset = Rst.Proposte
> .Close
>
>
> Else
>
> With Rst
>
> .AddNew
> 'salva una copia del record modificando Attività e
> valori mensili
> Me.Cliente.Value = Me.Cliente
> Me.Attività.Value = "Chiusura"
> Me.Proposta.Value = Me.Proposta
> Me.Gennaio.Value = Null
> Me.Febbraio.Value = Null
> Me.Marzo.Value = Null
> Me.Aprile.Value = Null
> Me.Maggio.Value = Null
> Me.Giugno.Value = Null
> Me.Luglio.Value = Null
> Me.Agosto.Value = Null
> Me.Settembre.Value = Null
> Me.Ottobre.Value = Null
> Me.Novembre.Value = Null
> Me.Dicembre.Value = Null
> .Update
> DoCmd.RunCommand acCmdSaveRecord
> .Close
> Con.Close
>
>
> End With
> End If
> End With
>
> End Sub
Ciao Cristina,
nella prima parte dell'if fai le cose in modo corretto, tranne quel
Set Forms("Proposte").Recordset = Rst.Proposte
che casomai sarebbe
Set Forms("Proposte").Recordset = Rst
ma che io toglierei proprio e farei semplicemente un me.requery
nella seconda parte invece anzichè assegnare i valori al record
appena creato con la AddNew, vai ad assegnarli alla maschera stessa
(me.cliente.value non è altro che il valore del cliente presente nella
maschera corrente), quindi aggiorna il record corrente.
Dovresti invece fare così:
With Rst
>
> .AddNew
> 'salva una copia del record modificando Attività e
> valori mensili
> !Cliente = Me.Cliente
> !Attività = "Chiusura"
> !Proposta.Value = Me.Proposta
> !Gennaio = Null
........ ecc. (questi potrebbero essere inutili se la tabella ha
come valore predefinito Null per questi campi
> .Update
> DoCmd.RunCommand acCmdSaveRecord
> .Close
> Con.Close
>
>
> End With
--
Cinzia [Office Access MVP]
_______________________
www.riolab.org
http://accessdaziacin.live.spaces.com
----------------------------------------