Codice per apertura maschera con condizione where

di il
18 risposte

Codice per apertura maschera con condizione where

Salve a tutti, probabilment l'argomento sarà stato ampiamente trattato ma non sono riuscito a trovare nelle discussioni la soluzione al mio "caso", eventualmente indicatemi pure dove cercare!
Dunque, ho due tabelle:
Tab1_elenco ditte: campi (nome ditta, indirizzo, telefono..ecc..)
Tab2_elenco mezzi: campi (nome ditta, tipo mezzo, potenza, matricola...ecc)
Problema, ad ogni ditta della tab1 possono corrispondere piú mezzi nella tab2.
Ora io vorrei che dalla maschera ricavata dalla tab1, quando sono sul record della ditta_pippo, clikkando il comando vedi_mezzi mi si aprisse la tab2 ma solo con i record (mezzi) della ditta_pippo!
Ho utilizzato il codice [id_ditta]=[maschere]![nome_maschera]![id_ditta], ma non funziona.
Non volevo fare una tabella per ogni ditta con i mezzi di quella ditta, ma tenere una tabella unica
Tab2_elenco_mezzi.
Inoltre non vorrei visualizzare un report, ma propio una maschera mezzi sulla quale poter fare inserimenti o modifiche.
Grazie mille!!!
Massimo

18 Risposte

  • Re: Codice per apertura maschera con condizione where

    Ciao,
    essendo le tabelle in relazione 1--->molti puoi risolvere con maschera+sottomaschera, oppure se necessiti di aprire la form contenenti mezzi in separata sede sfrutta il metodo openforms membro di docmd sfruttando il filtro, la clausula where, oppure openargs...
    spero sia chiaro...
    un saluto.
  • Re: Codice per apertura maschera con condizione where

    Il problema consiste nel fatto che non puoi gestire quello che hai descritto con le TABELLE. Costruisci 2 MASCHERE sulle tue due tabelle e vedrai che la Condizione WHERE

    marsem ha scritto:


    [id_ditta]=[maschere]![nome_maschera]![id_ditta]
    funzionerà.
  • Re: Codice per apertura maschera con condizione where

    Ti ringrazio, in efetti ho due maschere masc_tab1 e masch_tab2, ma la condizione non funziona probabilmente perché come giustamente dice goku ho una relazione 1--> molti tra le due...?
  • Re: Codice per apertura maschera con condizione where

    Grazie Goku, in realtà non sono così sgamato di access, non hocapito bene come utilizzare i codici openforms..docmd..openarg..
    Io smanetto un po copiazzando codici qua e la dove riesco a trovarne
    Grazie!!
  • Re: Codice per apertura maschera con condizione where

    La relazione uno-a-molti non c'entra. Ti posso rispondere con una macro, poi puoi tranquillamente tradurla in VBA.
    1. Apri una macro in visualizzazione struttura
    2. Al primo rigo Azione, scrivi:
    ApriMaschera
         Nome maschera: masch_tab2
         Condizione WHERE: [id_ditta]=[maschere]![masc_tab1]![id_ditta]
    3. Salva la macro con nome X
    4. Vai alle proprietà del tuo pulsante in masch_tab1 e associa all'evento "Su clic" la macro X
  • Re: Codice per apertura maschera con condizione where

    Grazie, l avevo fatto già ma non mi funziona..provo a controllare eventuali errori di scritura magari.
  • Re: Codice per apertura maschera con condizione where

    No così non funziona...almeno a me
  • Re: Codice per apertura maschera con condizione where

    marsem ha scritto:


    Dunque, ho due tabelle:
    Tab1_elenco ditte: campi (nome ditta, indirizzo, telefono..ecc..)
    Tab2_elenco mezzi: campi (nome ditta, tipo mezzo, potenza, matricola...ecc)
    In questa descrizione non compare il campo [id_ditta]. Lo si capisce dopo dal contesto, ma...sai com'è...

    marsem ha scritto:


    ho due maschere masc_tab1 e masch_tab2
    Noto da questo testo che hai chiamato masc(senza H) su tab1 e masch(con H) su tab2.

    Per non sbagliare usa il generatore di espressioni.
    In ultima analisi, prova a fare un back-up del tuo database, elimina le due maschere e ricostruiscile con procedura guidata, poi aggiungi il pulsante ecc...
  • Re: Codice per apertura maschera con condizione where

    Il problema dell'H è dovuto solo al fatto che digito con il tablet... Devo rifare le maschere??? No dai..
    Il tutto funziona se non uso la condizione where, ovviamente mi apre la maschera della tab2_mezzi visualizzando però tutti i record.
    Con la condizione where funziona su di un altra tabella (tab3_anagrafica ditte) dove però i campi nome_ditta (o id_ditta..tanto per capirci) sono univoci.
    Devo provare con questo openArgs ma non ho ancora capito bene come usarlo!!
  • Re: Codice per apertura maschera con condizione where

    Qualche altro suggerimento.... ???
    Grazie
  • Re: Codice per apertura maschera con condizione where

    Ciao,
    supponendo che la maschera "ditte" abbia come recordSource la Tab1_elenco ditte e la maschera "mezzi" Tab2_elenco mezzi crea un commanButton nella maschera "ditte" su cui su evento click scateni :
    
    
    DoCmd.OpenForm "mezzi", acNormal, , "id_Ditta=" & Me.id_Ditta
    
    
    devi inserire sulla maschera "mezzi" un controllo della chiave esterna ditta presente nella tabella Tab2_elenco mezzi. (magari lo imposti come invisbile).

    se vuoi evitare codici o altro, sfrutta come detto la relazione uno a molti creano maschera-->tabella ditta + sottomaschera--->tabella mezzi.

    facci sapere.
    un saluto.
  • Re: Codice per apertura maschera con condizione where

    Grazie mille goku...provo!!!
  • Re: Codice per apertura maschera con condizione where

    Grande Goku...ora funziona!!!!
  • Re: Codice per apertura maschera con condizione where

    Ciao,
    se ti interessa testare anche openargs:
    sul command button che apre la form mezzi :
    
    DoCmd.OpenForm "mezzi", acNormal, , , , , Me.id_ditta
    
    su apertura della form mezzi :
    
    If Not IsNull(Me.OpenArgs) Then
        Me.Filter = "Me.id_ditta=" & Me.OpenArgs
        Me.FilterOn = True
    End If
    
    io per scelta procederei con una struttura maschera+sottomaschera, ma ovviamente solo tu sai cosa vuoi e come vuoi visualizzare i dati.
    ti saluto.
Devi accedere o registrarti per scrivere nel forum
18 risposte