[Access] Marcare records filtrati

In una maschera ho diversi tipi di filtri attivabili, ho però la necessità di impostare una checkbox in una sottomaschera che poi mi servirà per stampare i records appunto "spuntati". In sintesi l'utente opera il filtro, ha un risultato di n records a questo punto vorrebbe selezionare questo filtraggio, o meglio questi records, per poi passare alla stampa dei soli records filtrati.

Come posso fare per realizzare questo?

Grazie, Massimo.
Ciao Massimo,
ci sono vari  modi che dipendono dalla situazione, se ad esempio il tuo db è usato da una sola  persona allora la cosa più semplice è aggiungere un flag stampa alla tabella ed ogni volta prima di aprire la maschera li resetti a False.  Se invece sei in una situazione multiuser dove varie persone contemporaneamente possono voler stampare dati diversi, la cosa più comoda è utilizzare una tabella temporanea sul FrontEnd con gli ID univoci dei record frutto del filtro e un campo flag, che l'utente imposterà con la sua selezione.
Solo un paio di idee, poi se ci illustri meglio il tuo caso possiamo approfondire una delle due soluzioni o trovarne un'altra.

Cinzia


Sito RIO
Il mio Blog
Cinzia Pagani
http://www.riolab.org/
http://accessdaziacin.wordpress.com/

La risposta è risultata utile?

Siamo spiacenti che questo non sia stato utile.

Ottimo. Grazie per il tuo feedback.

Quanto sei soddisfatto di questa risposta?

Grazie per il feedback, ci aiuta a migliorare il sito.

Quanto sei soddisfatto di questa risposta?

Grazie per il tuo feedback.

Ciao Cinzia,
l’ambiente è multiutente e ti spiego in dettaglio: vengo dalla prima soluzione, ovvero adesso esiste una checkbox nella tabella del Back End che sfrutto per il filtro stampa su selezione. L’esigenza è cambiata in quanto, essendo il database utilizzato in contemporanea da più persone, ho la necessità di permettere delle selezioni personalizzate.

Sono quindi giunto alla tua stessa conclusione, ho creato un’altra tabella nel Front End nella quale ho inserito il campo collegato alla checkbox, questa tabella è in relazione con quella principale e fin qui tutto funziona bene. L’utente a discrezione propria resetta la checkbox con un pulsante (per tutti i records), oppure lascia così com’è per eventuali aggiunte od eliminazioni alla selezione.

I problemi quali sono:

1. Essendo una sottomaschera quella che contiene la checkbox se l’utente preme PagUP o PagDOWN o muove la rotellina del mouse si passa al record successivo, l’effetto è chiaramente la spunta nella checkbox che scompare. La sotto-maschera è spoglia, senza niente fuorché un pulsante ed una checkbox, tale da sembrare parte stessa della maschera che la contiene, quindi in teoria l’utente neanche se ne avvede di questa caratteristica ma a me sembra davvero poco elegante e forse può generare anche qualche problema.

2. L’altra cosa che mi viene richiesta è di fornire un comando che, a fronte di un filtraggio (considera che ho filtri AND/OR su memo, filtro in base a selezione, filtro in base a combo box,...), si possa con un clic effettuare la spunta sulla checkbox di tutti e soli i records in quel momento filtrati (filtro classico, oppure abbinati ad un Recordsource diverso che viene da una query SQL).
Non gli do torto, in effetti alcune selezioni restituiscono decine di records che andare a spuntare uno ad uno è veramente una perdita di tempo.
In sintesi: ho 1000 records? Ne filtro 100? Voglio con un pulsante selezionare tutti e 100 questi record in questo momento visibili, per poi effettuare in un secondo momento una stampa filtrata sul valore “-1” della checkbox.

In pratica mi piacerebbe sapere come si fa ad inserire un controllo in una maschera però facente riferimento ad un campo di un’altra tabella, che con la tabella principale ha una relazione sull’ID. Senza usare una sotto-maschera.
In secondo luogo come si fa a impostare in un colpo solo un campo su tutti e soli i record visibili a fronte di filtraggio.

Il mio approccio è stato questo, ben venga una soluzione diversa, non voglio condizionare.

Scusa la mia lungaggine e grazie per l’interessamento.

Ciao, Massimo.

La risposta è risultata utile?

Siamo spiacenti che questo non sia stato utile.

Ottimo. Grazie per il tuo feedback.

Quanto sei soddisfatto di questa risposta?

Grazie per il feedback, ci aiuta a migliorare il sito.

Quanto sei soddisfatto di questa risposta?

Grazie per il tuo feedback.

Nessuna idea a riguardo?

La risposta è risultata utile?

Siamo spiacenti che questo non sia stato utile.

Ottimo. Grazie per il tuo feedback.

Quanto sei soddisfatto di questa risposta?

Grazie per il feedback, ci aiuta a migliorare il sito.

Quanto sei soddisfatto di questa risposta?

