Creazione formule matematiche

di il
19 risposte

Creazione formule matematiche

Buongiorno a tutti.
Sono nuovo del forum e ringrazio anticipatamente quanti vorranno/potranno darmi una mano.
La mia richiesta è la seguente: c'è un modo per l'utente finale di creare una formula matematica che sia poi "digerita" da Access?
Provo a spiegarmi: devo calcolare le dimensioni di un pezzo di un mobile in relazione alle misure del mobile stesso
es. LarghezzaPezzo =LarghezzaMobile -2*Spessore
E' però l'utente che deve configurare le formule che determineranno le misure dei vari pezzi, a seconda del tipo di mobile, quindi ho immaginato di impostare una maschera con i campi , "Operatore1", "Operatore2", "Operatore3", ecc.
L'utente dovrebbe quindi scrivere
Operatore1=LarghezzaMobile
Operatore2=-
Operatore3=2
Operatore4=*
Operatore5=Spessore
Immaginavo a questo punto di leggere con visualBasic i valori dei vari campi ed eseguire il calcolo ma ovviamente, concatendando le variabili il risultato è una stringa e non il risultato del calcolo.
So che potrei far compilare all' utente un foglio excel ed usarlo per leggere i risultati, ma mi sembra veramente strano che non si possa fare direttamente in Access in qualche modo......
Qualcuno sa se si può fare? e, se si, come?
Grazie

