Calcolo in una sottomaschera

di il
6 risposte

Calcolo in una sottomaschera

Buongiorno a tutti.
Mi chiamo Giorgio e sono uno studente universitario. Spero di trovare aiuto e di essere a mia volta d'aiuto ad altri. Mi scuso se le mie domande saranno banali, ma tra libri e google trovare la risposta non è propriamente semplice.
Vi spiego dove sta il mio problema.
Ho una maschera Madre che contiene una Figlia. Nella maschera Madre in particolare mi interessano 3 campi:
- IVA, in cui inserisco manualmente il valore dell'IVA. Questo campo è Numerico
- Prezzo NO iva
- Prezzo SI iva
Questi due ultimi campi sono Valuta e vorrei che fossero in automatico compilati dal sistema.
La maschera figlia contiene tutti campi che inserisco manualmente e nello specifico inserisco la quantità e il prezzo, ambedue in formato valuta.
Le formule che mi servono sono le seguenti:
Prezzo NO IVA = (IVA/100) * somma(figlia.quantità * figlia.prezzo)
Prezzo Si IVA = Prezzo No IVA + somma(figlia.quantità * figlia.prezzo)
Andando sull'evento corrente della maschera madre riesco tramite codice a far si che Prezzo NO IVA = (IVA/100). Su tale evento non posso usare le espressioni in quanto ho alcuni semplici settaggi in codice VBA.
Andando sulle due campi di Prezzo della maschera Madre ho inserito le due espressioni su click ma i campi rimangono vuoti
Voi sapete come poter fare quello che mi serve?

Grazie

