Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 13 su 13
  1. #11
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Premesso che sono d'accordo con Luky1964


    Premesso che torno a consigliarti di fare una semplice SELECT
    ( vedi post del 08/05 h 06.11 )


    Se devi comunque scrivere il risultato di un calcolo in tabella devi su
    una maschera rilevare gli eventi di modifica di uno o dell'altro
    controllo associati al calcolo e per ogni modifica con del codice VBA
    calcolare il prodotto e scriverlo nel terzo controllo


    In pratica ti do le istruzioni per costruirti una semplice
    Demo funzionante che poi potrai adattare alla tua applicazione

    __________________________________________________ ______
    __________________________________________________ ______
    __________________________________________________ ______



    Creati un nuovo DataBase di Access 2003

    __________________________________________________ ________________

    Crea una nuova tabella di nome "Ta"
    Inserusci dentro questi campi:
    ___ Id ___ Contatore __ Key
    ___ Rend __ Valuta __ Formato Standard __ Valore predefinito VUOTO
    ___ Impo __ Valuta __ Formato Standard __ Valore predefinito VUOTO
    ___ Prof __ Valuta __ Formato Standard __ Valore predefinito VUOTO


    __________________________________________________ ___________________________

    Crea una nuova maschera di nome "Masc1"

    evita le Autocomposizioni

    Vai alla visualizzazione struttura

    Proprieta maschera
    ___ Dati
    _____Origine record
    _______Seleziona "Ta"


    Apri la casella degli strumenti
    __ Inserisci nella maschera 4 caselle di testo


    __ Vai alle proprieta della 1° casella
    ____ Scheda "Tutte"
    ________ Nome elemento "Idx"
    ________ Origine controllo Selezioni "Id"
    ____ Scheda "Dati"
    ________ Bloccato Selezioni "Si"


    __ Vai alle proprieta della 2° casella
    ____ Scheda "Tutte"
    ________ Nome elemento "Rendx"
    ________ Origine controllo Selezioni "Rend"
    ________ Formato Selezioni "Standard"


    __ Vai alle proprieta della 3° casella
    ____ Scheda "Tutte"
    ________ Nome elemento "Impox"
    ________ Origine controllo Selezioni "Impo"
    ________ Formato Selezioni "Standard"


    __ Vai alle proprieta della 4° casella
    ____ Scheda "Tutte"
    ________ Nome elemento "Profx"
    ________ Origine controllo Selezioni "Prof"
    ________ Formato Selezioni "Standard"
    ____ Scheda "Dati"
    ________ Bloccato Selezioni "Si"



    Puoi mettere il testo che preferisci alle 4 etichette
    delle caselle di testo


    ___ Salva


    NB:
    osserva che ho differenziato il Nome Elemento
    dalla Origine Controllo, questo per farti capire dopo
    sempre a cosa fai riferimento.


    Osserva anche che la casella "Profx" è bloccata, questo
    significa che tu non potrai scriverci dentro niente,
    Sara Access a scrivere dentro il valore desiderato.



    __________________________________________________ _____________


    Puoi gia scrivere qualche numero in Rendx e Impox
    vedrai che in Profx non succede nulla.

    Prova a scrivere qualcosa in Profx
    non potrai scrivere perche bloccato
    Giusto?


    __________________________________________________ ____________
    __________________________________________________ ____________
    __________________________________________________ ____________
    __________________________________________________ ____________



    abbiamo finito il lavoro di base, adesso manca un po di codice
    per ottenere il risultato.


    __________________________________________________ ______________

    Adesso vai alla struttura di "Masc1"

    Premi il pulsante "Codice" nella barra degli strumenti


    Ti si apre una pagina bianca con scritto semplicemente:
    __ Option Compare Database


    Lo sostituisci con questo

    codice:
    Option Compare Database
    Option Explicit
    
    Private Sub Rendx_AfterUpdate()
    'Succede dopo la modifica di Rendx
    
        If (Eval("Forms!Masc1!Impox Is Not Null")) Then
        'Se Impox NON è un campo vuoto
    
            Call KKKK
            'Richiama la funzione KKKK scritta sotto
    
        End If
    
    End Sub
    
    Private Sub Impox_AfterUpdate()
    'Succede dopo la modifica di Impox
    
        If (Eval("Forms!Masc1!Rendx Is Not Null")) Then
        'Se Rendx NON è un campo vuoto
    
            Call KKKK
            'Richiama la funzione KKKK scritta sotto
    
        End If
    
    End Sub
    
    
    Private Function KKKK()
    
        Me.Profx = Me.Rendx * Me.Impox / 100
        'Imposta il valore di Profx  al prodotto di Rendx x Impox / 100
    
        DoCmd.RunCommand acCmdSaveRecord
        'Registra nella tabella il record modificato
    
        Beep
        MsgBox "fatto", vbOKOnly, ""
        'Potrai eliminare il messaggio di conferma
        'cancellando  il Beep  e il MsgBox
    
    End Function
    Salva

    Chiudi la finestra del codice

    Salvi anche la maschera




    Adesso devi legare le caselle di testo della tua maschera
    al codice appena scritto:

    Vai alla struttura della "Masc1"

    __ Vai alle proprieta della casella "Rendx"
    ____ Scheda "Evento"
    ________ Dopo Aggiornamento Selezioni "Routine Evento" ( se non cìè già )


    __ Vai alle proprieta della casella "Impox"
    ____ Scheda "Evento"
    ________ Dopo Aggiornamento Selezioni "Routine Evento" ( se non cìè già )








    Finito.

    Ora devi adattare i nomi dei controlli alla tua situazione

  2. #12
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    8
    wooooooooe che rispostaaaaaaa....funzionante al 100 per 100

    ora avrei un altro piccolo quesito

    ora che ho fatto questa cosa me ne serve una piu complicata...si tratta sempre dell'inserimento di questo risultato solo se avviene un determinato evento

    e cioè vi spiego:

    ho una casella combinata con due valori (alto e basso)
    due caselle di testo con valori che immetto io

    la formula è questa( in italiano ovviamente)

    SE la casella combinata è uguale ad Alto e la casella2 è maggiore della casella1

    allora fai l'operazione e inserisci il risultato nel database

    ALTRIMENTI inserisci il risultato della casella importo nel database


    non so se è molto chiara
    e lo so che faccio delle richieste molto strane che vanno contro molte logiche...ma non ci posso fare niente

    vi ringrazio per la risposta di prima e per la prossima qual'ora ci sarà

  3. #13
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Originariamente inviato da DjQ
    ho una casella combinata con due valori (alto e basso)

    due caselle di testo con valori che immetto io

    SE
    la casella combinata è uguale ad Alto
    e la casella2 è maggiore della casella1
    allora fai l'operazione e inserisci il risultato nel database

    ALTRIMENTI
    inserisci il risultato della casella importo nel database
    Per andare sul semplice direi che ti conviene all'interno della mascherache gia hai
    inserire
    __quelle 3 caselle che ci citi
    __qualche altra casella
    dove con fomule semplici ( iif , somma, noltiplicazione )
    ti calcoli il tuo numero da inserire

    Poi sostituisci la riga di codice:
    Me.Profx = Me.Rendx * Me.Impox / 100
    con
    Me.Profx = Me.NomeRisultato
    ( dove "NomeRisultato" è appunto il nome della tua
    nuova casella con il risultato)




Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.