Grazie per il tuo feedback.

Ciao Massimo,
per il primo problema, l'unica cosa che mi viene in mente è di eliminare la sottomaschera ed usare 2 bottoni uno per aggiungerlo alla selezione e uno per toglierlo, che vanno ad impostare il flag sulla tabella di appoggio con una query di comando.

Per il secondo problema, puoi risolverlo anch'esso con una query di comando, tieni presente che nella proprietà Filter della maschera hai sempre la condizione di filtro correntemente attiva per cui con una query del tipo
"Update TabellaAppoggio set flagStampa = True Where ID IN (Select ID From TabellaPrincipale  Where " & Me.filter
dovresti più o meno risolvere


Cinzia


Sito RIO
Il mio Blog
Cinzia Pagani
http://www.riolab.org/
http://accessdaziacin.wordpress.com/

La risposta è risultata utile?

Siamo spiacenti che questo non sia stato utile.

Ottimo. Grazie per il tuo feedback.

Quanto sei soddisfatto di questa risposta?

Grazie per il feedback, ci aiuta a migliorare il sito.

Quanto sei soddisfatto di questa risposta?

Grazie per il tuo feedback.

Ciao Cinzia,

infatti per alcuni filtri posso sfruttare il Me.Filter, il probema mi rimane con le query SQL dove agisco sul Recordsource della maschera, sto smanettando con il RecordsetClone ma non ne vengo a capo.

Dici che se inserisco:

"Update TabellaAppoggio set flagStampa = True Where ID IN (Select ID From TabellaPrincipale  Where " & Me.RecordsetClone

funziona?

Massimo.

La risposta è risultata utile?

Siamo spiacenti che questo non sia stato utile.

Ottimo. Grazie per il tuo feedback.

Quanto sei soddisfatto di questa risposta?

Grazie per il feedback, ci aiuta a migliorare il sito.

Quanto sei soddisfatto di questa risposta?

Grazie per il tuo feedback.

Ciao Massimo,
no non funziona con il recordsetclone,  dovresti forse usare qualcosa tipo:

 "Update TabellaAppoggio set flagStampa = True Where ID IN (Select ID From (" & me.recordSource & "))"  
oppure, se così non funziona, dovresti ricavare dal recordsource tutto quello che c'è a destra della Parola FROM costruendo una query di comando del tipo:
"Update TabellaAppoggio set flagStampa = True Where ID IN (Select ID From  " & GetRightFromRS(me.recordSource) & " )"  

Facci sapere!

 


Cinzia


Sito RIO
Il mio Blog
Cinzia Pagani
http://www.riolab.org/
http://accessdaziacin.wordpress.com/

La risposta è risultata utile?

Siamo spiacenti che questo non sia stato utile.

Ottimo. Grazie per il tuo feedback.

Quanto sei soddisfatto di questa risposta?

Grazie per il feedback, ci aiuta a migliorare il sito.

Quanto sei soddisfatto di questa risposta?

Grazie per il tuo feedback.

Dunque, ho risolto nel seguente modo:

ho creato una checkbox “chkSetSelezione” di opzione sulla maschera con la quale gli utenti hanno la possibilità di permettere la selezione o meno dei records filtrati, in pratica se spuntata i vari filtri imposteranno anche il frag di stampa nell’altra apposita checkbox “chkSelezione”. Il codice l’ho dovuto aggiungere ad ogni filtro, in pratica se chkSetSelezione = -1 il filtro imposta (con il codice da Cinzia suggerito per quelli classici o con un UPDATE da SQL)  anche un -1 sull’altra checkbox “chkSelezione”.

La checkbox “chkSelezione” appartiene alla stessa tabella perchè con una sottomaschera venivano fuori troppi problemi. Quindi per, diciamo, localizzare le selezioni, ho creato una nuova colonna nella tabella principale ed ho assegnato il ControlSource della checkbox a questa colonna. La colonna ha il nome di rete dell’utente che tiro fuori tramite apposita Function. Verifico che non sia già presente questo nuovo campo e se non lo è lo creo con codice tipo:

Tabella = "SELECT * FROM SYSCOLUMNS " _
            & "WHERE ID=OBJECT_ID('tblDocs') AND NAME = '" & Utente & "'" & ";"
           
e di seguito assegno il ControlSource al nome Utente. Insomma un bel lavoretto però ne è valsa la pena perchè adesso sono tutti felici e contenti.

Grazie dei consigli, ciao.

Massimo.

La risposta è risultata utile?

Siamo spiacenti che questo non sia stato utile.

Ottimo. Grazie per il tuo feedback.

Quanto sei soddisfatto di questa risposta?

Grazie per il feedback, ci aiuta a migliorare il sito.

Quanto sei soddisfatto di questa risposta?

Grazie per il tuo feedback.

 
 

Informazioni domanda


Ultimo aggiornamento 6 ottobre 2021 Visualizzazioni 1.568 Si applica a: