Calcolo automatico con condizione se

di il
4 risposte

Calcolo automatico con condizione se

Buongiorno,
ho necessità di trasformare queste istruzione in codice ma non sapendo programmare ho qualche problema.
Cosa devo fare? Mi serve che in un campo sia restituito un risultato in automatico. Tale risultato dipenderà e sarà attivato solo da altri campi. Mi serve che tale automazioni influenzi solo ed esclusivamente tutti i preventivi che saranno fatti da oggi in avanti. Tutto ciò che già esiste non dovrà essere modificato.

Prendo la maschera PREVENTIVI.
In essa i campi in oggetto del mio IF....END IF saranno:
- boxRicevutoInviato --> è una casella di riepilogo in cui posso selezionare due voci: Ricevuto oppure Inviato.
- Societa --> é il campo in cui visualizzo i nomi di alcune delle mie società (NON intendo clienti e fornitori). Tale campo viene compilato in automatico a seconda di cosa seleziono in una casella combinata (tale casella non mi interessa)
- Numero Preventivo --> è l’oggetto di questo post. Questo campo è testo (Formato --Formato --@) e qui dentro per ora scrivo manualmente il numero o testo del preventivo ricevuto e inviato.

Ho ragionato sulla sequenza delle istruzioni e penso potrebbe essere un qualcosa di simile, solo che non so come scriverla. Metto tra parentesi tonde () i nomi dei campi; per intenderci sono in maschera, clicco su un campo da compilare, vado in finestra delle proprietà ? Atro ? Nome Elemento. Nome elemento lo racchiudo tra parenti per farvi intendere che intendo quello.

1. Decido di aggiungere un nuovo preventivo e quindi clicco sul pulsante per farlo
2. Si apre una scheda nuova in cui l’unico elemento pre inserito è l’ID_Preventivo (è la chiave primaria)
3. (Numero Preventivo) è vuoto per ora. Sarà compilato solo se i campi (boxRicevutoInviato) e (Societa) saranno come dire …contenenti un dato
4. Vorrei che (Numero Preventivo) sia compilato nel momento che ci clicco sopra, quindi l’evento clic.

Questo è il codice che ho pensato.
(Societa) può avere n società. Robur SRL, Robur INC, etc etc. Ogni società deve avere la sua numerazione.
Mi spiego, magari la SRL ad oggi è a 50 preventivi, mentre la INC è a 10 preventivi.




Private Sub Numero_Preventivo_Click()
Le variabili la uso per gestire il numero di preventivi per ciascuna Società
Dim Robur SRL As Integer
Dim Robur INC As Integer
Robur SRL = 50
Robur INC = 10
IF boxRicevutoInviato = Inviato AND Societa = è non vuoto, intendo che c’è scritto qualcosa in questo campo THEN
IF Societa = Che cosa c’è scritto nel campo (Societa) THEN
Numero Preventivo = Numero vecchio preventivo + Anno
In sostanza vorrei vedere 51_2017. Va da sé che Anno dovrà cambiare in accordo con l’anno in cui mi troverò.
Il numero 51 è ottenuto in questo modo: La prima volta assoluta che userò la compilazione automatica il sistema otterrà 51 facendo Robur SRL +1.
La seconda volta che il sistema generà un preventivo per Robur SRL dovrà essere 52 e così via. Stesso discorso per Robur INC.
Se però nel futuro creassi un'altra Società, ad esempio Fule SPA, il primo preventivo di Fule SPA dovrà essere 1_l’anno in cui mi trovo… 1_2018
END IF
ELSE
qui vorrei che nel caso boxRicevutoInviato = Ricevuto oppure Societa è vuota anche se clicco su (Numero Preventivo) non succede nulla, tradotto non c’è nessun numero di preventivo generato in automatico
END IF
End Sub

4 Risposte

  • Re: Calcolo automatico con condizione se

    luca3.34 ha scritto:


    Mi serve che in un campo sia restituito un risultato in automatico. Tale risultato dipenderà e sarà attivato solo da altri campi.
    Non pensi che un "valore calcolato" non debba essere inserito in un campo di tabella? Per i valori calcolati, soprattutto se prolissi, occorre usare le query.
  • Re: Calcolo automatico con condizione se

    OsvaldoLaviosa ha scritto:


    luca3.34 ha scritto:


    Mi serve che in un campo sia restituito un risultato in automatico. Tale risultato dipenderà e sarà attivato solo da altri campi.
    Non pensi che un "valore calcolato" non debba essere inserito in un campo di tabella? Per i valori calcolati, soprattutto se prolissi, occorre usare le query.
    Purtroppo non sono molto pratico di Access e ho iniziato solo settimana scorsa.
    Sono aperto a suggerimenti.
    Molte semplicemente inserendo i dati da maschera ho pensato che tutta questa condizione sia da gestire dai campi della maschera
  • Re: Calcolo automatico con condizione se

    OsvaldoLaviosa ha scritto:


    luca3.34 ha scritto:


    Mi serve che in un campo sia restituito un risultato in automatico. Tale risultato dipenderà e sarà attivato solo da altri campi.
    Non pensi che un "valore calcolato" non debba essere inserito in un campo di tabella? Per i valori calcolati, soprattutto se prolissi, occorre usare le query.
    Non capisco perchè dovrei usare una query in questo caso. Potresti spiegarmelo per cortesia?

    EDIT: Penso di aver capito il motivo ma non so come usare suddetta query per attuare l'automazione che ho in mente
  • Re: Calcolo automatico con condizione se

    Penso di aver forse trovato la via ma ho un attimo bisogno di una mano.
    Ho creato la query query_PreventiviInviati composta da 4 colonne: MiaAzienda;RicevutoInviato;Preventivo;Numero.

    Da maschera preventivi sono andato sull'elemento in cui mi interessa vedere i risultati, tale elemento si chiama [Preventivo].
    Per alimentare la formula uso poi altri campi presi dalla maschera Preventivi: Societa , boxRicevutoInviato end infine Data Preventivo
    Selezionando Preventivo sono andato su Generatore di Espressioni.

    Questa è l'espressione.

    IIf([boxRicevutoInviato]= "Inviato" And IsEmpty([Societa] And [Data Preventivo]);
    [Preventivo]=[(max([query_PreventiviInviati]![Numero]) And [query_PreventiviInviati]![MiaAzienda]=[Societa]]+1 &"_"&Year([Data Preventivo]);
    MsgBox("Inserire preventivo ricevuto"))

    A parole vorrei questo. Se boxRicevuto ha valore "Inviato" e Societa e Data Preventivo non sono vuoti (insomma ho selezionato qualcosa li dentro),
    allora prendi query_PreventiviInviati e la filtri per il valore che è specificato in Societa e di questo elenco prendi il valore più grande per l'anno in esame (siamo nel 2017). A questo punto il valore di Preventivo sarà: valore massimo +1 a cui mi aggiungi _ e poi l'anno Preso da Data Preventivo Mi componi la stringa 51_2017.

    Grazie a chi avrà la gentilezza di aiutarmi


    Dimenticavo finito tutto mi serve che il sistema salvi nella tabella preventivi il numero associato a tale preventivo
Devi accedere o registrarti per scrivere nel forum
4 risposte