Forums for you Fast forums in a simple way
 Registrati
user
password
 


Home->it.comp.appl.access
Rispondi  Torna al forum Notizie

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
----------------------------------------




Cerca "Re: Copiare un record senza o con variazioni" con Gooogle SiteSearch
Google
 
Web www.forumsforyou.com







ForumsForYou non è responsabile dei contenuti degli articoli che vengono inseriti dagli utenti via rete Usenet e che quindi vengono pubblicati di conseguenza sul nostro news server. Si vieta l'utilizzo delle email allegate nei vari articoli per l'invio di mail non richieste.

Copyright 2006 Powered by JTechnology s.r.l. All rights reserved.