Copiare valore da Masch.A a Masc.B

di il
8 risposte

Copiare valore da Masch.A a Masc.B

Ragazzi ringrazio in anticipo per l'aiuto, sto cercando di creare per ogni mio contatto un elenco attività e sono bloccato su qualche passaggio.

Ho la Maschera contatti [A] con un pulsante Attività che mi apre (tramite Macro) la Maschera Elenco attività [B] associate a quel contatto.

La Maschera Elenco attività [B] ha all'interno un pulsante “aggiungi attività” che non riesco ad impostare affinché crei un nuovo record con IDcliente uguale all'IDcliente della Maschera contatti [A].

Tab.[B] - Campi: Attività/Scad…..IDcliente

Tab.[A] - Campi: IDcliente/Cogn…..

Spero di essermi spiegato quanto meglio possibile.

Grazie per l'aiuto

8 Risposte

  • Re: Copiare valore da Masch.A a Masc.B

    Apri la B in acDialog ed Aggiunta e passa come parametro ARGS il valore ID… 

    Su LOAD della Maschea B, recupera il valore della proprietà OPENARGS e lo assegni al DefaultValue del controllo associato alla FK.

    Verifica però la questione DefaultValue perché non ricordo a memoria se, aprendo in modalità aggiunta sia gia passato al NewRecord in quel casso devi assegnarla alla proprietà Value.

  • Re: Copiare valore da Masch.A a Masc.B

    Ti ringrazio Alex per la tua risposta.

    Siccome ho pochissima esperienza in VBA non saprei come scrivere il codice per testarlo, saresti codice gentile da farmi un esempio?

    In poche parole dovrei programmare 2 pulsanti: 1 nella masch.A che mi apre tutte le attività associate a quel cliente (fin qui ho risolto con macro) e l'altro pulsante nella Masch.B (Elenco att) che mi aggiunge una nuova attività prendendo in automatico l'ID cliente dalla masch.A

  • Re: Copiare valore da Masch.A a Masc.B

    Azione di macro ApriMaschera - Supporto tecnico Microsoft

    Qui spiega tutto. All'azione ApriMaschera devi impostare:
    Condizione WHERE: [IDCliente] = [Maschere]![Contatti]![IDCliente]
    Modalità immissione dati: Aggiungi

    Mi pare però che, se anche il Cliente in Contatti è stato appena digitato, Elenco attività potrebbe “non vedere” subito IDCliente. Se ciò accade, ti consiglio di inserire un'altra istruzione prima di ApriMaschera, cioè:

    EseguiComando: SalvaRecord

    Altro consiglio che dò: se la maschera Elenco attività tu la apri sempre e comunque ACCOMPAGNATA da Contatti, imposta a IDCliente, Valore predefinito: [Maschere]![Contatti]![IDCliente]

  • Re: Copiare valore da Masch.A a Masc.B

    24/02/2024 - Samu.Lele ha scritto:


    Siccome ho pochissima esperienza in VBA non saprei come scrive

    Ho l'impressione che tu abbia anche poca dimestichezza con l'ambiente access e non solo con il VBA.

    Tre  modelli a corredo (tra cui attività e northwind) adottano il metodo che stai cercando.

    E senza scomodare i modelli, il wizard delle maschere di access, costruisce con due click esattamente il tipo di masschera che stai cercando.

    Basta selezionare “usa maschere divise” al posto di “usa sottomaschera”.

    Lo wizard ti scrive anche il codice funzionante, da cui puoi tranquillamente prendere esempio per capire come funziona.

  • Re: Copiare valore da Masch.A a Masc.B

    Si confermo che ho pochissima esperienza a riguardo, quel poco deriva da video e guide online.

    Ad ogni modo se fosse possibile avere dei consigli su 2 righe di codice sarebbe fantastico.

    Al momento sono in questa situazione: 

    Maschera [Dettaglio Civico] con [Sottomaschera Interni] ognuno dei quali ha un ID_immobile.

    Quando clicco su Attività mi apre la maschera [Elenco Attività] tramite macro che al momento ho impostato così:

    Cosi facendo riesco ad aprire l'elenco attività associate a quell'ID_immobile.

    Il problema nasce nel momento in cui inserisco un pulsante Aggiungi attività; 

    vorrei che copiasse direttamente l'ID_Immobile della [Sottomaschera Interni] nel nuovo campo ID immobile della Maschera Elenco attività

    Ho provato anche a dargli questo comando, 

    Private Sub AggAttivita_Click()
    Dim ID_Immobile As String

    ID_Immobile = Me!ID_Immobile

    DoCmd.GoToRecord , , acNewRec

    Me!ID_Immobile = ID_Immobile

    End Sub

    tutto gira quando è già presente l'ID_immobile come in questo caso, ma quando non ho record/attività inserite nella maschera non funziona perchè non legge ID_immobile, “come se fosse vuoto”.

    Come lo scrivereste voi il codice sul pulsante Aggiungi Attività?

  • Re: Copiare valore da Masch.A a Masc.B

    Secondo me, considerato che Elenco attività la apri solo a seguito di maschera/sottomaschera (questo non lo avevi specificato) [Dettaglio civico]/[Sottomaschera interni] io propenderei per l'impostazione a ID_Immobile del 

    Valore predefinito: [Maschere]![Dettaglio civico]![Sottomaschera interni]![ID_Immobile]

    Il pulsante Aggiungi Attività mi sembra superfluo.

  • Re: Copiare valore da Masch.A a Masc.B

    A parte il fatto che non riesco ad entrare nella logica con il quale hai strutturato la visualizzazione e l'inserimento dei dati, la risposta al tuo quesito l'ha fornita Alex in modo molto dettagliato.

    Potremmo fornirti anche le due righe di codice, ma fino a quando non hai ben compreso il meccanismo, praticamente rimarrebbero due righe di codice.

    Tu devi trasferire un dato da una maschera A ad una maschera B, che poi non si ragiona mai con le maschere, ma con le tabelle.

    Quindi ti serve un vettore.

    Il  vettore viene assegnato nella maschera A e viene letto nella maschera B.

    Al momento tu fai le due operazioni di assegnazione e lettura entrambe nella prima maschera.

    Tra i tanti vettori che si possono utilizzare per fare quello che vuoi realizzare, il più usato e nato proprio per queste esigenze è:

    OpenArgs.

    Visto che dietro il suo utilizzo, c'è tutta una logica da comprendere, la via più veloce è quella che:
    Apri google, cerchi “Uso openargs access” e ti documenti.

    Farlo qui nel forum diventerebbe complicato, perchè non sapendo quali sono le tue conoscenze, dovremmo partire, o dall'inizio e quindi scrivere come  minimo 10 pagine di manuale, oppure presupporre tue conoscenze pregresse, che se non hai porterebbero solo a domande su domande senza che si riesca ad aiutarti.

    Quindi, il consiglio è di studiare attentamente openargs ed altri metodi di condivisione dei dati tra una maschera e l'altra, poi quando avrai compreso la logica, se avrai dei dubbi su alcuni passaggi specifici, saremo ben lieti di aiutarti.

  • Re: Copiare valore da Masch.A a Masc.B

    [RISOLTO]

    Ho fatto chiarezza, grazie a tutte le vostre informazioni ma soprattutto al post di Fratac.

    24/02/2024 - fratac ha scritto:


    24/02/2024 - Samu.Lele ha scritto:


    Siccome ho pochissima esperienza in VBA non saprei come scrive

    Ho l'impressione che tu abbia anche poca dimestichezza con l'ambiente access e non solo con il VBA.

    Tre  modelli a corredo (tra cui attività e northwind) adottano il metodo che stai cercando.

    E senza scomodare i modelli, il wizard delle maschere di access, costruisce con due click esattamente il tipo di masschera che stai cercando.

    Basta selezionare “usa maschere divise” al posto di “usa sottomaschera”.

    Lo wizard ti scrive anche il codice funzionante, da cui puoi tranquillamente prendere esempio per capire come funziona.

    Era molto più semplice di quanto pensassi, ripristinato tutto!!!!! Ho risolto con il wizard creazione maschere collegate e con il valore predefinito sui nuovo ID per creare il collegamento tra una maschera e l'altra anche quando aggiungo nuovi record.

    Grazie a tutti ragazzi

Devi accedere o registrarti per scrivere nel forum
8 risposte