Query origine dati di una form: cambiare .recordsource da codice oppure copia della frm???

di il
13 risposte

Query origine dati di una form: cambiare .recordsource da codice oppure copia della frm???

Buongiorno a tutti,

vi leggo da tempo e ho sempre trovato utili risposte alle mie domande...

ho realizzato da autodidatta un piccolo db per la gestione dei titoli di studio per i dipendenti della mia ditta... circa 800..la parte dell'inserimento và tutta e anche le interrogazioni sono riuscito a farle girare come volevo..

ho scritto questo post per chiedervi un consiglio secondo la vostra esperienza:

con il db popolato ho bisogno di visualizzare i risultati in numeri in una form di riepilogo.. nello specifico in una sorta di tabella ho ordinato e contato i titoli posseduti(x) dai rispettivi ruoli (y) dei dipendenti...e fin qui tutto bene.. me la sono cavata con query ad hoc e le funzioni di aggregazione sui domini ...

ora ovviamente vorrei cliccare sul numero e far visualizzare l'elenco di quei dipendenti che posseggono quel titolo...nessun problema... se non fosse che ho rimandato, per la visualizzazione, la stessa maschera che uso per interrogarlo...col docmd nella parte where ho caricato catdipendente e cattitolo ... il problema è nato quando il dipendente "molto titolato" possiede piu titoli della stessa categoria...e quindi mi visualizza correttamente tutti i suoi record...a me serve aggiungere un raggruppamento che mi restituisca solo il piu alto (max) dei titoli di quel dipendente nella query...(sorgente maschera)...Da qui la domanda...è meglio cambiare la sorgente della maschera sul caricamento da codice tipo un if su openargs..me.recordsource bla bla bla ..oppure è meglio farmi una copia della maschera e cambiargli direttamente la sorgente?...l'utente non se ne accorgerebbe in ogni caso di questi movimenti...è solo uno sfizio per capire quale sia migliore come strada da seguire...o se ce un modo per ovviare all'ostacolo...

la premessa (che avrei dovuto far prima ) è che la maschera "interroga" ha ovviamente in alto un serie di combobox per filtrare a piacimento...ovviamente se uso la medesima maschera cambiando la sorgente sulla chiamata poi dovrei ricaricare la sorgente originaria ogni volta che filtro...spero di essermi spiegato e scusate se sono prolisso...

ovviamente se esiste un modo per passargli anche tramite codice un groupby alla query sorgente della maschera sono sempre ben accetto a imparare cose nuove...

grazie in anticipo a chi mi dedicherà il suo tempo e il suo contributo.

ad maiora

