Apertura Maschera passando valore da maschera precedentemente apert

di il
23 risposte

Apertura Maschera passando valore da maschera precedentemente apert

Ho due maschere che fanno riferimento a due tbl: tblRazionalizzazioniInCorsoHeader e tblDismissioni. La prima maschera si chiama frmRazionalizzazioniInCorso e la seconda frmDismissioni.

Nella prima maschera ho inserito questa sub

Private Sub Detenuta_AfterUpdate()

Dim intidAcronimo As Integer
intidAcronimo = Me.ActiveControl

If Me.Detenuta = False Then

DoCmd.SetWarnings False

DoCmd.RunSQL "INSERT INTO tblDismissioni ( idAcronimo, EsercizioFinanziario, idTipoRazionalizzazione )" _
& " SELECT tblRazionalizzazioniInCorsoHeader.idAcronimo, intEsFin() AS Espr1, tblRazionalizzazioniInCorsoHeader.idTipoRazionalizzazione FROM tblRazionalizzazioniInCorsoHeader" _
& " WHERE (((tblRazionalizzazioniInCorsoHeader.idAcronimo)=[Maschere]![frmRazionalizzazioniInCorso]![idAcronimo])" _
& " AND ((tblRazionalizzazioniInCorsoHeader.idTipoRazionalizzazione)=[Maschere]![frmRazionalizzazioniInCorso]![idTipoRazionalizzazione]))"



DoCmd.OpenForm "frmDismissioni", acNormal, , , , , Me.idAcronimo

DoCmd.RunSQL "DELETE tblRazionalizzazioniInCorsoHeader.*, tblRazionalizzazioniInCorsoHeader.idAcronimo FROM tblRazionalizzazioniInCorsoHeader" _
& " WHERE (((tblRazionalizzazioniInCorsoHeader.idAcronimo)=[Maschere]![frmRazionalizzazioniInCorso]![idAcronimo]))"

DoCmd.Close acForm, "RazionalizzazioniInCorsoHeader"
DoCmd.Close acForm, "RazionalizzazioniInCorsoRows"

End If

Vorrei aprire la seconda maschera utilizzando il valore del campo idAcronimo della prima maschera: a tale scopo nella form load della seconda maschera ho inserito la prima riga, sperando di riuscire a passare il valore idAcronimo, ma non riesco a ottenere il risultato.

Private Sub Form_Load()
Me.cboAcronimo = Form_frmRazionalizzazioniInCorso.OpenArgs
Me.AllowEdits = False
Me.cmdModificaRecord.Enabled = False
Me.cmdSalvaRecord.Enabled = True

End Sub

Qualche partecipante al Forum può venirmi in soccorso ?

Ringrazio anticipatamente e ometto di dichiarare di essere un dilettante allo sbaraglio, perché credo sia evidente.

Struttura I maschera frmRazionalizzazioniInCorso:

Struttura della seconda maschera frmDismissioni

