Filtrare ricerca guidata

di
Anonimizzato11965
il
18 risposte

Filtrare ricerca guidata

Ciao
sto creando un database dove ho una maschera cosi costruita

data cliente(effettua una ricerca guidata) e fasi di lavoro (effettua una ricerca guidata)

precedentemente ho creato tabella clienti e una tabella fasi di lavoro,
la tabella fasi di lavoro è cosi costruita

cliente(effettua una ricerca guidata) e fasi di lavoro

quindi posso selezionare il medesimo cliente con più fasi di lavoro ecc

come faccio nella maschera a selezionare le fasi di lavoro in base al cliente selezionato?

qualcuno sa aiutarmi grazie

18 Risposte

  • Re: Filtrare ricerca guidata

    Se hai detto di avere 2 tabelle, perchè parli di una maschera?
    Le tabelle sono correlate? Qual'è la madre e quale la figlia?
    Potresti raccontare più particolari sui campi e le loro relazioni?
  • Re: Filtrare ricerca guidata

    Non sono tanto esperto di access quindi non saprei spiegarmi se non inviando il database creato
  • Re: Filtrare ricerca guidata

    Prova ad allegare una immagine della finestra Relazioni.
    Oppure prova a scrivermi direttamente a questa e-mail

    avendo cura di inviare il database in formato .MDB e zipparlo perchè altrimenti il mio antivirus rifiuterebbe di aprirlo.
  • Re: Filtrare ricerca guidata

    Provo cmq a spiegarmi meglio

    Tabella Dipendenti

    campo 1 ID
    campo 2 nome\cognome
    campo 3 indirizzo
    campo 4 telefono
    Ecc

    Tabella Clienti

    campo 1 ID
    campo 2 cliente
    campo 3 indirizzo
    campo 4 telefono
    ecc

    Tabella Fasi di lavoro

    campo 1 ID
    campo 2 cliente (effettuo ricerca guidata in tabella clienti campo 1)
    campo 3 fase si lavoro

    ad un cliente possono corrispondere più fasi di lavoro

    Tabella rapportino giornaliero

    campo 1 ID
    campo 2 Data
    ecc

    Sottotabella Rapportino giornaliero

    campo 1 ID
    campo 2 ID tabella rapportino giornaliero
    campo 3 dipendente (ricerca guidata nome\cognome tabella dipendenti)
    campo 4 cliente (ricerca guidata cliente tabella clienti)
    campo 5 fase di lavoro (ricerca guidata fase di lavoro tabella fasi di lavoro)

    e qui che vorrei che in base al cliente selezionato nel campo 4 in fase di ricerca del campo cinque mi venissero proposte solo le fasi di lavoro di quel cliente
    impostate nella tabella fasi di lavoro
    poi per lavorare vorrei creare maschera con sottomaschera

    mi sono spiegato meglio
  • Re: Filtrare ricerca guidata

    Raccontare uno scenario tabelle così, va molto bene.

    Intanto ti suggerirei di nominare tutti i campi ID (Contatore) diversamente (IDDipendente, IDCliente, IDFaseLavoro...), per non avere problemi in futuri altri utilizzi di questi campi per query, report ecc...

    Quelli che tu chiami "Ricerca guidata" (parola scritta che trovi dentro le proprietà di un campo in tabella), alcuni manuali di base li chiamano "Campi di ricerca", ma più tecnicamente si chiamano "Caselle combinate" o "ComboBox".

    Non riesco a cogliere il significato della tabella "Fasi di lavoro". Potresti fare un esempio con 3-4 record di come dovrebbe essere composta?
    A naso mi viene di risponderti che io vedrei una tabella FasiLavoro a parte e che la tua attuale "Fasi di lavoro" si chiamasse diversamente (Clienti-FasiLavoro), essendo tabella di congiunzione fra FasiLavoro (mia) e Clienti.

    zzsss ha scritto:


    Sottotabella Rapportino giornaliero

    campo 1 ID
    campo 2 ID tabella rapportino giornaliero
    campo 3 dipendente (ricerca guidata nome\cognome tabella dipendenti)
    campo 4 cliente (ricerca guidata cliente tabella clienti)
    campo 5 fase di lavoro (ricerca guidata fase di lavoro tabella fasi di lavoro)

    e qui che vorrei che in base al cliente selezionato nel campo 4 in fase di ricerca del campo cinque mi venissero proposte solo le fasi di lavoro di quel cliente
    impostate nella tabella fasi di lavoro
    Nella Sottotabella Rapportino giornaliero, anzichè avere 2 campi (4 e 5) io penso che con un solo campo IDCliente-FaseLavoro (proveniente dalla mia proposta tabella di congiunzione), tu risolveresti meglio il problema.
    Però resta qualche punto oscuro che non capisco...per il momento dimmi se hai capito qualcosa di quello che ho detto finora.

    ...continuando
    Io chiamerei la tua tabella "Fasi di lavoro" C-FL (cioè Clienti-FasiLavoro)
    "C-FL"
    IDCFL
    IDCliente
    IDFL

    e una tabella a parte
    "FasiLavoro"
    IDFL
    FaseLavoro

    Relazioni:
    Clienti.IDCliente uno-a-molti con C-FL.IDCliente
    FasiLavoro.IDFL uno-a-molti con C-FL.IDFL

    tabella "RapportinoGiornaliero"
    IDRG
    IDDipendente
    IDCFL

    Relazioni:
    Dipendenti.IDDipendente uno-a-molti con RapportinoGiornaliero.IDDipendente
    C-FL.IDCFL uno-a-molti con RapportinoGiornaliero.IDCFL

    Questo, secondo me, è uno scenario più coerente.
  • Re: Filtrare ricerca guidata

    Ho provato ad inviarti mail con esempio è si giusta la soluzione che mi hai proposto ma vorrei tentare di risolverla lasciando separato il campo clienti da quello fasi di lavoro in quanto le fasi di lavoro potrebbero anche non essere necessarie
  • Re: Filtrare ricerca guidata

    Ho provato anche l'ultima soluzione che mi hai dato ma non è quella che cerco rende si facile all'inizio la ricerca ma nel momento che i clienti aumentano e le fasi di lavoro sono sempre di piu si crea un elenco lunghissimo
  • Re: Filtrare ricerca guidata

    Secondo il mio parere la soluzione grafica della maschera (riguardo la selezione delle fasi di lavoro una volta selezionato il cliente indipendentemente da come strutturo il database se parto dalla data come dicevo io o da un evento come dicevi tu)deve essere come quella che si può vedere negli allegati peccato che riesco solamente a farla funzionare con il primo record
    Allegati:
    11965_ae5d9fcba8a79c736180dabee6f23802.jpg
    11965_ae5d9fcba8a79c736180dabee6f23802.jpg

    11965_d5e1a474f3b7a2bd484a66e8f576db95.jpg
    11965_d5e1a474f3b7a2bd484a66e8f576db95.jpg
  • Re: Filtrare ricerca guidata

    Mi sembra che la prima figura rispecchia un suggerimento che avevo dato io in partenza: quello cioè di pensare a una casella combinata per il campo "Fasi di lavoro".

    La seconda figura dice la stessa cosa che ti ho suggerito per e-mail. Cambia soltanto la disposizione dei campi:
    IDFaseLavoro | Cliente | FaseLavoro
    in questo modo digiti/selezioni in primis il Cliente portandoti appresso una delle FasiLavoro ad esso associato.

    Però resta grosso il problema dell'organizzazione generale delle tabelle che lascia aperta la discussione a diversi punti di vista.
    Per me Data | IDDipendente | IDCliente | FaseLavoro è una combinazione di campi che rischia facilmente di lasciare gli ultimi 3 campi a selezioni libere e/o incoerenti se non li accoppi coerentemente in precedenza.
  • Re: Filtrare ricerca guidata

    Non capisco bene cosa intendi alla fine:

    Però resta grosso il problema dell'organizzazione generale delle tabelle che lascia aperta la discussione a diversi punti di vista.
    Per me Data | IDDipendente | IDCliente | FaseLavoro è una combinazione di campi che rischia facilmente di lasciare gli ultimi 3 campi a selezioni libere e/o incoerenti se non li accoppi coerentemente in precedenza

    per me nella maschera rapportino giornaliero la data è in ordine crescente e con duplicati non ammessi di conseguenza la metto in relazione con la sottomaschera rapportini di lavoro.
    poi l'immissione dai dipendenti e clienti la effettuo con ricerca guidata per essere più veloce e sfruttare solo valori predefiniti, quindi li considero liberi possono assumere infinite combinazioni, l'unica cosa sono le fasi di lavoro che devono essere legate al cliente quindi limitate
  • Re: Filtrare ricerca guidata

    zzsss ha scritto:


    ho provato anche l'ultima soluzione che mi hai dato ma non è quella che cerco rende si facile all'inizio la ricerca ma nel momento che i clienti aumentano e le fasi di lavoro sono sempre di piu si crea un elenco lunghissimo

    zzsss ha scritto:


    l'unica cosa sono le fasi di lavoro che devono essere legate al cliente quindi limitate
    Non trovi che queste due frasi sono contraddittorie?

    Ad ogni modo, trovo sbagliato l'approccio in partenza riguardo alla tabella RAPPORTINO GIORNALIERO.
  • Re: Filtrare ricerca guidata

    È lunghissimo perche devo com ricercare la fasi di lavoro affiancata al cliente andrebbe benissimo la tua soluzione ma dovrebbero comparire solo le fasi di lavoro che poi si spagliato il modo in cui costruisco il database può essere infatti sto provando a crearne uno come dicevi te ma rimane sempre il problema di poter ricercaraqueste "benedette fasi di lavoro" in base al cliente
  • Re: Filtrare ricerca guidata

    E sopratturo vedere solo quelle
  • Re: Filtrare ricerca guidata

    Salve a tutti.
    Scusate se mi intrometto, ma da quello che ho letto, non ho ben capito qual'è la base logica principale da considerare per iniziare ad archiviare i dati.
    Mi spiego.
    Il database può essere creato partendo come elemento principale il cliente, oppure la data.
    In base alla scelta, la logica da seguire sarà diversa, sopratutto per creare le tabelle, dove da quello che ho capito, molti dati potrebbero essere incorporati all'interno di una stessa tabella.
    Da quello che ho capito leggendo, abbiamo una data univoca, un approccio che rende complicata e ridondante i dati.
    Secondo me bisognerebbe partire dal cliente, per poi sviluppare il tutto e il rapportino di lavoro dovrebbe essere creato tramite una query che va a selezionare i dati tra le tabelle per poi elaborarli.

    Comunque per il problema di visualizzare esclusivamente le fasi di lavoro di un cliente selezionato in una combo box, la via più semplice è usare una macro, richiamata tramite l'evento click o got focus della combo box in questione.
    Praticamente in parole povere:
    Selezioni il cliente pippo e tu vorresti che nella seconda combo box, apparissero solo le fasi di lavoro di quel cliente e non TUTTE le fasi di lavoro di tutti gli altri clienti.
    Per fare questo devi:
    Selezionare nella prima combo box il nome del cliente, recuperare la chiave primaria di quel cliente nella tabella clienti, fare una ricerca nella tabella correllata delle tabella delle fasi che hanno la chiave primaria associata a quel cliente e quindi far visualizzare solo quelle fasi, nella casella delle fasi.
    Questa è la fase logica.
    Per la fase tecnica hai due vie principali.
    Uno script in VBA, oppure, tramite un collegamento ipertestuale interno, usare una macro.
    Carica il database di esempio di access, il northwind.
    Lì questa tecnica è molto usata e guarda come gestiscono la cosa.
    Partendo da questo, cioè ragionando su un esempio che conosciamo entrambi, vedrai che sarà molto più semplice per noi anche aiutarti, anche se, molto probabilmente, troverai la soluzione da solo.

    PS:
    cosa che hai già fatto nella struttura delle tabelle.
    Per la ricerca, non usare il cognome del cliente, ma il suo ID univoco, altrimenti, se hai due o più clienti con lo stesso cognome o nome, ti ritrovi o con tutte le fasi di tutti i clienti che sono omonimi, o come successo, ti ritrovi sempre il primo che la query incontra, oppure generi un errore.
Devi accedere o registrarti per scrivere nel forum
18 risposte