Operazioni matematiche su Maschere con VBA

di il
9 risposte

Operazioni matematiche su Maschere con VBA

In una maschera

3 controlli A B C

In base alla scelta fatta dall’utente dalla casella combinata A, in un altro controllo B (casella di testo) deve effettuare un calcolo matematico che è diverso in base alla scelta:

Esempio:

Se in A sceglie Operai in B deve fare contenuto del controllo C*45

Se in B sceglie Impiegato in B deve fare contenuto del controllo C*47


E così via…..

Ho fatto così: in VBA dopo aggiornamento di B gli faccio fare i calcoli corretti e funziona ma il problema è che quando chiudo e riapro la maschera nel controllo C non compare + il risultato.es del codice
IF A = "operaio" then
B=C*45
else B=C*47
end if

Come posso/devo fare? Grazie

9 Risposte

  • Re: Operazioni matematiche su Maschere con VBA

    Io non scomoderei VBA e evento Dopo aggiornamento. In visualizzazione struttura maschera, dentro il campo B, scrivi la seguente sintassi:
    =IIf([A]="Operaio";[C]*45;[C]*47)
    La funzione IIf così congeniata, tanto funziona perchè hai sottoposto la scelta di 2 soli valori in campo A.
  • Re: Operazioni matematiche su Maschere con VBA

    Si hai ragione. Funziona ma:

    siccome il controlli B e C sono in una sottomaschera quando cambio il valore della combo A il valore non si aggiorna fino a quando non clicco sulla sottomaschera.....

    Idee? Comunque grazie mille.
  • Re: Operazioni matematiche su Maschere con VBA

    La mia sintassi proposta era semplificata, ma volendo richiamare tutti i controlli correttamente, la sintassi cambia così:
    =IIf([Maschere]![NomeMaschera]![A]="Operaio";[Maschere]![NomeMaschera]![NomeSottomaschera]![C]*45;[Maschere]![NomeMaschera]![NomeSottomaschera]![C]*47)
    se con la parola [Maschere] non funziona, prova a sostituirla con [Forms]
  • Re: Operazioni matematiche su Maschere con VBA

    Ora è ok
  • Re: Operazioni matematiche su Maschere con VBA

    Ciao, non volevo aprire un altro post. Ho un problema che credo rientri nell'argomento :
    Sto facendo un db per gestire l'iscrizione clienti per una piccola palestra :
    Tabelle:

    Anagrafica clienti
    Id , nome ecc

    Iscrizione mensile
    Id mensile, idcliente, quota iscrizione

    Pagamenti
    Idpagam
    Idmensile
    Datapagam
    Acconto

    Ora ho fatto una maschera iscrizione mensile
    Dove inserisco l'iscrizione mensile la quota ecc
    E una sotto maschera in foglio dati dove compaiono i pagamenti
    Ora volevo creare all'interno della maschera principale una casella di testo che assumesse il valore della somma degli acconti e un'altra che mostr il saldo e un evento che non mi faccia inserire più acconti se il saldo è stato raggiunto.
    Grazie Gian almeno qualche dritta please
  • Re: Operazioni matematiche su Maschere con VBA

    Giammi77 ha scritto:


    Ciao, non volevo aprire un altro post. Ho un problema che credo rientri nell'argomento :
    Sto facendo un db per gestire l'iscrizione clienti per una piccola palestra :
    Tabelle:

    Anagrafica clienti
    Id , nome ecc

    Iscrizione mensile
    Id mensile, idcliente, quota iscrizione

    Pagamenti
    Idpagam
    Idmensile
    Datapagam
    Acconto

    Ora ho fatto una maschera iscrizione mensile
    Dove inserisco l'iscrizione mensile la quota ecc
    E una sotto maschera in foglio dati dove compaiono i pagamenti
    Ora volevo creare all'interno della maschera principale una casella di testo che assumesse il valore della somma degli acconti e un'altra che mostr il saldo e un evento che non mi faccia inserire più acconti se il saldo è stato raggiunto.
    Grazie Gian almeno qualche dritta please
    Penso che il tuo problema abbia in comune soltanto il titolo del thread, ma lo scenario tabelle e maschere appare molto diverso.
    A parer mio non è corretto che tu abbia tabella "Iscrizione mensile" e sottotabella "Pagamenti". Siccome entrambe parlano di soldi che devono partire dalle tasche dei Clienti e arrivare nella cassa della Palestra, le accomunerei in una sola tabella Pagamenti. Per distinguere se si tratta di QuotaIscrizione, RataMensile, Saldo o altro (...non sempre tutti sono puntuali con i pagamenti) potresti aggiungere un campo Causale.
    Dopo aver impostato le tabelle in questo modo, occorre riformulare la tua domanda...per il momento preferirei che tu osservassi il nuovo scenario da me proposto.
  • Re: Operazioni matematiche su Maschere con VBA

    Orca l'oca pensavo di aver ragionato in modo correttio . Perché pensavo che un cliente che si iscrive per un mese crea un record nella tabella iscrizion che prevede una quota la quale viene poi pagata nella tabella pagamenti . Prima di rifare il lavoro volevo capire poi come risolvere il problema che avrei poi ... Non me ne volere gian
  • Re: Operazioni matematiche su Maschere con VBA

    Tu hai posto 3 domande:
    1) creare all'interno della maschera principale una casella di testo che assumesse il valore della somma degli acconti
    2) un'altra che mostri il saldo
    3) un evento che non mi faccia inserire più acconti se il saldo è stato raggiunto.
    alle quali occorre rispondere una per una, passo passo.

    1) Devi organizzare una query dove delimiti il tempo entro il quale calcolare la somma degli acconti. Il risultato di questa query diventerà il valore in una casella di testo all'interno della tua maschera.

    2) Sarà un'altra casella di testo in maschera dove scriverai semplicemente ValoreQuotaTotale - ValoreCasellaPunto1). Attenzione però che ValoreQuotaTotale può variare negli anni, quindi devi aver cura di contabilizzarla in modo coerente per non avere risultati sballati ogni volta che questo valore cambia nel tempo.

    3) All'evento "Su corrente" della maschera, puoi associare la proprietà Locked=Vero oppure Enabled=Falso sulla sottomaschera, vincolando il tutto con una espressione di controllo, in una macro o codice VBA.

    Per ora ti ho dato delle imbeccate puramente logiche. Dimmi dove non comprendi su questo o quel punto.
  • Re: Operazioni matematiche su Maschere con VBA

    Ok capo
    Sei veramente gentile a dedicarmi tempo grazie !
    Allora per quato riguarda :
    1. Preparo una query pagamenti per cliente
    Dove filtro i dati pagamenti in base al idcliente e all'idpagamento e ottengo tutti gli acconti di questo tizio per questa iscrizione e faccio il raggruppamento e la somma degli acconti
    In SQL:
    Select acconto,sum(acconto) as somma from pagamenti where idcliente="Pippo" and idpagamento="1"
    Ora come faccio a far eseguire questa query senza farla vedere nella maschera iscrizione mensile e poi passare somma in una casella di testo (testo1) nella maschera
    Poi avendo questo dato
    Faccio un'altra casella di testo2 dove metto =[prezzo]-[testo1] e poi
    Faccio una ruotino sull'evento quando aggiungo un record pagamenti nella sotto maschera pagamenti dove if testo2 =0 then msgbox"importo già saldato" e poi qualche istruzione per uscire.
    Che dici troppo casino?
    Gian
Devi accedere o registrarti per scrivere nel forum
9 risposte