CERCA VERTICALE

di il
14 risposte

CERCA VERTICALE

Buongiorno a tutti,
Sono nuovo di questo forum e sono anche alle prime armi con Access.
Come accade di sovente anch'io ho iniziato a interessarmi ad Access dopo aver utilizzato Excell per diverso tempo e anche con dei discreti risultati,.....parere assolutamente di parte, essendo il mio e quello di pochi amici, ...tutti pagati...

Ho provato a cercare in questo forum ma non sono riuscito a trovare una soluzione già esistente ed è per questo che sono qui a scrivervi per vedere se, spiegandovi quello che vorrei fare, riesco, grazie al vostro prezioso aiuto a progredire nei lavori...

Cercherò di essere il più chiaro e semplice possibile nell'illustrare le mie necessità...

Vorrei ottenere la stessa cosa che in Excel si ottiene col "cerca verticale" quando si cerca in una tabella il valore corrispondente, che è presente ad esempio nella colonna due e che è in relazione con un'altro valore presente nella colonna uno.
Allego una piccola tabella in cui nel Campo uno ho i "Metri Quadri" e nel Campo due ho i "Costi".

I "Costi" corrispondono ai relativi metri quadri del Campo uno....

es: a metri quadri 10 corrisponde 5.547,87 €, oppure a metri quadri 25 (campo uno) corrisponde 11.907,27€ (in campo due).

Se lo facessi con Excel sarebbe semplice, basta usare il cerca verticale, ma con Access mi sono purtroppo arenato (anche dopo vari tutorial su you tube).

Sto costruendo una maschera in Access, collegata a una tabella in cui ci sono, fra molti altri Campi, i dati dei Metri Quadri e i dati dei Costi.

In questa maschera c'è una casella combinata alla quale ho associato i dati della colonna dei Metri Quadri (tipo menù a tendina) e vorrei che nel momento in cui nella casella combinata seleziono ad esempio Metri Quadri "10", Access mi restituisca, nella Casella di Testo dedicata, € 5.547,87 ; oppure se seleziono nel Campo "Metri Quadri" 25 mi restituisca il corrispondente valore del Campo "Costi" (11.907,27)

Quindi la domanda è:

è possibile fare in modo di ottenere questo con Access?