6 Risposte

  • Re: Calcolo in una sottomaschera

    Prima di tutto il campi calcolati non andrebbero salvati, salvo quelli con valori a tempo dipendente... come l'iva ad esempio ma anche qui ci sono soluzioni più strutturate.
    In ogni caso se li vuoi salvare non devi affatto carlcolarli su Current altrimenti ogni spostamento record, requery o altro che genera il Current li ricalcoli e questa è una cavolata.
    Il calcolo lo devi eseguire su evento BeforeUpdate di Maschera.

    Poi non si comprende di cosa parli sui settaggio del vba che ti impediscono cosa..?

    Insomma stai mescolando tante cose strane e fumose ma nessuna che serve al tuo caso.
  • Re: Calcolo in una sottomaschera

    @Alex ha scritto:


    Prima di tutto il campi calcolati non andrebbero salvati, salvo quelli con valori a tempo dipendente... come l'iva ad esempio ma anche qui ci sono soluzioni più strutturate.
    In ogni caso se li vuoi salvare non devi affatto carlcolarli su Current altrimenti ogni spostamento record, requery o altro che genera il Current li ricalcoli e questa è una cavolata.
    Il calcolo lo devi eseguire su evento BeforeUpdate di Maschera.

    Poi non si comprende di cosa parli sui settaggio del vba che ti impediscono cosa..?

    Insomma stai mescolando tante cose strane e fumose ma nessuna che serve al tuo caso.
    f:(

    Mi scuso se mi sono spiegato male ma ci sono tante possibilità e mi sono un attimo perso.
    Ho SEMI risolto in questo modo. Ho creato una query di selezione alimentata dalle due tabelle che alimentano la maschera madre a la maschera figlia. Ho poi usato il comando TOTALI e sono quindi riuscito a raggruppare come serviva me e ho quindi poi inserito le due formulette sopra citate.
    Ora si pone questa scocciatura.
    I due campi in cui i risultati delle due formulette devono essere memorizzati facendoli diventare CASELLE COMBINATE mi permettono di filtrare ciascuno il risultato della query cosi da avere il dato che mi serve. Il problema è che ogni volte devo selezionarlo a mano ed è sempre solo uno e uno solo il valore nella casella combinata.
    Ho provato su VBA a dire me.IVA = DoCmd.OpenQuery"TOTALE" ...il problema è che non so come continuare

    Ho provato a tenere il campo come casella di testo, andando in valore predefinito e mettendoci la colonna della query in cui c'è il risultato che mi serve ma è sempre vuoto

  • Re: Calcolo in una sottomaschera

    @Alex ha scritto:


    Prima di tutto il campi calcolati non andrebbero salvati, salvo quelli con valori a tempo dipendente... come l'iva ad esempio ma anche qui ci sono soluzioni più strutturate.
    In ogni caso se li vuoi salvare non devi affatto carlcolarli su Current altrimenti ogni spostamento record, requery o altro che genera il Current li ricalcoli e questa è una cavolata.
    Il calcolo lo devi eseguire su evento BeforeUpdate di Maschera.

    Poi non si comprende di cosa parli sui settaggio del vba che ti impediscono cosa..?

    Insomma stai mescolando tante cose strane e fumose ma nessuna che serve al tuo caso.
    Per il settaggio della VBA, potevo usare la funzione Dsum ma preferisco evitare dato che con il codice non è che me la cavo proprio bene
  • Re: Calcolo in una sottomaschera

    Ma sei sicuro di sapere quello che stai dicendo...?
    Siccome DSUM non ti serve assolutamente a NULLA... per evitare di fare ulteriore confusione non sparare cose a caso...
    Detto questo se non hai capito quello che ti ho suggerito sopra che è l'unica soluzione che devi usare io direi che sospendiamo.
  • Re: Calcolo in una sottomaschera

    Ciao,
    onestamente preferirei di no. Non è fattibile aggiornare a mano questi campi per ogni record.
    Ho provato ad usare before update ma non ottengo ne errore ne niente.
    
    Private Sub Form_BeforeUpdate(Cancel As Integer)
        Dim Valore As Double
        Valore = DLoopUP("[TotaleConIva]", "ValoreOrdine", "[ID_Ordini]=" & Me.ID_Ordini)
        Me.Valore_Ordine = Valore
    End Sub
    
    TotaleConIva: Somma([OrdineProdotto]![Qta]*[OrdineProdotto]![Prezzo]*(1+([Ordini]![IVA]/100)))
    ValoreOrdine è il nome della query
    ID_Ordini è la chiave primaria contenuta nella query
    Come criterio dico che voglio vedere sono il valore della query, il cui ID corrisponde all'ID della maschera in cui mi trovo. Memorizzo il valore nella variabile Valore ed infine dico che la casella di testo Valore Ordine della maschera Ordini deve mostrare il valore della variabile
  • Re: Calcolo in una sottomaschera

    George_22 ha scritto:


    Ciao,
    onestamente preferirei di no. Non è fattibile aggiornare a mano questi campi per ogni record.
    Ho provato ad usare before update ma non ottengo ne errore ne niente.
    Mi sembra una risposta molto sconnessa, oppure siamo a livelli quantistici... su piani paralleli.

    George_22 ha scritto:


    
    Private Sub Form_BeforeUpdate(Cancel As Integer)
        Dim Valore As Double
        Valore = DLoopUP("[TotaleConIva]", "ValoreOrdine", "[ID_Ordini]=" & Me.ID_Ordini)
        Me.Valore_Ordine = Valore
    End Sub
    
    TotaleConIva: Somma([OrdineProdotto]![Qta]*[OrdineProdotto]![Prezzo]*(1+([Ordini]![IVA]/100)))
    ValoreOrdine è il nome della query
    ID_Ordini è la chiave primaria contenuta nella query
    Come criterio dico che voglio vedere sono il valore della query, il cui ID corrisponde all'ID della maschera in cui mi trovo. Memorizzo il valore nella variabile Valore ed infine dico che la casella di testo Valore Ordine della maschera Ordini deve mostrare il valore della variabile
    Se la Query è Raggruppata ed ottieni la Somma, sei certo che esponga un Id_Ordine...?
Devi accedere o registrarti per scrivere nel forum
6 risposte