Copia di un valore da una maschera ad un'altra

di il
13 risposte

Copia di un valore da una maschera ad un'altra

Buon pomeriggio,

dovrei risolvere il seguente problema:
Partendo da una maschera con l'elenco di codici prodotti, devo copiare il valore di un codice prodotto e scriverlo nel campo di un'altra maschera; vi espongo in senso pratico cosa devo fare: devo elaborare un nuovo preventivo, non mi ricordo un codice prodotto che voglio inserire nel preventivo, vado nella maschera che elenca tutti i codici prodotti, con una serie di filtri identifico il prodotto che voglio mettere nel preventivo e voglio che quel codice prodotto venga scritto nel preventivo che sto facendo. Pensavo di risolvere con una macro (per evitare il copia / incolla banale dei comandi di office, che per esempio potrebbe erroneamente farmi copiare solo un pezzo di codice), ma ho visto che tra i comandi delle macro il copia / incolla non c'è.
Secondo voi cosa devo fare?
Grazie in anticipo a chi vorrà rispondermi.

13 Risposte

  • Re: Copia di un valore da una maschera ad un'altra

    Perchè non utilizzi una ComboBox in quel posto... in modo che aprendola ti elenca tutti i prodotti...?
    Alternativa è ovviamente una Maschera per la selezione... che dovrai costruire appositamente e gestire con questa sequenza:
    1° aprire in modalità SINCRONA(acDialog)
    2° L'utente seleziona il valore e preme OK
    3° La selezione forza la proprietà Visible=False
    4° al rientro del codice dalla Maschera Chiamante leggere il Valore Selezionato
    5° Chiudere la Form

    Non è scontato come sistema... ma se hai un minimo di basi...
  • Re: Copia di un valore da una maschera ad un'altra

    Una ComboBox ho già provato ad usarla ma non risulta molto "pratica" quando hai oltre 3.000 prodotti da gestire. Sinceramente una maschera con tutto l'elenco mi sembrava la soluzione migliore perchè mi consentirebbe di applicare una serie di filtri di volta in volta differenti per rintracciare il prodotto che mi serve (magari per fornitore, piuttosto che per descrizione ecc..)
    Per quanto riguardala seconda soluzione che mi hai proposto, sinceramente sono in difficoltà perchè non so come si fa, nè cos'è una SINCRONA(acDialog). Ce la posso fare lo stesso con il tuo aiuto?
  • Re: Copia di un valore da una maschera ad un'altra

    Potresti rispiegare tutto dettagliatamente usando i nomi propri di maschere, tabelle, campi, casella combinata? Poi fai qualche esempio pratico per "illuminare" (almeno me) su dove nasce il tuo problema.
  • Re: Copia di un valore da una maschera ad un'altra

    Ho due tabelle, una Preventivi e una Prodotti e due maschere (frutto delle tabelle appena menzionate), una Elaborazione Preventivi e una Elenco Prodotti.
    Inserisco un nuovo preventivo partendo dalla maschera Elaborazione Preventivi, dove scrivo il cliente, il numero del preventivo, la data ecc; arriva il momento in cui devo inserire il prodotto che voglio offrire al cliente, quindi clicco su un pulsante di apertura maschera Elenco Prodotti e mi appare tutto l'elenco dei prodotti. Applico una serie di filtri (per esempio per descrizione o per parte di descrizione) per arrivare ad identificare il prodotto che voglio offrire al cliente; una volta identificato, vorrei che il codice del prodotto (con un clic o che so io) venga riportato nella maschera Elaborazione Preventivi che stavo inserendo un attimo prima.
    Dimmi se ho spiegato meglio il problema, e come poterlo risolvere, grazie.
  • Re: Copia di un valore da una maschera ad un'altra

    visionbbacc ha scritto:


    Ho due tabelle, una Preventivi e una Prodotti e due maschere (frutto delle tabelle appena menzionate), una Elaborazione Preventivi e una Elenco Prodotti.Inserisco un nuovo preventivo partendo dalla maschera Elaborazione Preventivi, dove scrivo il cliente
    Spero tu abbia predisposto anche una tabella Clienti con opportuna relazione.

    visionbbacc ha scritto:


    arriva il momento in cui devo inserire il prodotto che voglio offrire al cliente, quindi clicco su un pulsante di apertura maschera Elenco Prodotti e mi appare tutto l'elenco dei prodotti. Applico una serie di filtri (per esempio per descrizione o per parte di descrizione) per arrivare ad identificare il prodotto che voglio offrire al cliente; una volta identificato, vorrei che il codice del prodotto (con un clic o che so io) venga riportato nella maschera Elaborazione Preventivi che stavo inserendo un attimo prima.
    C'è qualcosa di "farraginoso" nel pensare di aver progettato la cosa così. Evidentemente sai solo tu che "ricercare" il Prodotto opportuno sia meglio così. Io penserei a una semplice "casella combinata" "ben congeniata". Provo ugualmente a rispondere alla lettera alla tua richiesta.
    Io penserei a un pulsante Imposta nella maschera [Elenco Prodotti] con il seguente codice VBA:
    Private Sub Imposta_Click()
    Forms![Elaborazione Preventivi]![IDProdotto] = Me![IDProdotto]
    DoCmd.Close acForm, "Elenco Prodotti"
    End Sub
    
  • Re: Copia di un valore da una maschera ad un'altra

    OsvaldoLaviosa ha scritto:


    visionbbacc ha scritto:


    Ho due tabelle, una Preventivi e una Prodotti e due maschere (frutto delle tabelle appena menzionate), una Elaborazione Preventivi e una Elenco Prodotti.Inserisco un nuovo preventivo partendo dalla maschera Elaborazione Preventivi, dove scrivo il cliente
    Spero tu abbia predisposto anche una tabella Clienti con opportuna relazione.

    SI.

    visionbbacc ha scritto:


    arriva il momento in cui devo inserire il prodotto che voglio offrire al cliente, quindi clicco su un pulsante di apertura maschera Elenco Prodotti e mi appare tutto l'elenco dei prodotti. Applico una serie di filtri (per esempio per descrizione o per parte di descrizione) per arrivare ad identificare il prodotto che voglio offrire al cliente; una volta identificato, vorrei che il codice del prodotto (con un clic o che so io) venga riportato nella maschera Elaborazione Preventivi che stavo inserendo un attimo prima.
    C'è qualcosa di "farraginoso" nel pensare di aver progettato la cosa così. Evidentemente sai solo tu che "ricercare" il Prodotto opportuno sia meglio così. Io penserei a una semplice "casella combinata" "ben congeniata". Provo ugualmente a rispondere alla lettera alla tua richiesta.
    Io penserei a un pulsante Imposta nella maschera [Elenco Prodotti] con il seguente codice VBA:
    Private Sub Imposta_Click()
    Forms![Elaborazione Preventivi]![IDProdotto] = Me![IDProdotto]
    DoCmd.Close acForm, "Elenco Prodotti"
    End Sub
    
    Ho scelto di agire così perchè purtroppo ho qualcosa come 3.000 prodotti in anagrafica e mi sembrava il metodo migliore per gestirli, cercarli ecc.
    Ad ogni modo il codice VBA che mi hai girato lo dovrei inserire nella maschera Elaborazione Preventivi quando vado a cliccare il pulsante di apertura della maschera Elenco Prodotti?
  • Re: Copia di un valore da una maschera ad un'altra

    visionbbacc ha scritto:


    ....
    Ho scelto di agire così perchè purtroppo ho qualcosa come 3.000 prodotti in anagrafica e mi sembrava il metodo migliore per gestirli, cercarli ecc.
    Ad ogni modo il codice VBA che mi hai girato lo dovrei inserire nella maschera Elaborazione Preventivi quando vado a cliccare il pulsante di apertura della maschera Elenco Prodotti?
    Ora capisco che fare le cose fatte bene sia complicato... ma...

    La gestione corretta è quella che ti ho proposto sopra... questa non va bene in quanto non LEGA il processo di SELEZIONE con la sequenza effettuata.
    Devi pertanto gestire poi Maschere Aperte inutilmente e valorizzazioni che non generano eventi...

    Leggi questo:
    http://forum.masterdrive.it/access-79/passare-valori-maschera-ad-unaltra-95965/
  • Re: Copia di un valore da una maschera ad un'altra

    visionbbacc ha scritto:


    arriva il momento in cui devo inserire il prodotto che voglio offrire al cliente, quindi clicco su un pulsante di apertura maschera Elenco Prodotti e mi appare tutto l'elenco dei prodotti.
    Questo significa che hai un pulsante ApriProdotti in maschera [Elaborazione Preventivi]: OK.
    Una volta aperta la maschera [Elenco Prodotti] fai tutte quelle operazioni di filtraggio che hai detto tu: OK.
    Arrivi finalmente al Prodotto che cerchi, lo focalizzi e quindi vorresti che andasse a "impostarsi" dentro la maschera [Elaborazione Preventivi].[IDProdotto].
    Cosa fare?
    In visualizzazione struttura maschera [Elenco Prodotti] devi aggiungere un pulsante Imposta e scrivere il codice che ti ho proposto.
  • Re: Copia di un valore da una maschera ad un'altra

    Ho creato il pulsante Imposta ed ho riportato quanto segue:
    Private Sub Imposta_Click()
    Forms![Sottomaschera Preventivi Descrizioni]![CPRODOTTO] = Me![CPRODOTTO]
    DoCmd.Close acForm, "Prodotti Elenco"
    End Sub

    ma quando torno all'elenco dei prodotti, mi da il seguente errore:
    "Errore di run-time '2450': Microsoft Access: impossibile trovare la maschera 'Sottomaschera Preventivi Descrizioni' "

    Cosa non va?
  • Re: Copia di un valore da una maschera ad un'altra

    Scusate, ho dimenticato di dire che l'errore mi appare quando sulla maschera dell'elenco prodotti clicco sul pulsate Imposta. Il codice l'ho trascritto sull'evento "Su clic".
    Ovviamente ho omesso di dire che la sottomaschera richiamata è presente, non è vero che non c'è.
  • Re: Copia di un valore da una maschera ad un'altra

    Ho corretto Forms con SubForms e quel problema non appare più. Ora il codice è il seguente:

    Private Sub Imposta_Click()

    SubForms![Sottomaschera Preventivi Descrizioni]![CPRODOTTO] = Me![CPRODOTTO]
    DoCmd.Close acForm, "Prodotti Elenco"

    End Sub

    ma adesso appare questo errore:
    Errore di run-time '424': Necessario oggetto

    Cosa significa?
  • Re: Copia di un valore da una maschera ad un'altra

    Se si tratta di sottomaschera, la sintassi corretta (a sinistra dell'espressione) è:
    Forms![NomeMaschera]![NomeSottomaschera]![NomeControllo]

    Non ci hai mai detto come si chiama [NomeMaschera]
  • Re: Copia di un valore da una maschera ad un'altra

    Ho corretto come mi hai detto....RISOLTO!!!!!! Grazie mille, sei un grande!
Devi accedere o registrarti per scrivere nel forum
13 risposte