Passare valore casella di controllo a subform

di il
5 risposte

Passare valore casella di controllo a subform

Buonasera a tutti,

sto realizzando un “piccolo” gestionale tramite access dove inserire a catalogo i macchinari dell'azienda e i relativi utensili e programmi ( per farvi un idea, devo convertire 12 file excel( uno per ogni macchina) dove il più piccolo ha 90 utensili ( ogni utensile ha più soluzioni, un totale di 870 righe) e 45 programmi ( colonne). 
Lasciando perdere questa piccola intro, sono a chiedervi questa cosa:

Sto realizzando un form dove, selezionato tramite casella di controllo il programma a cui associare gli utensili, venga aperto un subform dove avrò il campo “Utensile” libero e collegato alle relative colonne della tabella Utensili e il campo “Programma” che vorrei prendesse il valore scelto in precedenza.

Spero di essermi spiegato bene, ho provato più soluzioni ma tutti con errori differenti.

Attualmente il codice VB inserito è il seguente:

  Private Sub Aggiungi_Click()
Dim frmUtensileProgramma As Form
   Dim strProgramma As String
   
     Set frmUtensileProgramma = New Utensile - PROGRAMMA1
   
   ' Ottieni il valore del campo "Programma" dal form "SCEGLI-PROGRAMMA"
   strProgramma = Me!Programma.Value
   
   ' Passa il valore del campo "Programma" al form "UTENSILE-PROGRAMMA"
   frmUtensileProgramma!Programma.Value = strProgramma
   
   ' Apri il form "UTENSILE-PROGRAMMA" in modalità di dialogo
  DoCmd.OpenForm "Utensile - Programma1", acNormal, , , , acDialog, frmUtensileProgramma
   
   ' Pulisci il riferimento al form "UTENSILE-PROGRAMMA"
   Set frmUtensileProgramma = Nothing
End Sub

Grazie