13 Risposte

  • Re: Query origine dati di una form: cambiare .recordsource da codice oppure copia della frm???

    Potresti elencare:
    - tutti i nomi propri delle tabelle
    - tutti i nomi propri dei campi di ogni tabella con indicazione della chiave primaria
    - le relazioni
    - nomi propri di maschere e query e su quali tabelle poggiano
    - rispiega tutto usando i nomi propri specifici
    In alternativa ai primi 3 punti, potresti allegare una immagine della Finestra Relazioni.
  • Re: Query origine dati di una form: cambiare .recordsource da codice oppure copia della frm???

    Ti ringrazio per la celere risposta osvaldo...

    pensavo di portare solo un quesito procedurale....cioè conviene usare la stessa maschera cambiando la sorgente da codice o conviene avere due maschere simili (con sorgenti diverse una raggruppata e l'altra no) ???
  • Re: Query origine dati di una form: cambiare .recordsource da codice oppure copia della frm???

    È impossibile (almeno per me) darti una risposta senza un minimo dei punti che ti ho indicato prima.
  • Re: Query origine dati di una form: cambiare .recordsource da codice oppure copia della frm???

    A livello di logica, a mio avviso, stai prendendo la strada sbagliata.

    In breve, si deve fornire all'utente un'interfaccia semplice e chiara... lasciamo da parte un secondo i Filtri che non cambiano la sostanza del Ragionamento ma solo il Numero dei Records.
    Se c'è la possibilità di visualizzare una scala gerarchica, quindi come nel tuo caso ci sono raggruppamenti, e dettagli... la cosa più utile è visualizzare entrambi... in modo funzionale e distinto.
    Ci sono vari modi per farlo:
    1) TreeView e SubForm Detail
    2) Form/SubForm
    3) Form(Datasheet) e SubForm(DataSheet)
    4) Form(contenitore) e ListBox con SubForm Detail
    5) Form(contenitore) e ListBox e Form Popup di Dettaglio...

    Scegli tu il metodo, ma questa è la logica... non pensare minimamente a riciclare la Form cambiando il RecordSource, perchè questa tecnica è fattibile solo a 1 Condizione: Dati in ingresso IDENTICI come NOMI CAMPI... e credo non sia il tuo caso, perchè una Presentazione Ragruppata non ha gli stessi campi di una Visualizzazione di Dettaglio.
    Certo puoi cambiare il SourceObject, ovvero visualizzare una Form(come subform) diversa in relazione alle esigenze, ma perdi l'informazione della Radice.

    Per come io ragiono, sono abituato ad usare un TreeView(nel caso in cui ci siano Livelli gerarchici Multipli) oppure una ListBox(nel caso ce ne sia solo 1) che mostra il raggruppamento, e su AfterUpdate del Controllo, vado a filtrare i dati della Maschera continua di Dettaglio.
    In realtà non uso codice in quanto lego la SubForm(Detail) come campo Master alla ListBox(soluzione 4, un poco più articolata... ma questa)

    Insomma serve sicuramente fare qualche riflessione prima di sviluppare e soprattutto avere una LOGICA pulita e funzionale, ed avere una discreta conoscenza delle possibilità tecniche, poi si analizzano i pro/contro anche in relazione alle proprie conoscenze.
  • Re: Query origine dati di una form: cambiare .recordsource da codice oppure copia della frm???

    Questo sql è della query che dovrei impostare come sorgente alla maschera FrmInterroga quando la richiamo dal riepilogo e voglio sapere chi sono gli n. dipendenti appartenenti a un ruolo specifico e posseggono una cat di titolo specifica ....
    SELECT ElencoNucleo.Grado, ElencoNucleo.Sesso, ElencoNucleo.Cognome, ElencoNucleo.Nome, Max(TblCatTitoliStudio.IdCatTitoliStudio) AS MaxDiIdCatTitoliStudio, TblRelMilTitoliStudio.FKmil, Last(TblRelMilTitoliStudio.IDRelMilTitoli) AS UltimoDiIDRelMilTitoli, Last(TblCatTitoliStudio.[titolo di studio]) AS [UltimoDititolo di studio], Last(Tbltitolidistudio.SpecificaTitoloStudio) AS UltimoDiSpecificaTitoloStudio, ElencoNucleo.[Anzianità Grado], ElencoNucleo.Ruolo
    FROM (TblCatTitoliStudio INNER JOIN (Tbltitolidistudio INNER JOIN TblRelMilTitoliStudio ON Tbltitolidistudio.idtitolo = TblRelMilTitoliStudio.FKTitoli) ON TblCatTitoliStudio.IdCatTitoliStudio = Tbltitolidistudio.FKCategoriaTitolo) INNER JOIN ElencoNucleo ON TblRelMilTitoliStudio.FKmil = ElencoNucleo.[Matr meccanografica]
    GROUP BY ElencoNucleo.Grado, ElencoNucleo.Sesso, ElencoNucleo.Cognome, ElencoNucleo.Nome, TblRelMilTitoliStudio.FKmil, ElencoNucleo.[Anzianità Grado], ElencoNucleo.Ruolo;
    

    questo invece è il codice sorgente della maschera quando voglio interrogare il db e sapere ogni dipendente cosa ha conseguito... quindi anche piu titoli specifici della stessa categoria...
    SELECT ElencoNucleo.*, TblRelMilTitoliStudio.*, Tbltitolidistudio.*, TblCatTitoliStudio.*, ElencoNucleo.Grado
    FROM ((TblCatTitoliStudio INNER JOIN Tbltitolidistudio ON TblCatTitoliStudio.IdCatTitoliStudio = Tbltitolidistudio.FKCategoriaTitolo) INNER JOIN TblRelMilTitoliStudio ON Tbltitolidistudio.idtitolo = TblRelMilTitoliStudio.FKTitoli) INNER JOIN ElencoNucleo ON TblRelMilTitoliStudio.FKmil = ElencoNucleo.[Matr meccanografica]
    ORDER BY TblRelMilTitoliStudio.IDRelMilTitoli DESC;
    
    non ho più imageshack o simili per caricarti l'immagine della finestra relazioni ma leggendo il FROM si dovrebbe intuire...

    aldilà di tutti questi dati... la domanda secondo me resta estranea ai dati stessi... volevo solo capire se mi conviene fare una maschera in più...oppure tenermi quella che già ho e cambiargli adeguatamente il me.recordsource quando la richiamo dalla maschera di riepilogo...

    spero di esservi d'aiuto per ricevere il vostro aiuto:)
  • Re: Query origine dati di una form: cambiare .recordsource da codice oppure copia della frm???

    CicciusPrime ha scritto:


    volevo solo capire se mi conviene fare una maschera in più...oppure tenermi quella che già ho e cambiargli adeguatamente il me.recordsource
    Non riesco a seguire il discorso per intero, ma credo che la risposta sia stata data già qui

    @Alex ha scritto:


    Riciclare la Form cambiando il RecordSource...questa tecnica è fattibile solo a 1 Condizione: Dati in ingresso IDENTICI come NOMI CAMPI
  • Re: Query origine dati di una form: cambiare .recordsource da codice oppure copia della frm???

    @Alex ha scritto:


    A livello di logica, a mio avviso, stai prendendo la strada sbagliata.


    @Alex ha scritto:


    Dati in ingresso IDENTICI come NOMI CAMPI... e credo non sia il tuo caso, perchè una Presentazione Ragruppata non ha gli stessi campi di una Visualizzazione di Dettaglio.
    i campi che uso per la visualizzazione sono idrel(nascosto). matricola, grado-cognome-nome, cattitolo, specifica, data conseguimento e datainserimento...altri campi gli ho inseriti per dargli un ordinamento nella visualizzazione ma non sono origine di controlli

    in realtà la maschera di interrogazione (multipla ovviamente) ha un pulsante che rimanda al record specifico per modificarlo o visualizzarlo nella sua interezza su una maschera creata per l'inserimento.

    l'elenco che vorrei risultasse dalla query raggruppata dovrebbe essere uguale a quello che risulta quando interrogo...con la sola differenza che se in riepilogo o n dipendentiX con la laurea... cliccandoci sopra vorrei trovare n dipendentiX visualizzati con l'ultima Laurea inserita (last di specificatitolo)...e non tutte quelle che hanno preso...


    potrei scrivere uguale il nome del campo dei raggruppati max e last tramite "as ...nome campo... in questo modo avrei l'identicità richiesta...
    solo per quei campi oggetto di visualizzazione..( specifica del titolo e categoria)..

    però avendo anche la stessa esigenza su un gestionale che ho creato dove devo riepilogare ordini e righeOrdini... la soluzione 1) TreeView e SubForm Detail mi interessa... dove trovo informazioni in merito???

    in piu di un'occasione ho pensato di passare a un report dove ho meno problemi a raggruppare e ordinare...
  • Re: Query origine dati di una form: cambiare .recordsource da codice oppure copia della frm???

    Informazioni per cosa... per il TreeView...?

    Sono i primi 2 che ho trovato con Google facendo la ricerca...
    http://www.alfainfo.it/come-usare-un-controllo-treeview-in-access/
    https://www.wisdomjobs.com/e-university/ms-access-tutorial-203/the-treeview-control-8363.html
  • Re: Query origine dati di una form: cambiare .recordsource da codice oppure copia della frm???

    Si ci ho pensato dopo che avrei potuto sgugolare:D... grazie cmq...

    in merito al fatto di assegnare i nomi ai campi della query per non avere il problema di far mancare corrispondenza...??? sfrutterei il codice della maschera che per quello che serve a me è già sufficiente...
  • Re: Query origine dati di una form: cambiare .recordsource da codice oppure copia della frm???

    Guardato ora il treeview... assolutamente non indicato per la mia esigenza...non lo conoscevo perche mi sono fermato a lavorare con i Dao ...con i controlli activex non mi sono ancora misurato...

    qui servono caselle belle grosse per occhiali fondi...

    proverò a seguire il discorso originario... in alternativa provo a sviluppare una subform a scomparsa...non conosco altri modi per creare un gruppo in una maschera:(

    si accettano consigli
  • Re: Query origine dati di una form: cambiare .recordsource da codice oppure copia della frm???

    Mi pare non sappia nemmeno tu quello che vuoi...

    Ti lascio sperimentare mi pare il discorso fosse solo do struttura logica non realizzativa, come hai tu stesso ricordato prima, quindi spiegata la logica... fai come meglio pensi ti possa soddiafare.
  • Re: Query origine dati di una form: cambiare .recordsource da codice oppure copia della frm???

    Alla fine ha vinto la semplicità....

    ho fatto una nuova query raggruppata come la volevo e lo usata come origine per una nuova maschera "elenco" ...ma solo con rimando alla visualizzazione completa del titolo(idrel)

    cambiare l'origine (me.recorsource) con il ciclo if su openargs...all'apertura funzionava... (opportunamente modificati i nomi campi query per trovare corrispondenza come suggerito all'inizio)...il problema lo avevo dopo quando dovevo cambiare anche l'origine delle combobox dei filtri...a quel punto ho preferito chiudere il discorso in 4 secondi con una nuova form e amen!!!

    grazie ad Alex e osvaldo per i preziosi consigli

    alla prossima
    Allegati:
    26204_cbfd7ae36fffe4f021656bc52bc387c4.png
    26204_cbfd7ae36fffe4f021656bc52bc387c4.png
  • Re: Query origine dati di una form: cambiare .recordsource da codice oppure copia della frm???

    Per completezza...visto che ho trovato il modo di caricare le immagini..chiudo il post con due fotine...

    questa è FrmInterroga che volevo utilizzare all'inizio cambiando il recordsource...

    https://www.iprogrammatori.it/forum-programmazione/download/file.php?mode=view&id=2756&sid=7468ac139a9e9b52c3d6cae59289deab

    questa è la maschera di riepilogo dove con il doppio clic apro l'elenco FrmElenco

    https://www.iprogrammatori.it/forum-programmazione/download/file.php?mode=view&id=2757&sid=7468ac139a9e9b52c3d6cae59289deab


    questa è nuova maschera FrmElenco creata con cui ho risolto il dubbio che mi ero posto all'inizio...

    https://www.iprogrammatori.it/forum-programmazione/download/file.php?mode=view&id=2758&sid=7468ac139a9e9b52c3d6cae59289deab
    Allegati:
    FrmElenco
    FrmElenco

    FrmPerRuolo
    FrmPerRuolo

    FrmInterroga
    FrmInterroga
Devi accedere o registrarti per scrivere nel forum
13 risposte