Aprire una maschera con un filtro basato su un click

di il
14 risposte

Aprire una maschera con un filtro basato su un click

Buona sera
sono un principiante che sta provando a costruire un database per fare un analisi costi di cantieri edili

Scusate la domanda, ma è possibile memorizzare il valore di un campo di una maschera attraverso il click su di esso, e poi far aprire un'altra maschera e filtrare i record in base a questo valore ?

nel mio caso:
ho fatto una tabella Clienti, con i seguenti campi
IDCliente = contatore e chiave primaria
Nome
Cognome
ecc
ho fatto una tabella Appalti, con i seguenti campi
IDAppalto = contatore e chiave primaria
IDCliente = campo relazionato con la Tabella Clienti
ecc.
poi una Tabella VocidiCapitolato
IDVoceCapitolato = contatore e chiave primaria
IDAppalto=campo relazionato con la Tabella Appalti
Descrizione
Quantita'
PrezzoUnitario
ecc.

Poi ho creato la Maschera Clienti che contiene una sottomaschera Appalti, e qui mi ha dato la possibilità di impostare tramite Proprietà Origine Dati Collega Campi MAster e Secondari con IDCliente in modo che mi facesse vedere solo gli appalti del Cliente

Poi volevo fare (ed è qui che non riesco)
facendo un click su il campo IDAppalto della sottomaschera Appalti
Aprire La maschera VocidiCapitolato ( e questo l'ho fatto con una macro Apri Maschera, ma non riesco a trovare il codice giusto per poter fargli prendere il valore del campo cliccato..
ho privato così:
Apri maschera
where [IDAppalto]=[Maschere]![Sottomaschera Appalto]![IDAppalto]
ma quando eseguo mi si apre un box dove devo inserire manualmente il valore
Dove sbaglio
Grazie Gian

Poi avrei anche la necessità nella maschera VociDiCapitolato che ogni volta che aggiungo un record
in automatico il campo IDAppalto abbia il valore Memorizzato con il Click che mi ha fatto aprire la mascera sopraindicata

ho fatto troppo casino ?
Di nuovo Grazie Gian

P.s. Nel frattempo mi sto leggendo il manuale "Costruire apllicazioni con access" di Mike Davis e sono appena arrivato al capitolo del VBforApplication .. ma la strada è ancora lunga ed in salita .. ma mi diverte e non ho scadenze

14 Risposte

  • Re: Aprire una maschera con un filtro basato su un click

    Non hai fatto un casino, la tua domanda è molto lecita. Ricorda soltanto che quanto vuoi fare riferimento a un controllo di sottomaschera, occorre chiamare anche il nome della maschera principale. Credo che hai sbagliato la sintassi dentro WHERE. Devi scrivere:
    [NomeCampo]=[Maschere]![NomeMaschera]![NomeSottomaschera]![NomeCampo]
    Io comunque non sottovaluterei l'ipotesi di costruire maschera/1a sottomaschera/2a sottomaschera (la procedura guidata lo consente). I dati che vedresti nella 2a sottomaschera sarebbero automaticamente filtrati dal relativo IDAppalto.
  • Re: Aprire una maschera con un filtro basato su un click

    Grandee !!! funziona
    Per quanto riguarda maschera e sottomaschera ho fatto come dici tu nella creazione guidata
    era l'altro passaggio alla maschera Voci di capitolato che mi mancava .. ora funziona, ora provo anche con imposta valore predefinito per quanto riguarda il secondo punto che avevo chiesto.. ho appena provato ma mi mette #Tipo!
    mi sa che qui sbaglio
    aiuto
    Gian
  • Re: Aprire una maschera con un filtro basato su un click

    Qual'è la tua seconda domanda?
    Da come hai creato lo scenario generale, il tuo problema si ripropone volta per volta. Non so se hai preso in considerazione la ricostruzione con la procedura guidata. Se fai attenzione a ogni finestra, puoi anche scegliere se la 2a sottomaschera deve essere visualizzata come la 1a (default) oppure aprirla con la pressione di un tasto. Veramente questo puoi sceglierlo anche per la 1a sottomaschera, devi destreggiarti un po' e fare più prove, ma alla fine avresti il risultato che cerchi senza preoccuparti di impostare filtri o altro, provvede automaticamente Access a fare ciò.
  • Re: Aprire una maschera con un filtro basato su un click

    Ciao, il secondo punto è il seguente:
    una volta aperta la maschera voci di capitolato con il filtro preso dal click sul campo IdAppalto della Sottomaschera Appalti, e fin qui va bene e mi trovo il record set con tutti i campi IdAppalto uguali, ma quando aggiungo un nuovo record volevo che come cliccavo il campo IdAppalto me lo impostava automaticamente su quello del filtro, non so come mai ma la macro imposta valore
    Elemento = [Maschere]![VociCapitolato]![IDAppalto]
    Espressione = [Maschere]![Cliente]![Sottomaschera Appalto]![IDAppalto]
    sul click del campo IdCapitolato non funziona
    ma impostando il controllo su un pulsante a parte va ..
    Grazie Gian
  • Re: Aprire una maschera con un filtro basato su un click

    Giammi77 ha scritto:


    quando aggiungo un nuovo record volevo che come cliccavo il campo IdAppalto me lo impostava automaticamente su quello del filtro
    Dovresti impostare l'espressione filtro come Valore predefinito, così te lo trovi già impostato su Nuovo Record.

    Giammi77 ha scritto:


    sul click del campo IdCapitolato non funziona
    Non capisco cosa vuoi fare. A naso intuisco però che stiamo parlando di eventi diversi. Il clic di pulsante funziona perchè lo hai impostato. Devi associare un'altra o la stessa macro anche all'evento Clic sul campo IDCapitolato.
  • Re: Aprire una maschera con un filtro basato su un click

    Grazie ok ho verificato tutto avevi ragione tu..
    ora ho un altro bel problemino..
    Ho fatto una Maschera Anagrafica Cantieri, dove vengono visualizzati in visualizzazione maschera i record dei cantieri, poi all'interno di questa maschera ho messo una sottomaschera Elenco Cantieri in visualizzazione foglio dati in modo tale da vedere più cantieri contemporaneamente, ora volevo fare questo:
    una casella combinata dove selezionare tramite una query una città ed un pulsante che attiva il filtro per la sottomaschera Elenco Cantieri ho provasto così ma mi attiva il filtro nella maschera Anagrafica Cantieri e non Nella sottomaschera Elenco Cantieri, ho provato anche a fare la macro attivando l'oggetto Elenco Cantieri e poi applicare il filtro ma mi da' errore .
    Lo so che sto incasinando tutto ma in questo modo cerco di fare un ragionamento e seguirlo..
    grazie ancora gian
  • Re: Aprire una maschera con un filtro basato su un click

    Aspetta, bello bello, il discorso è cambiato totalmente. Se non mi descrivi tutti i campi di entrambi Anagrafica Cantieri e Elenco Cantieri non riesco a comprendere il problema.
  • Re: Aprire una maschera con un filtro basato su un click

    Ok allora :
    ho creato una tabella Cantieri:
    IDCantiere
    Città
    Provincia
    Indirizzo

    Poi una Maschera "Anagrafica Cantieri" per l'inserimento dati Cantieri basata sulla tabella Cantieri, in visualizzazione Maschera
    così vedo i record uno ad uno
    così ho pensato ebbene perchè non creare una sottomaschera uguale a quella sopra denominandola Elenco Cantieri "però in visualizzazione Foglio Dati" dove posizionarla all'interno della Maschera anagrafica Clienti e sulla quale fare delle operazioni di filtraggio con una Casella Combinata contenente un elenco delle Città (SELECT DISTINCT Cantiere.Città FROM Cantiere;) e un pulsante Applica Filtro in base al valore della casella combinata ma sulla sottomaschera Elenco Cantieri.
    Come si fà ?

    Grazie Gian
  • Re: Aprire una maschera con un filtro basato su un click

    La tua richiesta è molto diabolica, non so se si possa fare così come la vorresti tu, non so che senso ha. Io ti rispondo per come vedrei la cosa in maniera più semplice e standard. Io parto dal presupposto che tu vuoi filtrare i Cantieri di "Verona". Varie risposte:

    1) Intanto puoi sempre sfruttare il filtro in base a selezione. Imposta la maschera Cantieri (o Anagrafica Cantieri) come visualizzazione foglio dati (oppure maschere continue), ti posizioni su un record dove c'è scritto "Verona" e la passi liscissima.

    2) Tu però vuoi proprio una selezione da casella combinata, invece di "Verona", immagino di voler filtrare "Ludenscheid", dove non sempre azzecchi tutte le lettere. La prassi consiglia di:
    1. Creare una tabella Città relazionata uno-a-molti con Cantieri
    2. Maschera/sottomaschera Città/Cantieri
    3. Nella maschera principale puoi aggiungere (non so se si può sostituire) un campo casella combinata che guardi le Città ordinate alfabeticamente (sfruttando una query apposita)
  • Re: Aprire una maschera con un filtro basato su un click

    Ho risolto così:
    Ho creato una maschera divisa
    ho creato la casella combinata con origine dati la sequente query SELECT DISTINCT Cantiere.Città
    FROM Cantiere;
    e come evento ho fatto applica filtro con where :[Città]=[Maschere]![Cantiere]![CasellaCombinata17]
    tutto funziona ma perchè il filtro viene applicato alla maschera divisa che non è altro che una maschera con automaticamente le due visualizzazioni (foglio dati e maschera).
    Sarebbe stato interessante capire come applicare il filtro a una sottomaschera qualunque inserita in una maschera principale ..
    ma non trovo i comandi macro che mi permettano di ragionare sulla sottomaschera..
    Gian
    Grazie comunque esiste anche il Cerca nella visualizzazione foglio dati che è molto figo visto che mano mano che scrivi un nome automaticamente si posiziona ..
    ma era tanto per fare un qual cosa che rendesse più elementare la ricerca .

    Sai mi piacerebbe fare anche un programmino che controllasse i campi che vado a inserire e qualora si trovi un record uguale già inserito, mi comparisse un messaggio di avviso.
    +- ho in mente il ragionamento ma tradurlo in vba è ancora troppo presto per mè devo studiare un po'

    Gian
  • Re: Aprire una maschera con un filtro basato su un click

    Giammi77 ha scritto:


    mi piacerebbe fare anche un programmino che controllasse i campi che vado a inserire e qualora si trovi un record uguale già inserito, mi comparisse un messaggio di avviso.
    Un modo semplice ed efficace sta nell'impostare uno o più campi univoci:
    A) Se si tratta di un solo campo, basta impostare la proprietà Indicizzato Sì (Duplicati impossibili).
    B) Se si tratta di non voler ripetere più valori combinati su più campi, devi impostare un Indice Multicampo Univoco (leggi la guida in linea al riguardo).
    In entrambi i casi, se inserisci valori o record duplicati, Access invia un messaggio di errore dicendo in sostanza che tale operazione non può essere effettuata perchè si sta violando un indice univoco. Non occorre scomodare alcuna macro o VBA.
    La cosa diventa più complicata se tu volessi personalizzare la finestra di messaggio errore...qui non sono in grado di aiutarti.
  • Re: Aprire una maschera con un filtro basato su un click

    Grazie !
  • Re: Aprire una maschera con un filtro basato su un click

    Salve a tutti, ho un problema simile ma aimè, ancora non risolto. Mi spiego..(non ho moltissima dimistichezza con access però)
    Sto creando un db per la gestione dei clienti di un autofficina.

    Ho creato una tabella Clienti con:
    ID=contatore e chiave primaria
    serie campi relativi all'anagrafica

    Tabella veicoli con:
    ID=contatore e chiave primaria
    ID_cliente relazionato con la tabella relativa all'anagrafica cliente
    serie di campi relativi alle info veicoli.

    ho creato a loro volta 2 sottomaschere, 1 per i clienti (chiamata gestione contatti) ed un altra maschera, di tipo continua (chiamata Veicoli, di tipo 1 cliente, molti veicoli), per un immagazzinamento delle info veicoli quali targa modello etc.il tutto fin qui funge.
    Ho poi creato un'altra maschera (schedaVeicoli) per l'inserimento di tutte le info dei veicoli. La maschera è suddivisa in 2 pagine, 1 con le info veicolo, l'altra con le scadenze.
    Vorrei accedere a questa sottomaschera (schedaveicoli) tramite un pulsante allineato all'id del veicolo (maschera Veicoli) ma la maschera continua ad aprirsi in ordine crescente con ID veicolo 1...
    le maschere Veicoli e schedaVeicoli girano con la stessa query "veicoli_Q"

    come posso risolvere?
  • Re: Aprire una maschera con un filtro basato su un click

    X abio88: hai riaperto una discussione del 2013.
    Se hai necessità apri una nuova discussione tutta tua.
    Questa la chiudo
Devi accedere o registrarti per scrivere nel forum
14 risposte