Cioè è possibile creare, in una Casella di Testo dedicata allo scopo, un comando (Tipo il Cerca Verticale in Excel) col quale vedersi restituire il valore legato ad un altro Valore che è posto un altro Campo (come nell'esempio qui sopra).

In attesa di vostro riscontro vi saluto.
Allegati:
32356_b01a68556a6e5f89440554d061a4e507.png
32356_b01a68556a6e5f89440554d061a4e507.png

14 Risposte

  • Re: CERCA VERTICALE

    Nella cbo che hai usato metti 2 colonne, la prima è mq la seconda è quella che desideri (costo) poi nell'afterupdate della cbo scrivi 1 riga di vba che ti visualizzino nella textbox (suggerisco bloccata) il valore della seconda colonna della cbo
    
    me.mytextbox = me.mycbo.column(1) <--- 1 perchè è a base 0
    
    come tutti quelli che cercano di passare da excel ad access hai la tendenza (almeno da quello che scrivi) a voler riprodurre cose che si fanno in excel allo stesso modo su access. Il mio suggerimento è quello di uscire da quella visione (Access ti da molte + possibilità), prendi un qualsiasi libro di base e studialo o almeno leggilo bene e capirai le potenzialità di questo strumento.

    EDIT: questo dando per scontato che i valori di mq siano univoci per costo
  • Re: CERCA VERTICALE

    Muttley005
    Prima di tutto ti ringrazio per la rapidità nel rispondermi....
    Seconda cosa seguirò il tuo consiglio nel prendermi un manuale da studiare... perché è come dici tu.. tendo ancora a ragionare come in Excel anche in Access.

    detto questo ho fatto copia delle righe di vba e incollate sul afterupdate, ma non mi funziona ancora...

    forse è perché non capisco cosa intendi : "metti nella cbo che hai usato due colonne....."
    ..mi sento una specie di cavernicolo ma non so cosa vuoi dirmi.... potresti essere un po più chiaro nello spiegarmi i passaggi?

    mi rendo conto che alzerai gli occhi al cielo ...
    Allegati:
    32356_d164518c86d6dd9973498e629a7748bd.png
    32356_d164518c86d6dd9973498e629a7748bd.png
  • Re: CERCA VERTICALE

    Il [Cerca.Vert] di Excel in Access deve essere Riferito alla Tabella... quindi ci si orienta alle funzioni di aggregazione, nel tuo caso sarà un
    DLOOKUP("NomeCampoDaCercare","NomeTabella/Query","Criterio")
    Attenzione a come scrivi il Criterio, ed attenzione che non vedo una Chiave Primaria nella Tabella che hai esposto...
  • Re: CERCA VERTICALE

    Nickname ha scritto:


    Vorrei ottenere la stessa cosa che in Excel si ottiene col "cerca verticale" quando si cerca in una tabella il valore corrispondente, che è presente ad esempio nella colonna due e che è in relazione con un'altro valore presente nella colonna uno.
    Allego una piccola tabella in cui nel Campo uno ho i "Metri Quadri" e nel Campo due ho i "Costi".

    I "Costi" corrispondono ai relativi metri quadri del Campo uno....

    es: a metri quadri 10 corrisponde 5.547,87 €, oppure a metri quadri 25 (campo uno) corrisponde 11.907,27€ (in campo due).

    Se lo facessi con Excel sarebbe semplice, basta usare il cerca verticale, ma con Access mi sono purtroppo arenato (anche dopo vari tutorial su you tube).

    muttley005 ha scritto:


    come tutti quelli che cercano di passare da excel ad access hai la tendenza (almeno da quello che scrivi) a voler riprodurre cose che si fanno in excel allo stesso modo su access. Il mio suggerimento è quello di uscire da quella visione (Access ti da molte + possibilità), prendi un qualsiasi libro di base e studialo o almeno leggilo bene e capirai le potenzialità di questo strumento.

    Nickname ha scritto:


    seguirò il tuo consiglio nel prendermi un manuale da studiare... perché è come dici tu.. tendo ancora a ragionare come in Excel anche in Access.
    detto questo ho fatto copia delle righe di vba e incollate sul afterupdate, ma non mi funziona ancora...
    Probabilmente muttley005 ha tentato di darti anche una risposta "alla lettera", ma resta fermo il punto che occorre ripartire da zero e ripensare tutto in una visione relazionale tipica di Access. Non ha senso continuare la discussione nella direzione intrapresa.
  • Re: CERCA VERTICALE

    @Alex grazie.
    avevo già provato col DLOOKUP, senza successo.
    Forse perché alla tabella avevo tolto fin da subito la chiave primaria (seguendo un tutorial su YouTube)
    O forse perché il criterio l'avevo scritto male...?

    Se posso chiedere, come lo scriveresti tu il criterio..? (per ottenere quello che spiegavo)
  • Re: CERCA VERTICALE

    Buongiorno Osvaldo,
    mi rendo conto anch'io di essere indietro con le basi della scrittura di codici e come dicevo a "muttley005" mi metterò nella condizione di studiare.... ringrazio per avermi cercato di aiutare dandomi gli spunti per migliorare.
  • Re: CERCA VERTICALE

    Nickname ha scritto:


    @Alex grazie.
    avevo già provato col DLOOKUP, senza successo.
    Forse perché alla tabella avevo tolto fin da subito la chiave primaria (seguendo un tutorial su YouTube)
    O forse perché il criterio l'avevo scritto male...?

    Se posso chiedere, come lo scriveresti tu il criterio..? (per ottenere quello che spiegavo)
    Sicuramente perchè hai scritto male il criterio...
    La PK è abbastanza importante come elemento, ma in questo caso potrebbe non essere indispensabile.

    Con i NUMERI che contengono decimali si pone un problema... che nella TextBox vedi la VIRGOLA come separatore definito dalle Impostazioni di Windows normalmente, ma JET salva i dati conil PUNTO come separatore, sicchè se tu il criterio lo scrivi passando il contenuto della TextBox per concatenazione di stringa, il valore della textbox viene preso PARI PARI, ovvero con la VIRGOLA ed ottieni un'insulto...

    Devi pertanto correggere la sintassi sfruttando le funzioni che adattano il contenuto senza modificarlo con il codice, ovvero non si fa MAI il Replace della Virgola con il Punto, in quanto se poi uno cambia i Regional Settings non andrebbe più bene...!

    La Funzione da usare è STR...
    DLOOKUP("NomeCampoDaCercare","NomeTabella/Query","NomeCampoDiCriterio=" & str(Me!NomeTextBox")
  • Re: CERCA VERTICALE

    Grazie @Alex
  • Re: CERCA VERTICALE

    Salve,
    a me sfugge qualcosa, ci dici

    Nickname ha scritto:


    Sto costruendo una maschera in Access, collegata a una tabella in cui ci sono, fra molti altri Campi, i dati dei Metri Quadri e i dati dei Costi.
    e fin qui ci siamo, stiamo lavorando su una maschera...poi dici
    In questa maschera c'è una casella combinata alla quale ho associato i dati della colonna dei Metri Quadri (tipo menù a tendina) e vorrei che nel momento in cui nella casella combinata seleziono ad esempio Metri Quadri "10", Access mi restituisca, nella Casella di Testo dedicata, € 5.547,87 ; oppure se seleziono nel Campo "Metri Quadri" 25 mi restituisca il corrispondente valore del Campo "Costi" (11.907,27)
    Quindi se i dati della casella combinata vengono estrapolati dalla tua tabella basta il suggerimento di "Muttley" per vederlo sulla tua casella di testo.

    Poi però sostieni :
    Cioè è possibile creare, in una Casella di Testo dedicata allo scopo, un comando (Tipo il Cerca Verticale in Excel) col quale vedersi restituire il valore legato ad un altro Valore che è posto un altro Campo (come nell'esempio qui sopra).
    Mah questa è un'altra cosa delle due quale?
    Saluti
  • Re: CERCA VERTICALE

    @Alex ha scritto:


    Il [Cerca.Vert] di Excel in Access deve essere Riferito alla Tabella... quindi ci si orienta alle funzioni di aggregazione, nel tuo caso sarà un
    DLOOKUP("NomeCampoDaCercare","NomeTabella/Query","Criterio")
    Attenzione a come scrivi il Criterio, ed attenzione che non vedo una Chiave Primaria nella Tabella che hai esposto...
    scusa Alex ma non è + comodo come gli ho suggerito io?
  • Re: CERCA VERTICALE

    Ciao.

    Come ti è stato detto, l'approccio sull'utilizzo di un database è ben diversa da quella che si usa con excel.
    In realtà scoprirai che la logica su come gestire una base di dati fatta con excel o access è praticamente identica, ma avviene usando strumenti diversi.

    Un consiglio che ti do è quello di usare sempre una chiave primaria, per ogni tabella che usi.
    E' vero che potrebbe essere opzionale, ma dopo che avrai preso un po' di pratica con access (di solito dopo una settimana) vorrai aggiungere funzionalità dove ti servirà avere a disposizione un valore univoco da poter utilizzare per recuperare dati diversi tra tabelle diverse.

    La potenza dei database è proprio questa.
    La possibilità di usare un unico valore per recuperare migliaia di dati da centinaia di tabelle, semplicemente con un click.
    Inoltre una chiave primaria non da fastidio. Sta li. Se ti occorre, la usi, se non ti occorre non da fastidio a nessuno, anzi in alcune operazioni interne è access stesso che la sfrutta per i suoi scopi, senza che tu te ne accorga.

    A differenza di excel, dove l'immissione dei dati, corrisponde anche alla visualizzazione, nei database, è buona regola avere strumenti diversi per immettere i dati e per visualizzarli.
    Anzi. di solito in un database, l'utente finale non vede mai il contenuto intero delle tabelle, ma solo quello che gli occorre in quel momento per fare l'operazione desiderata. Tutto il lavoro avviene dietro le quinte in base alle regole create in fase di sviluppo.

    Nei database, esponendolo in modo molto semplicistico, possiamo individuare quattro fasi diverse che vengono realizzare con 4 elementi differenti.

    - il contenitore dei dati (le tabelle)
    - l'immissione dei dati (di solito una maschera)
    - il recupero dei dati e la loro manipolazione (query, formule e calcoli)
    - la visualizzazione (Maschere apposite dove non è possibile modificare dati, report o stampe).

    Quindi ti consiglio sempre di usare maschere diverse per immettere i dati e per visualizzarli. Questo approccio semplifica di molto il lavoro e soprattutto evita immissioni e modifiche involontarie dei dati.
    Solitamente è sconsigliabile usare direttamente la visualizzazione della tabella per aggiungere i dati, anche se in un primo momento può sembrare più agevole.
    Ma non lo è. Perchè più si va avanti nella realizzazione di database e si inizia ad usare la giusta logica nella loro stesura e più nelle tabelle verranno archiviati solo numeri o dati non agevolmente riconoscibili.

    Quando inizierai a leggere qualche manuale, scoprirai che nei database (ed anche nella programmazione) esistono delle regole da seguire, per creare una applicazione, veloce, compatta e snella.
    Facendo un sunto veloce, una di queste è quella che "Non si archiviano dati che possono essere recuperati o calcolati andando ad usare valori che sono già stati archiviati in altre tabelle". (da qui la fondamentale importanza delle chiavi primarie univoche e dei database relazionali)

    Questo si fa per avere una minore quantità di dati archiviati, che renderebbero pesanti i database, sia in termini di spazio che di prestazioni.
    Un database relazionale nasce proprio per l'esigenza di avere archiviati solo i dati necessari, senza che si ripetano inutilmente.

    Ti dico questo perchè l'approccio che stai seguendo a questo specifico problema è tipico di execel, ma non è ottimale per access, o almeno hai strumenti già pronti per rendere tutto automatizzato.

    Ora non so quali sono le tue reali esigenze, però stai archiviando dei dati che potrebbero essere semplicemente calcolati.
    Dati che, nel momento in cui cambiasse il valore al singolo metro quadro, praticamente dovresti munirti di calcolatrice ed andare a modificare manualmente e singolarmente ogni dato in ogni record, con perdita di tempo, lavoro inutile e soprattutto con il rischio di commettere errori.
    Inoltre come detto da Alex, questo comporta anche la gestione della virgola al posto del punto nell'archiviazione dei decimali.
    Purtroppo, essendo access, un prodotto che nasce seguendo la notazione anglosassone, alcuni dati sono rognosi da gestire. Come l'archiviazione dei decimali, oppure la gestione delle date.
    Nulla che non sia gestibile, ma occorre una buona preparazione e una buona conoscenza dello strumento. Esistono anche delle patch che risolvono il problema, ma indovina un po'? Sono a pagamento e mi sembra che siano disponibili solo per le versioni 365 professional.

    Quindi, secondo me, dovresti cambiare approccio, ed invece che archiviare ogni singolo valore, dovresti archiviare solo il prezzo al metro quadro.
    Questo ti permette di non avere una grande mole di dati e sopratutto al variare del prezzo, dovrai solo modificare un singolo valore.
    Il resto lo calcoli in fase di visualizzazione dei dati o quando fai un preventivo.
    Quindi nella tabella avresti solo il valore al metro quadro (ad esempio 15 euro). Oppure avere il valore con iva, senza iva, con lo sconto. Ma comunque solo valori da utilizzare per calcolare il prezzo finale del computo metrico.

    In questo modo, aprendo la maschera di visualizzazione, andrai a recuperare solo il valore al metro quadro, immetterai in una specifica text box non associata, i metri quadri da calcolare e con una semplice moltiplicazione (magari cliccando un pulsante) avere il costo totale, visualizzato su un'altra text box non associata.
    Se poi hai bisogno di archiviare un preventivo, archivierai tutti i dati in un'altra tabella, con tutti i dati necessari, tipo il nome del committente, i metri quadri, il valore etc etc.

    Comunque seguendo il tuo approccio, e basandomi sulle tue attuali conoscenze, la via più semplice e più veloce è di procedere in questa maniera, senza usare codice VBA, o Macro, ma semplicemente sfruttando le proprietà degli strumenti.

    Creare una maschera di immissione:

    -Selezioni la tabella.
    -Clicchi su crea maschera.
    La maschera è pronta e funzionante senza nessuna modifica. Con questa andrai a popolare la tabella.

    Creare una maschera di visualizzazione:

    - Selezioni la tabella
    - Clicchi su crea maschera.

    Ora la apri in modalità struttura.

    -Modifichi la text box dei metri quadri in una casella combinata.
    Vai nella sezione delle proprietà DATI
    -elimini il collegamento su "Origine controllo" (la rendi non associata)
    -su "origine riga", crei una query basata sulla tabella sorgente selezionando tutti i campi (è preferibile non usare l'asterisco) e la salvi

    Vai nella sezione FORMATO.

    -Modifichi il valore "numero colonne" immettendo il numero dei campi presenti nella query
    -Imposti "Intestazione colonne" su SI.

    Ritorni nella sezione DATI e modifichi "colonna associata" in base a quale colonna contiene il valore che vuoi visualizzare nella combo box. (se non è quello giusto, fai delle prove cambiando colonne. I consigli quelli professionali )
    Ricorda che la numerazione interna di access non parte da uno ma da zero. Quindi quella che per noi sarebbe la colonna uno, in realtà access la chiama colonna 0.

    Se vuoi nascondere alcune colonne, ti basterà impostare la larghezza delle colonne.
    Vai su "formato", "Larghezza colonne" ed immetti i valori di larghezza di ogni singola colonna, separati da un punto e virgola.
    Se vuoi nascondere una colonna ti basterà impostare la larghezza a 0
    Esempio: 3;0;3
    la seconda colonna non verrà visualizzata nel menù a tendina della combo box e le altre due avranno una larghezza di 3 cm.

    Passiamo ora alla seconda text box.
    -Elimini il collegamento su "origine controllo"
    -scrivi all'interno della text box : =[nome della combo box].[column( numero della colonna della combo box che contiene il prezzo) ]
    - salva la maschera.

    La maschera è funzionante. Selezionando il relativo valore nella combo box avrai il relativo prezzo, senza il rischio di modificare accidentalmente i dati, cosa difficile in excel, ma molto probabile in access. Senza avere poi la possibilità di fare un Undo.

    Sicuramente ho commesso errori nella descrizione, ma il concetto è questo.
    Poi quando avrai più esperienza, potrai trovare altri modi ed altri approcci, come usare i suggerimenti che ti hanno già dato.
  • Re: CERCA VERTICALE

    muttley005 ha scritto:


    scusa Alex ma non è + comodo come gli ho suggerito io?
    Probabilmente si, ma non volevo scrivere la stessa cosa , sicché nel caso non volesse usare una Combo.... ha una ragionevole alternativa...
    Inoltre la gestione della costruzione dei criteri è spesso una logica che sfugge a molti... ho rinfrescato un pezzo.
  • Re: CERCA VERTICALE

    Gianni55 ha scritto:


    Salve,
    a me sfugge qualcosa, ci dici

    Nickname ha scritto:


    Sto costruendo una maschera in Access, collegata a una tabella in cui ci sono, fra molti altri Campi, i dati dei Metri Quadri e i dati dei Costi.
    e fin qui ci siamo, stiamo lavorando su una maschera...poi dici
    In questa maschera c'è una casella combinata alla quale ho associato i dati della colonna dei Metri Quadri (tipo menù a tendina) e vorrei che nel momento in cui nella casella combinata seleziono ad esempio Metri Quadri "10", Access mi restituisca, nella Casella di Testo dedicata, € 5.547,87 ; oppure se seleziono nel Campo "Metri Quadri" 25 mi restituisca il corrispondente valore del Campo "Costi" (11.907,27)
    Quindi se i dati della casella combinata vengono estrapolati dalla tua tabella basta il suggerimento di "Muttley" per vederlo sulla tua casella di testo.

    Poi però sostieni :
    Cioè è possibile creare, in una Casella di Testo dedicata allo scopo, un comando (Tipo il Cerca Verticale in Excel) col quale vedersi restituire il valore legato ad un altro Valore che è posto un altro Campo (come nell'esempio qui sopra).
    Mah questa è un'altra cosa delle due quale?
    Saluti
    Buongiorno Gianni55
    In realtà sono riuscito a combinare col suggerimento di Muttley005 ed è stato anche abbastanza semplice. Grazie
  • Re: CERCA VERTICALE

    fratac ha scritto:


    Ciao.

    Come ti è stato detto, l'approccio sull'utilizzo di un database è ben diversa da quella che si usa con excel.
    In realtà scoprirai che la logica su come gestire una base di dati fatta con excel o access è praticamente identica, ma avviene usando strumenti diversi.

    Un consiglio che ti do è quello di usare sempre una chiave primaria, per ogni tabella che usi.
    E' vero che potrebbe essere opzionale, ma dopo che avrai preso un po' di pratica con access (di solito dopo una settimana) vorrai aggiungere funzionalità dove ti servirà avere a disposizione un valore univoco da poter utilizzare per recuperare dati diversi tra tabelle diverse.

    La potenza dei database è proprio questa.
    La possibilità di usare un unico valore per recuperare migliaia di dati da centinaia di tabelle, semplicemente con un click.
    Inoltre una chiave primaria non da fastidio. Sta li. Se ti occorre, la usi, se non ti occorre non da fastidio a nessuno, anzi in alcune operazioni interne è access stesso che la sfrutta per i suoi scopi, senza che tu te ne accorga.

    A differenza di excel, dove l'immissione dei dati, corrisponde anche alla visualizzazione, nei database, è buona regola avere strumenti diversi per immettere i dati e per visualizzarli.
    Anzi. di solito in un database, l'utente finale non vede mai il contenuto intero delle tabelle, ma solo quello che gli occorre in quel momento per fare l'operazione desiderata. Tutto il lavoro avviene dietro le quinte in base alle regole create in fase di sviluppo.

    Nei database, esponendolo in modo molto semplicistico, possiamo individuare quattro fasi diverse che vengono realizzare con 4 elementi differenti.

    - il contenitore dei dati (le tabelle)
    - l'immissione dei dati (di solito una maschera)
    - il recupero dei dati e la loro manipolazione (query, formule e calcoli)
    - la visualizzazione (Maschere apposite dove non è possibile modificare dati, report o stampe).

    Quindi ti consiglio sempre di usare maschere diverse per immettere i dati e per visualizzarli. Questo approccio semplifica di molto il lavoro e soprattutto evita immissioni e modifiche involontarie dei dati.
    Solitamente è sconsigliabile usare direttamente la visualizzazione della tabella per aggiungere i dati, anche se in un primo momento può sembrare più agevole.
    Ma non lo è. Perchè più si va avanti nella realizzazione di database e si inizia ad usare la giusta logica nella loro stesura e più nelle tabelle verranno archiviati solo numeri o dati non agevolmente riconoscibili.

    Quando inizierai a leggere qualche manuale, scoprirai che nei database (ed anche nella programmazione) esistono delle regole da seguire, per creare una applicazione, veloce, compatta e snella.
    Facendo un sunto veloce, una di queste è quella che "Non si archiviano dati che possono essere recuperati o calcolati andando ad usare valori che sono già stati archiviati in altre tabelle". (da qui la fondamentale importanza delle chiavi primarie univoche e dei database relazionali)

    Questo si fa per avere una minore quantità di dati archiviati, che renderebbero pesanti i database, sia in termini di spazio che di prestazioni.
    Un database relazionale nasce proprio per l'esigenza di avere archiviati solo i dati necessari, senza che si ripetano inutilmente.

    Ti dico questo perchè l'approccio che stai seguendo a questo specifico problema è tipico di execel, ma non è ottimale per access, o almeno hai strumenti già pronti per rendere tutto automatizzato.

    Ora non so quali sono le tue reali esigenze, però stai archiviando dei dati che potrebbero essere semplicemente calcolati.
    Dati che, nel momento in cui cambiasse il valore al singolo metro quadro, praticamente dovresti munirti di calcolatrice ed andare a modificare manualmente e singolarmente ogni dato in ogni record, con perdita di tempo, lavoro inutile e soprattutto con il rischio di commettere errori.
    Inoltre come detto da Alex, questo comporta anche la gestione della virgola al posto del punto nell'archiviazione dei decimali.
    Purtroppo, essendo access, un prodotto che nasce seguendo la notazione anglosassone, alcuni dati sono rognosi da gestire. Come l'archiviazione dei decimali, oppure la gestione delle date.
    Nulla che non sia gestibile, ma occorre una buona preparazione e una buona conoscenza dello strumento. Esistono anche delle patch che risolvono il problema, ma indovina un po'? Sono a pagamento e mi sembra che siano disponibili solo per le versioni 365 professional.

    Quindi, secondo me, dovresti cambiare approccio, ed invece che archiviare ogni singolo valore, dovresti archiviare solo il prezzo al metro quadro.
    Questo ti permette di non avere una grande mole di dati e sopratutto al variare del prezzo, dovrai solo modificare un singolo valore.
    Il resto lo calcoli in fase di visualizzazione dei dati o quando fai un preventivo.
    Quindi nella tabella avresti solo il valore al metro quadro (ad esempio 15 euro). Oppure avere il valore con iva, senza iva, con lo sconto. Ma comunque solo valori da utilizzare per calcolare il prezzo finale del computo metrico.

    In questo modo, aprendo la maschera di visualizzazione, andrai a recuperare solo il valore al metro quadro, immetterai in una specifica text box non associata, i metri quadri da calcolare e con una semplice moltiplicazione (magari cliccando un pulsante) avere il costo totale, visualizzato su un'altra text box non associata.
    Se poi hai bisogno di archiviare un preventivo, archivierai tutti i dati in un'altra tabella, con tutti i dati necessari, tipo il nome del committente, i metri quadri, il valore etc etc.

    Comunque seguendo il tuo approccio, e basandomi sulle tue attuali conoscenze, la via più semplice e più veloce è di procedere in questa maniera, senza usare codice VBA, o Macro, ma semplicemente sfruttando le proprietà degli strumenti.

    Creare una maschera di immissione:

    -Selezioni la tabella.
    -Clicchi su crea maschera.
    La maschera è pronta e funzionante senza nessuna modifica. Con questa andrai a popolare la tabella.

    Creare una maschera di visualizzazione:

    - Selezioni la tabella
    - Clicchi su crea maschera.

    Ora la apri in modalità struttura.

    -Modifichi la text box dei metri quadri in una casella combinata.
    Vai nella sezione delle proprietà DATI
    -elimini il collegamento su "Origine controllo" (la rendi non associata)
    -su "origine riga", crei una query basata sulla tabella sorgente selezionando tutti i campi (è preferibile non usare l'asterisco) e la salvi

    Vai nella sezione FORMATO.

    -Modifichi il valore "numero colonne" immettendo il numero dei campi presenti nella query
    -Imposti "Intestazione colonne" su SI.

    Ritorni nella sezione DATI e modifichi "colonna associata" in base a quale colonna contiene il valore che vuoi visualizzare nella combo box. (se non è quello giusto, fai delle prove cambiando colonne. I consigli quelli professionali )
    Ricorda che la numerazione interna di access non parte da uno ma da zero. Quindi quella che per noi sarebbe la colonna uno, in realtà access la chiama colonna 0.

    Se vuoi nascondere alcune colonne, ti basterà impostare la larghezza delle colonne.
    Vai su "formato", "Larghezza colonne" ed immetti i valori di larghezza di ogni singola colonna, separati da un punto e virgola.
    Se vuoi nascondere una colonna ti basterà impostare la larghezza a 0
    Esempio: 3;0;3
    la seconda colonna non verrà visualizzata nel menù a tendina della combo box e le altre due avranno una larghezza di 3 cm.

    Passiamo ora alla seconda text box.
    -Elimini il collegamento su "origine controllo"
    -scrivi all'interno della text box : =[nome della combo box].[column( numero della colonna della combo box che contiene il prezzo) ]
    - salva la maschera.

    La maschera è funzionante. Selezionando il relativo valore nella combo box avrai il relativo prezzo, senza il rischio di modificare accidentalmente i dati, cosa difficile in excel, ma molto probabile in access. Senza avere poi la possibilità di fare un Undo.

    Sicuramente ho commesso errori nella descrizione, ma il concetto è questo.
    Poi quando avrai più esperienza, potrai trovare altri modi ed altri approcci, come usare i suggerimenti che ti hanno già dato.
    Buongiorno fratac

    Come prima cosa ti volevo ringraziare per il tempo che ti sei preso per me.... hai scritto un sacco e di questo te ne sono grato...

    Ora cerco di rispondere alla tua corretta osservazione sul fatto che ho creato una tabella e al suo interno ci sono, nel primo campo i MetriQuadri e nel secondo i Costi.

    Ti darei perfettamente ragione se bastasse sapere il prezzo al singolo metro quadro per poi moltiplicarlo semplicemente per i metri quadri che potrei scrivere in una casella di testo e con una semplice moltiplicazione si otterrebbe il risultato voluto...

    nella realtà non è cosi semplice perché nel calcolo del costo del singolo metro quadro entrano costi fissi e costi variabili e una parte di essi la devo calcolare con un foglio di Excel (non prodotto da me e purtroppo non apribile per guardarci dentro) immettendo di volta in volta il dato in questo foglio per ottenere un altro dato che poi utilizzo nel computo.... é un pò un casino...

    Per il resto hai perfettamente ragione, il metodo che descrivi è quello giusto.

    Ti ringrazio ancora per il tuo interessamento
    saluti
Devi accedere o registrarti per scrivere nel forum
14 risposte