19 Risposte

  • Re: Creazione formule matematiche

    PocoPratico ha scritto:


    Provo a spiegarmi: devo calcolare le dimensioni di un pezzo di un mobile in relazione alle misure del mobile stesso
    es. LarghezzaPezzo =LarghezzaMobile -2*Spessore
    E' però l'utente che deve configurare le formule che determineranno le misure ...
    No cosi non va! lutente inserisce le misure i calcoli li fa Access
    dei vari pezzi, a seconda del tipo di mobile, quindi ho immaginato di impostare una maschera con i campi , "Operatore1", "Operatore2", "Operatore3", ecc.
    L'utente dovrebbe quindi scrivere
    Operatore1=LarghezzaMobile >questo lo Inserisce il cliente
    Operatore5=Spessore >questo lo Inserisce il cliente
    il calcolo lo fa Access
    Immaginavo a questo punto di leggere con visualBasic i valori dei vari campi ed eseguire il calcolo ma ovviamente, concatendando le variabili il risultato è una stringa e non il risultato del calcolo.
    Non si concatenano i calcoli:
    Dato1,Dato2....etc
    risultato=Dato1*Dato2 (moltiplicazione)
    risultato=Dato1/Dato2 (Divisione)
    risultato=Dato1+Dato2 (Somma)
    Se Vba i campi li puoi lasciare cosi nelle queri tra parentesi quadre
    So che potrei far compilare all' utente un foglio excel
    Execel è urgente abbandonarlo, Access è un altro pianeta
    ... ma mi sembra veramente strano che non si possa fare direttamente in Access in qualche modo......
    Infatti si può fare direttamente in Access,
    Io ho realizzato una calcolatrice che fa da conto come dico io (non mi fido delle calcolatrici, di nessuna )
    Saluti
  • Re: Creazione formule matematiche

    Grazie della risposta Gianni, ma...con la tua soluzione io dovrei configurare le formule per calcolare i pezzi, invece io voglio che l'utente finale possa configurare i mobili come desidera.
    Es1 in un mobile con due ante in orizzontale ogni anta sarà AltezzaAnta=AltezzaMobile-AltezzaZoccolo, LarghezzaAnta=LarghezzaMobile/2
    Es2 in un mobile con 2 ante in verticale ogni anta sarà AltezzaAnta=(AltezzaMobile-AltezzaZoccolo)/2, LarghezzaAnta=LarghezzaMobile.
    Se configuro io le operazioni su VBA limito il cliente ai mobili impostati, mentre voglio dargli la possibilità di configurarne all'infinito
  • Re: Creazione formule matematiche

    In Access non devi pensare solo ai calcoli da fare (caratteristica più tipica di Excel), ma alle TABELLE che contengono DATI. Se non ci fai conoscere nomi propri di tabelle, campi, relazioni...non riusciamo nemmeno a capire da dove partire.
  • Re: Creazione formule matematiche

    Il problema che hai descritto e' interessante MA l'approccio e' concettualmente sbagliato.

    compito di un database e' quello di gestire i dati (salvarli estrarlo ordinarli, ecc)

    la formula da utilizzare NON DEVE essere inserita dall'utente MA dedotta AUTOMATICAMENTE dai dati selezionati.

    Ovviamente questa operazione NON E' responsabilita del database ma, se vogliamo, del modulo dell'applicazione che si occupa della gestione delle informazioni 'geometriche'.

    considera che il numero di possibili formule che ti potrebbero servire non e' infinito, ma molto limitato.
    'spannometricamente' I mobili sono 'parallelepipedi' e unione intersezione differenza di parallelepipedi.

    le formule per calcolare superficie e volume di un parallelepipedo sono banali e dipendono SOLO dalle dimensioni del parallelepipedo stesso.
    Ma le dimensioni sono dati, gestiti da access.

    Questione totalmente diversa sono le formule legate a unione/intersezione/differenza di parallelepipedi.
    Qui serve NON SOLO competenze di programmazione (queste sono la parte PIU' SEMPLICE), ma competenze di ""Geometria Computazionale"".

    Tanto per avere un'idea generale in 2D
    https://it.wikipedia.org/wiki/Misura_di_Jorda

    Nota finale:

    Excel NON E' Access.

    Benche' SEMBRI,a prima vista, che i due siano simili perche' trattano informazioni in forma ""tabellare"", NON HANNO NIENTE a che fare l'uno con l'altro.

    E' come dire che un lastrone di vetro e' la stessa cosa di un laghetto d'acqua perche' entrambi sono trasparenti.
    Prova tu a fare un tuffo carpiato sopra un lastrone di vetro!
  • Re: Creazione formule matematiche

    OsvaldoLaviosa ha scritto:


    In Access non devi pensare solo ai calcoli da fare (caratteristica più tipica di Excel), ma alle TABELLE che contengono DATI....
    Grazie Osvaldo.
    L'esempio che ho inventato è appunto solo un esempio, il concetto è invece capire se c'è un modo per far "configurare" una formula dall'utente finale
  • Re: Creazione formule matematiche

    Secondo me lo puoi fare tu da VBA l'interprete delle funzioni
    chiaramente avrai in input una formula ed N parametri che corrisponderanno ad altrettanti campi
    sto immaginando la cosa in modo che i campi siano presi tutti da una stessa riga di dati (che sia tab o query)
    più difficile immaginarmelo da fonti diverse
  • Re: Creazione formule matematiche

    migliorabile ha scritto:



    Nota finale:

    Excel NON E' Access.

    Benche' SEMBRI,a prima vista, che i due siano simili perche' trattano informazioni in forma ""tabellare"", NON HANNO NIENTE a che fare l'uno con l'altro.
    Grazie, migliorabile!
    Mi sa che alla fine la cosa più vera è questa qua sopra.
    Infatti sono sempre più dell' idea di far interagire i due software facendo fare i calcoli ad Excel e gestendoli poi con Access.
  • Re: Creazione formule matematiche

    muttley005 ha scritto:


    Secondo me lo puoi fare tu da VBA l'interprete delle funzioni
    eh già, muttley005, ma....come?
    hai qualche idea?
  • Re: Creazione formule matematiche

    PocoPratico ha scritto:


    Grazie della risposta Gianni, ma...con la tua soluzione io dovrei configurare le formule per calcolare i pezzi, invece io voglio che l'utente finale possa configurare i mobili come desidera.
    Es1 in un mobile con due ante in orizzontale ogni anta sarà AltezzaAnta=AltezzaMobile-AltezzaZoccolo, LarghezzaAnta=LarghezzaMobile/2
    Es2 in un mobile con 2 ante in verticale ogni anta sarà AltezzaAnta=(AltezzaMobile-AltezzaZoccolo)/2, LarghezzaAnta=LarghezzaMobile.
    Io lo immagino cosi, premessa una visualizzazione lineare e non 3D
    Una TbProgetto con questi campi:
    IdProgetto
    NomeCliente
    SuperficeDaCoprire...etc >qui il cliente indicherà la superfice totale da coprire

    Iniziamo con le Tab che saranno compilate a Tua cura

    TabComponenti:
    IdComponente
    Sezione >qui indicare se il componente appartiene alla parte alta o a quella bassa
    Descrizione
    Altezza
    Larghezza
    Profondita
    Scala in seguito ti spiego a cosa può essere utile
    Nb i dati che riguardano i componenti dovrai inserirli tu peraltro credo siano delle misure standard per quel che conosciamo.
    Il funzionamento dovrebbe essere questo:
    1) Tu inserisci i dati dei componenti misure comprese
    2) Il cliente o tu per lui scegli i componenti fino a copertura della superfice da coprire (questo lo calcola access)
    Siamo agli inizi vero?
    questo è un input di base...poi la fame vien mangiando come si dice dalle mie parti.
    Se configuro io le operazioni su VBA limito il cliente ai mobili impostati, mentre voglio dargli la possibilità di configurarne all'infinito
    Sbagli ancora "le operazioni" li fa ACCESS (sempre che per questo si intenda moltiplicazioni divisioni e quant'altro)
    in ogni modo temo non ci intendiamo sulla attività che viene gestita dal Db, nello specifico ho da chiederti, stiamo parlando di un venditore di mobili componibili, quindi a misure standard del componente o di un falegname o cos'altro?
    quell'infinito si riferisce a superfici variabili da coprire o a infinite configurazioni?
    Per intenderci un cliente ti può richiedere un'anta larga cm 45,36? credo di no?... o chiarisci.


    Buon lavoro
  • Re: Creazione formule matematiche

    PocoPratico ha scritto:


    migliorabile ha scritto:



    Nota finale:

    Excel NON E' Access.

    Benche' SEMBRI,a prima vista, che i due siano simili perche' trattano informazioni in forma ""tabellare"", NON HANNO NIENTE a che fare l'uno con l'altro.
    Grazie, migliorabile!
    Mi sa che alla fine la cosa più vera è questa qua sopra.
    Infatti sono sempre più dell' idea di far interagire i due software facendo fare i calcoli ad Excel e gestendoli poi con Access.
    Mah chi l'ha detto che Access non sa fare i calcoli? Io NO tantomeno migliorabile.
    Per spiegarti la differenza tra Access e Excel ti liquido rispondendoti come mi rispose il mio tecnico di fiducia quando ero io
    indeciso nella scelta, correva l'anno 1980 D.C..
    Lui uomo di grande valore ma di poche parole disse:
    Giovanni Excel è il figlio scemo di Access!
  • Re: Creazione formule matematiche

    Ok, innanzi tutto grazie a tutti quanti . Non è scontato che qualcuno scelga di scervellarsi per risolvere un problema che non è suo.....
    Mi pare che l'esempio dei mobili alla fine porti fuori da quello che è la mia curiosità/esigenza, quindi provo a cambiare esempio per vedere se riesco a centrare il problema
    Diciamo che voglio che l'utente possa usare Access come se fosse una calcolatrice con solo gli operatori "+-*/()":
    lui scrive 50+20-(30/3), oppure, che so (320-2*20)*1.5, oppure qualunque altra formula, e io devo poter restituire il risultato.
    L'unica prova che ho fatto, ingenuamente (anche se ero quasi sicuro che non avrebbe funzionato), è stata inserire un operatore per ogni campo e poi leggere e concatenare la stringa: ovviamente access mi restituisce correttamente la stringa, ma non fa i calcoli.
    Ora pensavo tre soluzioni:
    1) 2tabelle : tblOperatori con IdOperatore, Operatore, tblOperazioni con IdOperazione, IdOperatore, naturalmente le due tabelle sono relazionate 1 a molti con IdOperatore . Maschera frmOperazione con sottomaschera frmOperatori con 6 pulsanti "+-*/ e ()". Se l'utente digita il valore lo scrive direttamente, se sceglie il pulsante con l'operatore io creo il record con la relativa operazione matematica.
    Quando ha finito la formula, con click su un pulsante "OK" io ciclo i record con VBA: se è un valore lo scrivo nella variabile, se è un operatore lo aggiungo alla variabile. Alla fine dovrebbe funzionare, giusto?
    2)con le stesse tabelle dl punto 1 lascio scrivere direttamente tutto all' utente imponendo che i valori accettati sono "+ - * / ()" o un dato numerico, poi faccio con VBA quello che ho scritto al punto 1
    3)Forse la più efficace....Collego ad Access un file Excel con le formule, gli passo le variabili e leggo e restituisco il risultato.
    P.S. Solo per centrare meglio la mia condizione: utilizzo access e VBA da una ventina d'anni, a livello un pò più che basico, ma senza formazione specifica. Quando non riesco a fare qualcosa generalmente ravano su internet, trovo qualche soluzione che si adatta, ci metto le mani e la sistemo a mio uso. Non sono assolutamente un esperto, ma sono più che un novizio
    A voi la palla
  • Re: Creazione formule matematiche

    Forse fraintendo la complessità dell'esigenza, che se fosse tale sarebbe tutt'altro che banale e non risolvibile senza librerie esterne per il motore di calcolo...
    In ogni caso Access ha una funzione che si chiama EVAL(...) che risolve il contenuto della stringa passata come parametro.

    Banalmente, faccio un esempio:
    
    Dim sFormula As String
    sFormula="(5+3)/2"
    Msgbox EVAL(sFormula)
    Viene restituito [4]

    Ne consegue che se si predispone una TextBox e si digita la Forumla o il calcolo
    
    Msgbox EVAL(Me!NomeTexBox.Value)
    Se io nella mia TextBox scrivo
    3*Sin(90)+3*cos(90)
    otterngo correttamente 1.337769...

    Ora per favi capire meglio la facciamo più complessa:
    
    Function X()
       Dim sFormula As String
       sFormula = "3*Sin(Angle())+3*cos(Angle())"
       MsgBox Eval(sFormula)
    End Function
    
    Function Angle() As Integer
        Angle = 90
    End Function
    Se dalla finetra immediata [CTRL+G] richiamo la funzione X, EVAL riconosce la chiamata alla Funzione Angle() interna e la risolve.

    Saluti
  • Re: Creazione formule matematiche

    In modalità semplificatissima
    Excel = foglio di calcolo
    Access = database (lo so, Jet non è Access: ricordo che è modalità supersemplificata)
    quindi due programmi diversi.
    Come ha detto Migliorabile, il fatto che si vedano le tabelle e le query che ricordano i fogli di calcolo non vuol dire niente.
    Anche Word fa qualche calcolo se lo si istruisce a dovere ma penso che nessuno lo userebbe quando invece serve Excel.
    Quando si conoscono le caratteristiche di ogni programma si capisce qual è quello giusto da usare.

    Gianni55 ha scritto:


    Per spiegarti la differenza tra Access e Excel ti liquido rispondendoti come mi rispose il mio tecnico di fiducia quando ero io
    indeciso nella scelta, correva l'anno 1980 D.C..
    Il tuo tecnico di fiducia era un po' troppo di poche parole e magari anche un po' impreciso? o forse la tua memoria ti tradisce?
    Wikipedia riporta la prima versione di Access nel 1992 mentre quella di Excel è del 1987.
    Riengo improbabile che si sia espresso in quel modo nel 1980.
    Indipendentemente dal fatto, poi, che il "papà sia più giovane del figlio", dire che Excel è il figlio scemo di Access è al limite dello "scempio informatico".
  • Re: Creazione formule matematiche

    Philcattivocarattere ha scritto:


    Per spiegarti la differenza tra Access e Excel ti liquido rispondendoti come mi rispose il mio tecnico di fiducia quando ero io
    indeciso nella scelta, correva l'anno 1980 D.C..
    Il tuo tecnico di fiducia era un po' troppo di poche parole e magari anche un po' impreciso? o forse la tua memoria ti tradisce?
    Wikipedia riporta la prima versione di Access nel 1992 mentre quella di Excel è del 1987.
    Riengo improbabile che si sia espresso in quel modo nel 1980.
    Indipendentemente dal fatto, poi, che il "papà sia più giovane del figlio", dire che Excel è il figlio scemo di Access è al limite dello "scempio informatico".
    [/quote]
    La terza Phil la terza, la memoria, può essere stata quella 3° dose?
    Io corro dal medico, grazie
Devi accedere o registrarti per scrivere nel forum
19 risposte