Condividi tramite

Riportare valore di controllo ad un altro del record successivo

Anonimo
2013-01-07T18:03:39+00:00

Private Sub Form_BeforeUpdate(Cancel As Integer)

If Me.NewRecord Then Me.A.DefaultValue=Me.A+Me.B

End Sub

Al cambio record voglio riportare il valore di un controllo ( testo, data, numero)ad un altro controllo del record successivo.Il codice appena scritto non mi permette di fare con il formato testo, data e valuta solo con il formato numero.

Altro quesito interessa un grafico di access: lo stesso prende i dati da una query che rappresentano numericamente i mesi, 1, 2,....... gennaio, febbraio.......Il grafico funziona dal mese 1 al mese 9 mettendo i valori rappresentati in ordine crescente, mentre una volta inserito il valore del mese di ottobre, novembre e dicembre il grafico li rappresenta : 1, 10, 11, 12, 2, 3, 4, 5, 6, 7, 8 e 9.Come posso fare per sistemare tutto?

Uso Microsoft Office Professional 10

Ringrazio anticipatamente.

luciano

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2013-01-10T19:07:18+00:00

Ciao Luciano,

vero, se ci sono decimali da errore, bisogna passare i valori numerici nel formato anglosassone.

Se vuoi anche assegnare i valori dell'ultimo record inserito quando apri la maschera, nell'evento su caricamento bisogna andare all'ultimo record e assegnare i valori nei controlli.

In praica il codice è questo:


Sub Assegna_DefaultValue()

    Me.Stringa1.DefaultValue = Chr(34) & Me.Stringa1 & Chr(34)

    Me.Data1.DefaultValue = CLng(Me.Data1)

    Me.Numero1.DefaultValue = Str(Me.Numero1)

    Me.Valuta1.DefaultValue = Str(Me.Valuta1)

End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer)

    'Se nuovo record assegno DefaultValue

    If Me.NewRecord Then Assegna_DefaultValue

End Sub

Private Sub Form_Load()

    'Vado all'ultimo record, memorizzo defaultvalue e passo a nuovo record

    If Me.RecordsetClone.RecordCount > 0 Then

       DoCmd.GoToRecord acActiveDataObject, , acLast

       Assegna_DefaultValue

       DoCmd.GoToRecord acActiveDataObject, , acNewRec

    End If

End Sub


ho cambiato anche l'assegnazione della data da


"#" & Format(Me.Data1,"mm/dd/yyyy") & "#"


a


Clng(Me.Data1)


che è la stessa cosa perchè passa il numero seriale della data.

Ciao

Giorgio Rancati

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2013-01-08T20:59:55+00:00

Ciao Luciano,

i valori testuali devono essere racchiusi tra doppi apici, quindi l'istruzione diventa:

Me.A.DefaultValue= """" & Me.A & """"

o se preferisci

Me.A.DefaultValue= Chr(34) & Me.A & Chr(34)

i valori di tipo data ora devono essere racchiusi tra # e passati nel formato mm/dd/yyyy, quindi l'istruzione diventa:

Me.A.DefaultValue= "#" & Format(Me.A,"mm/dd/yyyy") & "#"

per i valori di tipo valuta puoi usare la funzione Ccur()

Me.A.DefaultValue= Ccur(Me.A)

Per il secondo quesito ti consiglio di aprire una nuova domanda perchè è fuori argomento.

Ciao

Giorgio Rancati

La risposta è stata utile?

0 commenti Nessun commento

7 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-01-11T09:37:55+00:00

    Buon giorno gentilissimo Giorgio

    Vengo di nuovo a lamentarmi per comunicare che dopo l'apertura del DB in questione, appare un messaggio d'errore Microsoft Visual Basic

    Errore di run - tim '2493'

    Per l'azione è necessario l'argomento nome oggetto.

    Azionando Debug viene evidenziato, con colore giallo,  

    la riga DoCmd.GoToRecord acActiveDataObjet, , ac Last del codice di Private sub Form_Load(), da te postato.

    Gentilmente chiedo aiuto anche per questo inconveniente.

    Grazie

    Luciano

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-01-11T07:44:00+00:00

    Ciao Giorgio

    Tutto funziona perfettamente, per questo e per la celerità della risposta ti ringrazio.

    Luciano

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2013-01-10T16:35:23+00:00

    Private Sub Form_BeforeUpdate(Cancel As Integer)

         If Me.NewRecord Then

            Me.Stringa1.DefaultValue = Chr(34) & Me.Stringa & Chr(34)

            Me.Data1.DefaultValue = CCur(Me.Data)

            Me.Numero1.DefaultValue = Me.Numero

            Me.Valuta1.DefaultValue = Me.Valuta

         End If

    End Sub

    Buona sera Giorgio

    Al 90% funziona tutto bene, solo per i centesimi di euro mi restituisce errore. Altro piccolo problema

    è stato riscontrato una volta chiuso il DB e si apre di nuovo la maschera per portarsi a nuovo record, i valori non vengono riportati come prima. Ringrazio nuovamente per la disponibilità.

    Luciano

    La risposta è stata utile?

    0 commenti Nessun commento