23 Risposte

  • Re: Apertura Maschera passando valore da maschera precedentemente apert

    15/04/2024 - BarLudwig ha scritto:


    due tbl: tblRazionalizzazioniInCorsoHeader e tblDismissioni

    Possibile che la prima tabella ha un nome così complesso? Sembra più il nome di una query.

    Hai mostrato le visualizzazioni strutture maschere, ma credo sia più utile conoscere i nomi propri di entrambe le tabelle. E le tabelle hanno una relazione?

  • Re: Apertura Maschera passando valore da maschera precedentemente apert

    Buonasera Osvaldo e grazie per l'interessamento.

    In effetti il nome è complesso: un pò a causa della mia scarsa fantasia, in parte perché ho altre tabelle che iniziano con tblRazionalizzazioni……

    Le due tabelle non hanno alcuna relazione.

    Chiedo scusa ma cosa si intende per nomi propri delle tabelle ?

  • Re: Apertura Maschera passando valore da maschera precedentemente apert

    15/04/2024 - BarLudwig ha scritto:


    In effetti il nome è complesso: un pò a causa della mia scarsa fantasia, in parte perché ho altre tabelle che iniziano con tblRazionalizzazioni……

    Non puoi avere più di una tabella che tratta lo stesso argomento, ossia mi riferisco stessi nomi di campi.

    15/04/2024 - BarLudwig ha scritto:


    Le due tabelle non hanno alcuna relazione.

    Boh! Chissà cosa devi fare veramente.

    15/04/2024 - BarLudwig ha scritto:


    Chiedo scusa ma cosa si intende per nomi propri delle tabelle ?

    tblDismissioni è il nome proprio che tu hai dato a quella tabella che appunto si chiama tblDismissioni.

    Non ho guardato i tuoi codici VBA, ma ho un forte sospetto che tu non abbia chiari i concetti base di NORMALIZZAZIONE (ahia che parolaccia!!!), ossia la corretta impostazione di tabelle, campi, relazioni. 

  • Re: Apertura Maschera passando valore da maschera precedentemente apert

    Buongiorno Osvaldo

    probabilmente hai ragion sul fatto che ioo non abbia chiaro il concetto di NORMALIZZAZIONE  anche se ne ho approfondito gli aspetti teorici e cerco di metterlo in pratica anche se con molte lacune.

    15/04/2024 - OsvaldoLaviosa ha scritto:


    Non puoi avere più di una tabella che tratta lo stesso argomento, ossia mi riferisco stessi nomi di campi.

    Ignoravo invece il concetto che mi hai spiegato e che ti sarei grato se volessi chiarirmi: cosa si intende per tabelle che trattano lo stesso argomento ? Di primo achitto non mi sembra di averne. Le mie due tabelle raccolgono i seguenti dati e informazioni.

    Nella prima tblRazionalizzazioneInCorsoHeader inserisco i dati di società che devono essere vendute, liquidate e in ogni caso dismesse: nella tabella c'è un campo (SI/NO) detenuta impostato per default a SI. Quando una società viene effettivamente dismessa la società deve essere cancellata dalla tblRazionalizzazioniInCorsoHeader e inserita nella tblDismissioni, che accoglie le società il cui processo di alienazione, liquidazione etc. è stato concluso.  

    Quando una società, p.e., viene venduta, l'operatore deve poter aprire la maschera frmRazionalizzazioniInCorsoHeader, sceglierela società venduta attraverso il campo cboAcronimo e modificare a NO il campo  detenuta: a questo punto il programma inserisce nella tblDismissioni l'idAcronimo modificato e lo elimina dalla tblRazionalizzazioniInCorsoHeader e vorrei che si aprisse la maschera frmDismissioni sul medesimo idAcronimo. E' questa ultima parte che ho tentato di realizzare con il comando OpenArgs senza riuscirci.

    Spero che la mia spiegazione non risulti incomprensibile e ti ringrazio per l'aiuto.

  • Re: Apertura Maschera passando valore da maschera precedentemente apert

    16/04/2024 - BarLudwig ha scritto:


    Quando una società, p.e., viene venduta, l'operatore deve poter aprire la maschera frmRazionalizzazioniInCorsoHeader, sceglierela società venduta attraverso il campo cboAcronimo e modificare a NO il campo  detenuta: a questo punto il programma inserisce nella tblDismissioni

    potresti semplicemente selezionare per “no” quelle non detenute e per “si” quelle detenute…

    un database è una base di dati, non ha senso eliminare un record da una tabella per inserirlo in un'altra tabella che ha la stessa struttura ma nome diverso.

    studia gli insiemi… hai un insieme di triangoli, tra questi ne hai rettangoli, isosceli, scaleni, equilateri. devi creare tre tabelle? e se vuoi sapere quanti triangoli scaleni ci sono? analogamente, se vuoi sapere quante aziende sono dismesse ad una certa data? e se hai sbagliato a dismettere la ditta orapronobis di catania al posto della orapronobis di genova? basta correggere il flag da si a no e viceversa.

    ecco cosa si intende per normalizzazione.

    15/04/2024 - BarLudwig ha scritto:


    DoCmd.RunSQL "INSERT INTO tblDismissioni ( idAcronimo, EsercizioFinanziario, idTipoRazionalizzazione )" _ & " SELECT tblRazionalizzazioniInCorsoHeader.idAcronimo, intEsFin() AS Espr1, tblRazionalizzazioniInCorsoHeader.idTipoRazionalizzazione FROM tblRazionalizzazioniInCorsoHeader" _ & " WHERE (((tblRazionalizzazioniInCorsoHeader.idAcronimo)=[Maschere]![frmRazionalizzazioniInCorso]![idAcronimo])" _ & " AND ((tblRazionalizzazioniInCorsoHeader.idTipoRazionalizzazione)=[Maschere]![frmRazionalizzazioniInCorso]![idTipoRazionalizzazione]))" DoCmd.OpenForm "frmDismissioni", acNormal, , , , , Me.idAcronimo DoCmd.RunSQL "DELETE tblRazionalizzazioniInCorsoHeader.*, tblRazionalizzazioniInCorsoHeader.idAcronimo FROM tblRazionalizzazioniInCorsoHeader" _ & " WHERE (((tblRazionalizzazioniInCorsoHeader.idAcronimo)=[Maschere]![frmRazionalizzazioniInCorso]![idAcronimo]))"

    basta una update…

  • Re: Apertura Maschera passando valore da maschera precedentemente apert

    16/04/2024 - BarLudwig ha scritto:


    cosa si intende per tabelle che trattano lo stesso argomento ? Di primo achitto non mi sembra di averne. Le mie due tabelle raccolgono i seguenti dati e informazioni.

    Mi riferivo esplicitamente a questa frase

    15/04/2024 - BarLudwig ha scritto:


    perché ho altre tabelle che iniziano con tblRazionalizzazioni……

    Tornando alle sole due tabelle esposte nel problema…io almeno vorrei conoscere tutti i loro campi. Poi pare che sihsandrea abbia centrato meglio il problema…spero tu possa comprendere.

  • Re: Apertura Maschera passando valore da maschera precedentemente apert

    Penso di aver intuito quello che mi ha suggerito SishAndrea, ci rifletto sopra e cerco di capire meglio, fermo restando che se voglio sapere quante aziende ho dismesso a una certa data non avrei alcuna difficoltà credo: mi basterebbe contare quelle presenti nella tblDismissioni, mentre l'obiezioni dell'azienda dismessa per errore mi è più chiara. Inanto invio a Osvaldo l'elencio dei campi, nel caso volesse ancora dedicarmi un pò di tempo. 

  • Re: Apertura Maschera passando valore da maschera precedentemente apert

    Mumble mumble…voglio essere buono se dico che non conosco il tuo campo professionale e non comprendo il significato di ogni singolo campo. Ti ricordo che i nomi campi (generalmente, se non altro per comodità) vanno nominati al SINGOLARE. Questo per una migliore comprensione di quello che si vuole scrivere.

    Per il resto…sono fortemente convinto che la NORMALIZZAZIONE non va e che molte cose che vorresti tracciare nelle tabelle, molto probabilmente andrebbero delegate alle query…ma, dal mio punto di vista, mi serve una analisi completa:
    - di cosa parla il tuo database
    - nomi propri delle tabelle e dei loro campi (è vero li hai già esposti, ma non trovo alcuna logica…non capisco nulla…)
    - occorre vedere un recordset di valori (almeno una decina) per capirci qualcosina

    …bla bla bla…non disdegno il parere di un utente più esperto, per capire se le mie obiezioni sono valide oppure no.

  • Re: Apertura Maschera passando valore da maschera precedentemente apert

    16/04/2024 - OsvaldoLaviosa ha scritto:


    …bla bla bla…non disdegno il parere di un utente più esperto, per capire se le mie obiezioni sono valide oppure no.

    Buongiorno Osvaldo, forse mi hai frainteso, non disdegno l'opinione di nessuno, altrimenti non sarei in questa sede.

    Per quanto concerne il mio db, l'intenzione è quella di adempiere a un obbligo legale delle Pubbliche Amministrazioni che possiedono partecipazioni in società, e che devono dismetterle se ricorrono determinate circostanze e, in ogni caso, inviare ogni anno informazioni aggiornate alla Corte dei Conti.

    Esistono dei moduli da riempire per l'invio delle informazioni che con il mio db cerco di compilare, dopo aver aggiornato i dati di ciascuna società.

    Se mi precisi come posso inviarti il dataset di valori lo faccio molto volentieri.

    Posso anche inviarti copia dei moduli se può esserti utile.

    Grazie mille

  • Re: Apertura Maschera passando valore da maschera precedentemente apert

    16/04/2024 - BarLudwig ha scritto:


    Posso anche inviarti copia dei moduli se può esserti utile.

    Un modulo rende subito l'idea dei dati da trattare e come organizzarli per ottenere il risultato finale.

  • Re: Apertura Maschera passando valore da maschera precedentemente apert

    16/04/2024 - sihsandrea ha scritto:


    Un modulo rende subito l'idea dei dati da trattare e come organizzarli per ottenere il risultato finale.

    Sono d'accordo su questa scelta. È sufficiente uno solo? Altrimenti come faccio a capire dove insorge la ripetitività dei dati?

    16/04/2024 - BarLudwig ha scritto:


    adempiere a un obbligo legale delle Pubbliche Amministrazioni che possiedono partecipazioni in società, e che devono dismetterle se ricorrono determinate circostanze e, in ogni caso, inviare ogni anno informazioni aggiornate alla Corte dei Conti.

    Esistono dei moduli da riempire per l'invio delle informazioni che con il mio db cerco di compilare, dopo aver aggiornato i dati di ciascuna società.

    Campo professionale a me alquanto sconosciuto. Proverò a brancolare nel semi-buio dei dati forniti…sperando di non gettare la spugna.

  • Re: Apertura Maschera passando valore da maschera precedentemente apert

    Noooo per favore non gettate la spugna. I tipi di modulo sono sostanzialmente tre (uno per le società in regime normale, un altro per le società da dismettere e un terzo per quelle dismesse. Poi vi sono alcuni prospetti riassuntivi. https://www.de.mef.gov.it/export/sites/sitodt/modules/documenti_it/programmi_cartolarizzazione/patrimonio_pa/partecipazioni_2022/ApplicativoPartecipazioni-SchedeRilevazione-2022.pdf 

    I moduli si trovano al link sopra indicato. L'immagine che segue illustra le tabelle e le relazioni.

    Se è possibile potrei anche condividere il db ?

  • Re: Apertura Maschera passando valore da maschera precedentemente apert

    Dimenticavo di aggiungere che i moduli sono quelli contenuti da pag. 13 in poi della pubblicazione di cui al link inviato.

  • Re: Apertura Maschera passando valore da maschera precedentemente apert

    16/04/2024 - BarLudwig ha scritto:


    Se è possibile potrei anche condividere il db ?

    Non è nello spirito del forum.

    A parer mio il database non è normalizzato. Occorre smantellarlo, rifare un'analisi chiara ed efficiente secondo le regole di normalizzazione dei database. Chiedo conforto/supporto ad altri utenti esperti se questa mia “amara” sentenza ha modo di esistere.

    Vado a braccio su alcune piccole cose che saltano all'occhio subito:
    1. tblEntiSocietà.Durata di impegno: una tabella con le indicazioni anagrafiche non credo possa contemplare un campo [Durata di impegno]. Questo campo ha senso di esistere altrove quanto l'EnteX partecipa a fare qualcosa.
    2. tblDismissioni: perchè una tabella a parte specifica? Gli Enti fanno una serie di cose/attività nel corso della loro vita. A seguito di analisi poi, frutto di query che constatano lo status di Dismissione…un campo di tipo Sì/No in tblEntiSocietà…potrebbe risolvere.
    3. tblTipoCarica e tblTipoCaricaInterna: questo è un classico esempio di duplicazione di tabelle. La tabella può essere unica, un campo di discriminazione Interno/Esterno risolve la questione.
    4. Non vedo una tabella dove si traccia storicamente cosa fa ogni singolo EnteSocietà. In base ad essa si tracciano analisi e risultati (QUERY) da dare in pasto poi al Ministero.

    Se davvero la mia sentenza è vera, occorre ripartire da zero, aprendo una nuova discussione nella sezione “Progettazione database”. Anche se, ricordo secondo le regole del forum, è possibile postare solo singole mirate problematiche. Per un lavoro di riorganizzazione occorre una consulenza…chi è disposto ad aiutarti gratuitamente?

Devi accedere o registrarti per scrivere nel forum
23 risposte