Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [ACCESS] Creazione maschera per ricerca su tabella e visualizzazione risultati

    Buongiorno,
    mi chiamo Marco e sono nuovo del Forum. Mi sono iscritto per chiedere cortesemente aiuto per una cosa che dovrei creare in Access e non so come fare.
    Ho creato una tabella ed una maschera di inserimento valori collegata alla stessa, per una raccolta di dati relativi ai dipendenti dell'azienda per la quale lavoro (di fianco al nome delle colonne il tipo di dato richiesto in tabella):
    ID - contatore;
    nome - testo;
    cognome - testo;
    data nascita - data;
    data scadenza visita medica - data;
    data corso sopravvivenza - data;
    mansione - testo (scelta fra operaio ed impiegato, selezionabile nella maschera d'inserimento);
    qualifica - testo;
    sottoqualifica - testo;
    corsi eseguiti - SI/NO (ho predisposto diversi campi, uno per ogni corso);
    lingua inglese - SI/NO;
    valutazione dell'azienda - numerico (scelta da 1 a 3, selezionabile nella maschera d'inserimento);
    CV - collegamento ipertestuale al file PDF dipendente (altro problema di cui eventualemente vi chiederò info su come fare);
    note - testo;
    L'obiettivo è quello di poter ricercare in questo database uno o più record relativi a dipendenti che abbiano determinate caratteristiche.
    La cosa che mi crea problemi è creare una maschera che mi consenta di fare questa ricerca, visualizzando poi, magari nella medesima maschera di ricerca, l'elenco dei dipendenti (se presenti) che rispondano alle caratteristiche ricercate.

    Come dovrei procedere, in maniera semplice, nella maschera di ricerca che vorrei creare a parte, per poter ricercare e far visualizzare i nominativi dei dipendenti con determinate caratteristiche.
    Diciamo che come possibili chiavi si utilizzerebbero la mansione (operaio/impiegato), qualifica ed eventuale sottoqualifica, i corsi eventualmente eseguiti, la conoscenza della lingua inglese, la data di nascita e la valutazione dell'azienda (ID, cognome e nome non sono caratteristiche che si utilizzerebbero come chiavi).

    Grazie in anticipo del vostro aiuto.

  2. #2
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,523
    Quote Originariamente inviata da 19marco83 Visualizza il messaggio
    Buongiorno,
    mi chiamo Marco e sono nuovo del Forum.
    E quindi proprio per questo avresti dovuto leggere il Regolamento prima di iniziare...

    1) In questo forum NON si parla di alcune funzionalità peculiari di Microsoft Access (macro, maschere, report, etc) che continueranno ad essere trattate nel forum "Windows e software"

    Stavolta sposto io, le prossime chiudo

  3. #3
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,704
    Una soluzione può essere mettere in una sezione della maschera alcune caselle di riepilogo con i criteri, poi con un bottone raccogli i criteri e imposti il filtro per la maschera principale oppure cambi l'origine dati con una stringa SQL e criteri "where"
    Io ne ho viste cose che voi umani non potreste immaginare. Navi da combattimento in fiamme al largo dei bastioni di Orione e ho visto i raggi B, balenare nel buio vicino le porte di Tannhäuser. E tutti quei momenti ... andranno ... perduti nel tempo, come lacrime nella pioggia. È tempo di morire. (Roy Batty).

  4. #4
    Innanzitutto chiedo scusa a Comas17 ed a tutti gli altri utenti per avere iniziato una discussione nell'area errata.

    Quote Originariamente inviata da Misterxxx Visualizza il messaggio
    Una soluzione può essere mettere in una sezione della maschera alcune caselle di riepilogo con i criteri, poi con un bottone raccogli i criteri e imposti il filtro per la maschera principale oppure cambi l'origine dati con una stringa SQL e criteri "where"
    Grazie per l'idea Misterxxx, il problema che ho è proprio quello di creare una cosa del genere.
    Banalmente ho creato una query della mia tabella, nella maschera dove dovrei fare la ricerca ho fatto una combo dove ho messo una query della mia tabella con tutti i campi ed ho messo una casella di riepilogo dove poter scegliere fra "Operaio" ed "Impiegato". Infine ho creato un bottone che, nella mia mente, dovrebbe lasciare nella combo solamente i record che corrispondono all'una o all'altra scelta.
    Però non sò come fare in modo che premendo il bottone, possa "prendere" la scelta effettuata nella casella di riepilogo e mettere nella combo solamente i record che, ad esempio, si riferiscono agli Operai.
    Se riuscissi a capire la meccanica ed il codice necessario a fare questo poi metterei più criteri (creando più caselle di riepilogo nella medesima maschera) per rendere più specifica la ricerca sulla mia tabella.

    Occorre però andare per gradi ed al momento anche una cosa come questa che per tanti di voi sicuramente è molto semplice, a me risulta veramente complicata.

    Attendo dritte, cortesemente.
    Grazie.

  5. #5
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,704
    Ipotizzando che la tua combo box (es chiamata Operai) visualizzi nome e mansione, la origine riga sarà simile a:
    codice:
    SELECT Operai.nome, Operai.mansione FROM Operai;
    ipotizzando che la casella di riepilogo (es chiamata: CasellaRiepilogo) contenga il criterio, il bottone dovrebbe impostare l'orgine riga nell'evento "su click":
    codice:
    Me.Operai.RowSource = "SELECT Operai.nome, Operai.mansione FROM Operai WHERE Operai.mansione='" & Me.CasellaRiepilogo & '";
    questo è un modo, oppure se la maschera è basata sulla tabella puoi applicare direttamente il filtro:
    codice:
    docmd.ApplyFilter , "Operai.mansione='" & Me.CasellaRiepilogo & '""
    scritto al volo, può esserci qualche syntiax ma rende l'idea
    Io ne ho viste cose che voi umani non potreste immaginare. Navi da combattimento in fiamme al largo dei bastioni di Orione e ho visto i raggi B, balenare nel buio vicino le porte di Tannhäuser. E tutti quei momenti ... andranno ... perduti nel tempo, come lacrime nella pioggia. È tempo di morire. (Roy Batty).

  6. #6
    Quote Originariamente inviata da Misterxxx Visualizza il messaggio
    Ipotizzando che la tua combo box (es chiamata Operai) visualizzi nome e mansione, la origine riga sarà simile a:
    codice:
    SELECT Operai.nome, Operai.mansione FROM Operai;
    ipotizzando che la casella di riepilogo (es chiamata: CasellaRiepilogo) contenga il criterio, il bottone dovrebbe impostare l'orgine riga nell'evento "su click":
    codice:
    Me.Operai.RowSource = "SELECT Operai.nome, Operai.mansione FROM Operai WHERE Operai.mansione='" & Me.CasellaRiepilogo & '";
    questo è un modo, oppure se la maschera è basata sulla tabella puoi applicare direttamente il filtro:
    codice:
    docmd.ApplyFilter , "Operai.mansione='" & Me.CasellaRiepilogo & '""
    scritto al volo, può esserci qualche syntiax ma rende l'idea
    Grazie Misterxxx, ho provato entrambe le soluzioni che hai postato, però per entrambe mi da una casella con i messaggi "Errore di compilazione" "Errore di sintassi" aprendomi la pagina del codice.
    Ho verificato che i nomi assegnati alla combo box ed alla casella di riepilogo siano corretti (mi pare che lo siano) ma non riesco a capire quale possa essere il problema purtroppo...

  7. #7
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,704
    posta un po' di informazioni e cosa hai scritto
    Io ne ho viste cose che voi umani non potreste immaginare. Navi da combattimento in fiamme al largo dei bastioni di Orione e ho visto i raggi B, balenare nel buio vicino le porte di Tannhäuser. E tutti quei momenti ... andranno ... perduti nel tempo, come lacrime nella pioggia. È tempo di morire. (Roy Batty).

  8. #8
    Buongiorno Misterxxx,
    ti spiego brevemente come ho impostato la cosa.
    Utilizzando l'autocomposizione ho creato una maschera che mi consente di popolare la tabella che ho impostato come illustrato nel post di apertura della discussione.
    Sempre nella maschera iniziale ho messo un tasto che apre una maschera (denominata "Maschera2") dove ho messo una casella di riepilogo che va a prendere i dati dalla tabella. Anche in questo caso ho utilizzato l'autocomposizione perchè facesse questo in automatico.
    Il mio obiettivo finale è quello di poter fare un filtro sulla tabella su più campi. Ad esempio filtrare i record per "Operaio/Impiegato" e relativamente a chi ha fatto il corso "Appontaggio elicotteri", selezionando quindi "Operaio" e "SI" (relativamente al corso Appontaggio elicotteri), vorrei che spingendo un apposito tasto nella casella di riepilogo potessero venire fuori tutti i record contenenti "gli operai che hanno il corso di appontaggio elicotteri" nel caso in cui ci fosse qualcuno con queste caratteristiche.
    Nella mia mente vorrei quindi creare una serie di combobox relative a tutti i campi della tabella per i quali voglio effettuare un filtro e poi premendo un tasto si potesse aggiornare la casella di riepilogo con i record che hanno le caratteristiche selezionate. Ovviamente se in una combobox non viene selezionata alcuna scelta s'intende che vengano presi tutti i valori. Quindi la ricerca possa avvenire in maniera semplice, ad esempio cercando solo gli operai, oppure in maniera complessa cercando gli operai, che hanno effettuato il corso appontaggio elicotteri ed il corso BOSIET.
    Ovviamente la prima domanda che faccio è se è possibile fare la cosa che chiedo, così come l'ho descritta io. Perchè la maschera per questa funzione dev'essere anche molto semplice da usare e, prima di tutto, anche relativamente semplice da impostare per il sottoscritto.. infatti sono qui a chiedere cortesemente una mano.

    Non so se sono riuscito a spiegarmi in merito a cosa debba saltare fuori. Il fine di creare tutto questo in Access è che si possa in pochi click popolare una tabella di tutti i dipendenti dell'azienda ed in base all'occorrenza cercare/visualizzare il dipendente più idoneo (anche più di uno) per un determinato lavoro.

    Ovviamente ho cercato di iniziare per gradi chiedendo come fare a filtrare solamente per una caratteristica e poi avrei cercato di capire se fosse possibile, con lo stesso principio, applicare la cosa per una ricerca filtrando più campi contemporaneamente.

    Di seguito ti posto cosa ho fatto.
    Aprendo la "Maschera2" nella casella di riepilogo, denominata "Riep", si vedono inizialmente tutti i record memorizzati nella tabella (li ho inseriti utilizzando l'autocomposizione che li va a prendere dalla tabella).
    Ho creato una casella combinata, chiamandola "Mansione", dove viene mostrata la scelta "Operaio" o "Impiegato" per poter filtrare i record della tabella (nel campo apposito) per questa caratteristica. Ho poi creato un pulsante di comando, chiamandolo "Filtro" dove nell'evento su clic ho inserito questo
    codice:
    docmd.ApplyFilter , "Riep.Mansione='" & Me.Mansione & '""

    Ho salvato, avviato la Maschera2 e premuto il pulsante "Filtro" ed appare un messaggio di errore che dice "Errore di compilazione" "Errore di sintassi", aprendomi la pagina del codice.

    Mentre in base all'altro esempio che mi avevi lasciato, nel pulsante "Filtro" ho cancellato il codice che avevo prima e nell'evento su clic ho provato con il seguente
    codice:
    Me.Riep.RowSource = "SELECT Riep.ID, Riep.Nome, Riep.Cognome, Riep.Mansione, Riep.Bosiet, Riep.Appontaggio elicotteri FROM Riep WHERE Riep.Mansione='" & Me.Mansione '";
    Questa volta non da nessun errore, però una volta premuto il pulsante mi svuota la casella riepilogo Riep lasciandola vuota. Nel senso che non è presente più alcun record, ovviamente nella tabella che ho popolato sò che ce ne sono sia di record con "Operaio" sia di record con "Impiegato".

  9. #9
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,704
    se devi passere i parametri da una maschera ad un altra devi dare un riferimento assoluto (forms.maschera.controllo.propietà) e non relativo, questo è il motivo dell'errore
    infatti avevo suggerito di impostare i filtri sulla stessa maschera che visualizza
    se per te non è un prb ti scrivo in PM altrimenti rischiamo di fare messaggi senza arrivare

    Access fa tutto
    Ultima modifica di Misterxxx; 16-11-2015 a 15:20
    Io ne ho viste cose che voi umani non potreste immaginare. Navi da combattimento in fiamme al largo dei bastioni di Orione e ho visto i raggi B, balenare nel buio vicino le porte di Tannhäuser. E tutti quei momenti ... andranno ... perduti nel tempo, come lacrime nella pioggia. È tempo di morire. (Roy Batty).

  10. #10
    Quote Originariamente inviata da Misterxxx Visualizza il messaggio
    se devi passere i parametri da una maschera ad un altra devi dare un riferimento assoluto (forms.maschera.controllo.propietà) e non relativo, questo è il motivo dell'errore
    infatti avevo suggerito di impostare i filtri sulla stessa maschera che visualizza
    se per te non è un prb ti scrivo in PM altrimenti rischiamo di fare messaggi senza arrivare

    Access fa tutto
    Grazie dell'aiuto Misterxxx ;-)
    La maschera dove si svolge il tutto è sempre la stessa. Lì ho messo la casella di riepilogo "Riep" che prende i dati dalla tabella, poi ho fatto la combo "Mansione" per selezionare operaio/impiegato ed il pulsante "Filtro" per eseguire la ricerca in base alla mansione selezionata.
    I record che corrispondono alla mia selezione vorrei che venissero fuori sempre nella casella di riepilogo "Riep" che è nella medesima maschera.
    Invece quando spingo il pulsante "Filtro" la casella "Riep" si svuota e non appare nessun record.

    Comunque scrivimi pure in PM, assolutamente nessun problema :-)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.