Prodotto con condizioni

di
Anonimizzato12043
il
11 risposte

Prodotto con condizioni

Salve a tutti, sono un neo iscritto al forum, che mi è stato molto utili per i primi approcci a Access.
Vorrei chiedervi un aiuto, spero che riesco a spiegarmi:
devo fare in un campo una moltiplicazione tra il valore di un peso espresso in grammi e un importo che varia a secondo del peso, mi spiego meglio
se il peso è compreso tra 1 e 20 me lo deve moltiplicare per 4.30
se il peso è compreso tra 21 e 50 me lo deve moltiplicare per 5.30
e così via per un massimo di 7 opzioni.
Ho provato ma ci riesco solo con una condizione alla seconda mi dà errore.
Mi potreste dare un aiuto.
Vi ringrazio fin d'ora

11 Risposte

  • Re: Prodotto con condizioni

    Ciao,

    Prova a postare il tuo codice con relativo errore cosi possiamovedere di cosa si tratta e se ci riusciamo correggere l'errore
  • Re: Prodotto con condizioni

    La formula che ho messo è questa:

    =IIf([peso] Between 1 And 10;[peso]*4,3)

    se c'è solo questa condizione funzione se continuo con le altre ipotesi dà errore.

    Grazie
  • Re: Prodotto con condizioni

    In questi casi converrebbe fare una funzione esterna... ti faccio un'esempio
    
    SELECT *,CalcoloPeso([Peso]) As PesoFinale
    FROM NomeTabella
    Quello che ho definito [CalcoloPeso(...)] è una Funzione Public in un modulo standard di questo tipo
    
    Public Function CalcoloPeso(Valore As Single) As Single
       Select Case Valore
            Case Is < 20
                CalcoloPeso= Valore * 4.3
            Case Is < 50
                CalcoloPeso= Valore * 5.3
            Case Is < 70
                CalcoloPeso= Valore * 6.3
            '..... altri 5 casi...
        End Select
    End Sub
    Fai attenzione, ho usato il SELECT CASE in quanto il controllo è SEQUENZALE e come vedi le condizioni che nel tuo esempio comprendono 2 estremi in questo modo sono riconducibili a solo 1 confronto, questo consente l'ottimizzazione... e la semplificazione.
    Mi spiego meglio
    Se Peso=15 rientra nella 1° Condizione
    Se Peso=25 non confronto più se tra 20 e 50 ma, essendo >20, salto la 1°(<20) e di conseuenza essendo <50 rientro nella 2°... ecc...!

    Ciao
  • Re: Prodotto con condizioni

    La sintassi di iif e' :

    IIf(espr, partevera, partefalsa)

    quindi dove c'e parte falsa devi mettere un altro iif... Prova vedi se ti riesce
  • Re: Prodotto con condizioni

    Per @Alex,
    scusa per l'ignoranza ma non ho capito bene dove scrivere il codice da te scritto; poi quel codice come lo faccio ad agganciare sul campo della maschera e della query che mi deve fare il calcolo.
    Penso che sia una domanda idiota, ma sono alle prime armi e per questo chiedo venia se i miei dubbi possano sembrare ridicoli.
    Il nome della tabella su cui attingere il peso è nominata come Ricevuta.
    Ti ringrazio sin d'ora se mi puoi dare una mano.
    Grazie
    Saluti
  • Re: Prodotto con condizioni

    La funzione che ti ho postato la puoi inserire in un Modulo, fai COPIA/INCOLLA... devi ovviamente completarla con gli STEP di controllo che ti servono.

    Poi prova a creare quella QUERY che sempre ti ho proposto, sostituendo i Nomi dei Campi e Tabella reali del tuo caso, poi la APRI e vedi come lavora...!

    Quando hai fatto quelle prove, creare una Maschera è banale...
  • Re: Prodotto con condizioni

    Ciao @Alex,
    ho scritto il codice, vedi se è esatto:
    ********************************************************
    Public Function CalcoloPeso(Valore As Single) As Single
    Select Case Valore
    Case Is < 20
    Valore = Valore * 4.3
    Case Is < 50
    Valore = Valore * 5.3
    Case Is < 100
    Valore = Valore * 5.65
    Case Is < 250
    Valore = Valore * 6.05
    Case Is < 350
    Valore = Valore * 6.70
    Case Is < 1000
    Valore = Valore * 8.05
    Case Is < 3000
    Valore = Valore * 10.55
    End Select
    End Sub
    *********************************************
    questa sintassi si riferisce a una query
    SELECT *,CalcoloPeso([Peso]) As PesoFinale
    FROM Tabella1
    **************************************************
    in che modo faccio girare quel modulo sulla query??
    Ti ringrazio della disponibilità e professionalità concessami.
    Grazie
    Saluti
  • Re: Prodotto con condizioni

    Il codice contiene un'errore, peraltro mio nell'esempio precedente.
    Ti correggo il tutto:
    Public Function CalcoloPeso(Valore As Single) As Single
        Select Case Valore
            Case Is < 20
                CalcoloPeso = Valore * 4.3
            Case Is < 50
                CalcoloPeso = Valore * 5.3
            Case Is < 100
                CalcoloPeso = Valore * 5.65
            Case Is < 250
                CalcoloPeso = Valore * 6.05
            Case Is < 350
                CalcoloPeso = Valore * 6.7
            Case Is < 1000
                CalcoloPeso = Valore * 8.05
            Case Is < 3000
                CalcoloPeso = Valore * 10.55
        End Select
    End Sub
    Ora se crei una Query con quel predicato, ti troverai i Campi Standard della Tabella, più il campo calcolato che la Query definisce [PesoFinale] che è calcolato in base alla Funzione.
  • Re: Prodotto con condizioni

    Ciao @Alex,
    domanda stupida. Usando access come faccio a fare una query con quel predicato!

    Poi nella maschera di inserimento dati nel campo Totale come faccio a far girare quella funzione!
    Forse sto abusando della tua pazienza, ma ripeto sono un neofita!!
    Ti ringrazio dell'aiuto.
    Saluti
  • Re: Prodotto con condizioni

    nicopass ha scritto:


    Ciao @Alex,
    domanda stupida. Usando access come faccio a fare una query con quel predicato!
    A questa risposta anche la GUIDA può darti supporto... si presume tu sia autonomo ad usare almeno la guida...!
    Crea una Query VUOTA in visualizzazione struttura, nella Barra Menù devi trovare l'Opzione SQL che ti consente di andare a Definire il predicato.

    nicopass ha scritto:


    Poi nella maschera di inserimento dati nel campo Totale come faccio a far girare quella funzione!
    Non devi farla eseguire alla Maschera, viene eseguita nella Query, la maschera conterrà un CONTROLLO AGGIUNTIVO associato a quel campo Calcolato...(ovviamente quel controllo deve essere NON EDITABILE).

    nicopass ha scritto:


    Forse sto abusando della tua pazienza, ma ripeto sono un neofita!!
    Ti ringrazio dell'aiuto.
    Saluti
    Diciamo che almeno le BASI sarebbe opportuno riuscissi ad autocostruirle...
  • Re: Prodotto con condizioni

    Scusami e grazie dell'aiuto!
    Saluti
Devi accedere o registrarti per scrivere nel forum
11 risposte