5 Risposte

  • Re: Passare valore casella di controllo a subform

    Ma il codice che hai scritto da dove esce…? Inventato…?

    C'è una sintassi che non ha minimanete senso…. 

    1. Perchè hai usato NEW…?
    2. Cosa sarebbe Utensile - PROGRAMMA1…?
    3. Perchè dopo aver istanziato quella roba apri anche la Form con DoCmd…?
    Set frmUtensileProgramma = New Utensile - PROGRAMMA1

    Quello che hai scritto è veramente inguardabile.

    A monte mi viene il dubbio di come hai strutturato il Database, quante e quali tabelle e come le hai relazionate…???

    Prima di fare maschere sottomaschere serve aver chiaro come gestire una corretta normalizzazione, e siccome a te serve una 3° Forma Normale per una relazione Molti - Molti, che richiede 3 Tabelle e non 2, da come hai esposto il tema, almeno partiamo con le idee giuste.

  • Re: Passare valore casella di controllo a subform

    Questa è la relazione tra le tabelle.

  • Re: Passare valore casella di controllo a subform

    18/07/2023 - Brividich ha scritto:


    Sto realizzando un form dove, selezionato tramite casella di controllo il programma a cui associare gli utensili, venga aperto un subform dove avrò il campo “Utensile” libero e collegato alle relative colonne della tabella Utensili e il campo “Programma” che vorrei prendesse il valore scelto in precedenza.

    Per fare questo non hai bisogno del VBA, ma solo delle corrette relazioni tra le tabelle e di una semplice query di selezione collegata alla fonte dati della Form.

    18/07/2023 - Brividich ha scritto:


    ho provato più soluzioni ma tutti con errori differenti.

    Non abbiamo la sfera di cristallo. Che genere di errori ricevi. Senza considerare che tutto il codice, come già detto non ha alcun senso. 

    18/07/2023 - Brividich ha scritto:


    Attualmente il codice VB

    Perchè ostinarsi ad usare uno strumento che non si conosce, senza studiarlo? 

    E perchè iniziare ad usare access, senza avere le basi minime?

    E' chiaro che non hai letto niente sull'utilizzo di access, visto che quello che chiedi, lo fa in automatico, con un click, usando la composizione automatica o wizard.

    18/07/2023 - Brividich ha scritto:


    devo convertire 12 file excel

    Cosa significa? I file excel non si convertono in access, si importano o al massimo si collegano. E non è una semplice premessa, visto che in base a come verranno importati o collegati, andrà a condizionare tutto quello che poi farai nella costruzione del database.

    18/07/2023 - Brividich ha scritto:


    campo “Utensile” libero

    Che significa libero? Il campo deve essere vuoto, oppure devono essere visualizzati gli utensili o i set attualmente non in uso su un determinato macchinario?

    Comunque, lascia perdere il VBA, visto che, almeno in questa fase non ti occorre.

  • Re: Passare valore casella di controllo a subform

    E si, un pò troppo lontano da certi concetti di base.

    18/07/2023 - Brividich ha scritto:


    Spero di essermi spiegato bene, ho provato più soluzioni ma tutti con errori differenti.

    Giusto appunto, se si ha le idee chiare non si fanno le prove, si fa e basta.

    Mentre gli errori che dici sono di … vabbè quello che ti hanno detto gli altri.


    Ma venendo al nocciolo della questione, io non ho capito quanto hai spiegato e meno ancora dopo che hai presentato le 3 tabelle.

    Domanda: che relazioni hai fatto tra le tabelle, 1 a 1  ? 
    Se così fosse tanto valeva farne una sola di tabella.

    Mi spiego meglio a tuo pro: Definire relazioni tra tabelle in un database di Access - Office | Microsoft Learn

    Se mi posso permettere… resetta tutto :

    • Definizione del progetto
      • cosa
      • chi 
      • quando 
      • dove 
      • perchè

    Fatta l'analisi di cui sopra e valutato gli strumenti più adatti a soddisfare l'esigenze richieste, come riportato sopra, approfondire i concetti di Database Relazionale.

    Se segui passo passo la documentazione che ti ho fornito, la stessa ti porterà a breve alla realizzazione del tuo progetto.

    Ma come ti ho accennato prima, resetta tutto e dimentica da subito ciò che hai iniziato a fare. Fai semplicemente prima partendo con il piede giusto. 

    Nel procedere di questo studio, se hai cose poco chiare o da approfondire, chiedi pure e qui trovi tutto il supporto per ricevere delle risposte concrete. 

    Un ultima cosa… nei nomi dei campi nelle colonne delle tabelle e spesso lo vedo anche nelle tabelle, ma perchè utilizzate gli spazi ? solo per il gusto di avere una scrittura del codice più complessa ? 
    Esiste, in struttura tabelle, la possibilità di descrivere la colonna inserita e una proprietà per avere una descrizione di intestazione della colonna. E invece molti di voi si ostinano a descrivere il campo inserito esclusivamente utilizzando la proprietà Name… ma percheeeeeeeeeeèèèèèèè ????!!!!!????  perchè maltrattare le Fields delle tabelle in questo modo ?   ;-) 

    Ma non ci fare caso…. è solo un mio cruccio… ma è anche una domanda che ho posto diverse volte senza ricevere risposte. ;-)) 

  • Re: Passare valore casella di controllo a subform

    18/07/2023 - Brividich ha scritto:


    Questa è la relazione tra le tabelle.

    Non puoi chiamare le PK delle tabelle tutte ID e poi rinominarlo lato FK nella tabella lato M, o meglio puoi ma è una cavolata che ti frega alle prime query joined.

    In ogni caso le relazioni devono essere esplicite 1-M e M-1

    Per gestire poi l'associazione Programmi-Utensili io eviterei la subform perché dovresti poi usare una combo basata sulla tabela utensili nella Sub basata sulla tabella di appoggio centrale ma scopriresti presto il difetto che si genera, e sarebbe poco simpatico… salvo avere sempre tutti i dati anche se già selezionati, ma a quel punto dovresti gestire i doppioni possibili, ovvero 2 utensili uguali per programma.

    Io farei una form con 2 listbox per assegnare glinutensili ad ogni programma tramite la selezione deglu utensili.

    Questo ti consente peraltro di differenziare gli strumenti già selezionati ed escluderli da quelli ancora liberi, cosa che non potresti fare con le subform.

    Una volta create le associazioni Programma-Utensili allora apri la form specifica per compilare i dettagli.

Devi accedere o registrarti per scrivere nel forum
5 risposte