Query aggiornamento in base ai filtri della maschera

di il
16 risposte

Query aggiornamento in base ai filtri della maschera

Buonasera,
non sono un programmatore ma smanettando ho messo in piedi alcuni db access anche abbastanza complessi senza però trovare mai una soluzione a questo problema.
Cerco di spiegarlo meglio: ho una maschera/foglio dati con una serie di record ai quali devo aggiornare un determinato campo.
I record hanno un campo Vero/Falso che utilizzo come flag per selezionare quelli desiderati.
La query di aggiornamento aggiorna solo quelli con flag Vero.

Operativamente quello che faccio è aprire la maschera, impostare i filtri sui vari campi a seconda dei raggruppamenti che mi servono e spuntarmi a mano tutte le righe dei record rimasti.

Dato che possono essere anche alcune decine è possibile impostare una query che effettui l'aggiornamento solamente dei record filtrati? Sono mesi che cerco una soluzione ma ancora non ho trovato il modo di ribaltare automaticamente i filtri impostati nella maschera, sulla query.

Vi ringrazio in anticipo.

16 Risposte

  • Re: Query aggiornamento in base ai filtri della maschera

    Hai provato a leggere la proprietà FILTER una volta ristretti i records a quelli da usare e sfruttarla come WHERE CONDITION in una query...?

    Secondo me non ti serve nemmeno il flash a questo punto...
  • Re: Query aggiornamento in base ai filtri della maschera

    Anche per me non ha senso usare i flag manualmente. Non puoi impostare una normale query di aggiornamento con i criteri che tu "sai a monte"?
  • Re: Query aggiornamento in base ai filtri della maschera

    @Alex ha scritto:


    Secondo me non ti serve nemmeno il flash a questo punto...
    Senza flash ?...in luce ambiente?
    con il mio Canon 85mm f 1,2 e una 3200 ISO BN "tirata" a 6400 ... a teatro, uscivano capolavori
    Hai riacceso i miei ricordi, pensa ho smesso di fotografare quando tutto è diventato facile
  • Re: Query aggiornamento in base ai filtri della maschera

    Gianni55 ha scritto:


    @Alex ha scritto:


    Secondo me non ti serve nemmeno il flash a questo punto...
    Senza flash ?...in luce ambiente?
    con il mio Canon 85mm f 1,2 e una 3200 ISO BN "tirata" a 6400 ... a teatro, uscivano capolavori
    Hai riacceso i miei ricordi, pensa ho smesso di fotografare quando tutto è diventato facile
    Ahahaha il correttore mi ha fregato... era FLAG.

    Attenzione che sono appassionato di foto pure io, mi hanno anche pubblicato qualche foto sulle riviste di un viaggio in Nepal fine anni 90... ma di paesaggjo e annovero una ormai obsoleta canon Eos1 con un 28÷70 f/2.8 e 70÷200 f/2.8 ed un 50 f/1.2
    Ovviamente KodackChrome 64 o Fuji Velvia50.
    Qualche esperienza con infrared ma poco interessante.
    Quando facevo B&W 30 anni fa sviluppavo e stampavo...

    Non sono più passato al digitale però ed ho smesso di fare foto... mi piaceva veramente molto.
  • Re: Query aggiornamento in base ai filtri della maschera

    Grazie per le risposte e.... campioni d'Europa

    @Alex ha scritto:


    Hai provato a leggere la proprietà FILTER una volta ristretti i records a quelli da usare e sfruttarla come WHERE CONDITION in una query...?

    Secondo me non ti serve nemmeno il flash a questo punto...
    E' proprio quello che non riesco a fare, ho cercato ma non riesco a trovare un comando per usare WHERE in base a dei filtri...

    OsvaldoLaviosa ha scritto:


    Anche per me non ha senso usare i flag manualmente. Non puoi impostare una normale query di aggiornamento con i criteri che tu "sai a monte"?
    Avevo pensato di filtrare i vari campi in base alla maschera ma ho alcune situazioni in cui alcuni campi vengano filtrati avendo un dato univoco, altre invece in cui i campi hanno valori diversi tra i vari record e in quel caso non me li prenderebbe.
  • Re: Query aggiornamento in base ai filtri della maschera

    In che senso non riesci ad usare la WHERE....?

    Partiamo un passo per volta.
    1) Visualizzazione DataSheet, quindi immagino usi i Filtri Nativi in Testata...? (Ipotizzo SI)
    2) Applicati i criteri che ritieni anche 10... verifica il criterio che si è venuto a creare... puoi stamparlo in un MsgBox o in Finestra Immediata se lo ritieni più comodo(io si), ad esempio così
    
    Option Compare Database
    Option Explicit
    
    Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer)
        Debug.Print Me.Filter
    End Sub
    Fatto questo, vedrai che ad ogni aggiunta di criteri nella finestra immediata che visualizzi da VBE(con CTRL+G), ti si visualizzano i passaggi ed otterrai come ultimo la STRINGA COMPLETA del criterio.

    Questo è esattamente la WHERE CONDITION che puoi usare in qualsiasi Query, ma come ti dicevo non servirà più il FLAG, basterà recuperare quel criterio se vuoi Stampare o fare quello che vuoi...!
    Esempio, se vuoi Cancellare tutti i Records selezionati...[CODE] Dim strSQL As String strSQL="DELETE * FROM T1 WHERE " & Forms!NomeForm.Filter DbEngine(0)(0).EXECUTE strSQL Se invece vuoi modificare il predicato SQL di una query presente... ipotizzando la Query sia [Query1]
    
    Dim strSQL	As String
    strSQL="SELECT * FROM T1 WHERE " & Forms!NomeForm.Filter
    DbEngine(0)(0).QueryDefs("Query1").SQL=strSQL
    Da quì in poi ovviamente, dipende da quello che devi fare e che autonomia hai per realizzarlo...
  • Re: Query aggiornamento in base ai filtri della maschera

    @Alex ha scritto:


    In che senso non riesci ad usare la WHERE....?

    Partiamo un passo per volta.
    1) Visualizzazione DataSheet, quindi immagino usi i Filtri Nativi in Testata...? (Ipotizzo SI)
    2) Applicati i criteri che ritieni anche 10... verifica il criterio che si è venuto a creare... puoi stamparlo in un MsgBox o in Finestra Immediata se lo ritieni più comodo(io si), ad esempio così
    
    Option Compare Database
    Option Explicit
    
    Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer)
        Debug.Print Me.Filter
    End Sub
    Fatto questo, vedrai che ad ogni aggiunta di criteri nella finestra immediata che visualizzi da VBE(con CTRL+G), ti si visualizzano i passaggi ed otterrai come ultimo la STRINGA COMPLETA del criterio.

    Questo è esattamente la WHERE CONDITION che puoi usare in qualsiasi Query, ma come ti dicevo non servirà più il FLAG, basterà recuperare quel criterio se vuoi Stampare o fare quello che vuoi...!
    Esempio, se vuoi Cancellare tutti i Records selezionati...[CODE] Dim strSQL As String strSQL="DELETE * FROM T1 WHERE " & Forms!NomeForm.Filter DbEngine(0)(0).EXECUTE strSQL Se invece vuoi modificare il predicato SQL di una query presente... ipotizzando la Query sia [Query1]
    
    Dim strSQL	As String
    strSQL="SELECT * FROM T1 WHERE " & Forms!NomeForm.Filter
    DbEngine(0)(0).QueryDefs("Query1").SQL=strSQL
    Da quì in poi ovviamente, dipende da quello che devi fare e che autonomia hai per realizzarlo...
    Penso proprio sia la strada giusta, ti ringrazio tantissimo e mi scuso se ho bisogno di queste spiegazioni, il mio livello è veramente bassissimo.

    Ora sto provando (senza successo ) a inserire un comando di aggiornamento ma non funziona e c'è qualcosa che non mi torna...
    Ho provato a scrivere:
    [CODE] Dim strSQL As String strSQL = "UPDATE [T1] SET [T1].Campo_flag = True WHERE " & Forms!Nome_maschera.Filter DBEngine(0)(0).Execute strSQL End Sub Non riesco a capire dove sbaglio ma la mia ignoranza è tanta.
  • Re: Query aggiornamento in base ai filtri della maschera

    cicciput ha scritto:


    ....
    Non riesco a capire dove sbaglio ma la mia ignoranza è tanta.
    Purtroppo, un minimo di basi devi averle... più di quanto ti è stato indicato, temo si debba solo farti il lavoro...
  • Re: Query aggiornamento in base ai filtri della maschera

    Hai ragione, vi ringrazio ugualmente.
    In realtà penso che il problema sia che WHERE su Forms!Nome_maschera.Filter non vada bene.
    O meglio, mi va a cercare un campo nome_maschera.nome_campo che non trova, avrei bisogno di andare a richiamare tabella.nome_campo.

    Facendo la porcata di rinominare la maschera con lo stesso nome della tabella, più o meno funziona ma è appunto una porcata e non mi va di risolvere così.

    Cercherò altre ispirazioni in giro per il web su qualche comando che riesco a gestire meglio o.o
  • Re: Query aggiornamento in base ai filtri della maschera

    cicciput ha scritto:


    Hai ragione, vi ringrazio ugualmente.
    In realtà penso che il problema sia che WHERE su Forms!Nome_maschera.Filter non vada bene.
    O meglio, mi va a cercare un campo nome_maschera.nome_campo che non trova, avrei bisogno di andare a richiamare tabella.nome_campo.

    Facendo la porcata di rinominare la maschera con lo stesso nome della tabella, più o meno funziona ma è appunto una porcata e non mi va di risolvere così.

    Cercherò altre ispirazioni in giro per il web su qualche comando che riesco a gestire meglio o.o
    Ho inserito la sintassi Generica in quanto non ho compreso come ti muovi... quindi devi usare la sintassi e sostituirla con il Nome della tua maschera...!!!!

    Forms!Nome_maschera.Filter
  • Re: Query aggiornamento in base ai filtri della maschera

    @Alex ha scritto:


    cicciput ha scritto:


    Hai ragione, vi ringrazio ugualmente.
    In realtà penso che il problema sia che WHERE su Forms!Nome_maschera.Filter non vada bene.
    O meglio, mi va a cercare un campo nome_maschera.nome_campo che non trova, avrei bisogno di andare a richiamare tabella.nome_campo.

    Facendo la porcata di rinominare la maschera con lo stesso nome della tabella, più o meno funziona ma è appunto una porcata e non mi va di risolvere così.

    Cercherò altre ispirazioni in giro per il web su qualche comando che riesco a gestire meglio o.o
    Ho inserito la sintassi Generica in quanto non ho compreso come ti muovi... quindi devi usare la sintassi e sostituirla con il Nome della tua maschera...!!!!

    Forms!Nome_maschera.Filter
    Certo, fini lì ci ero arrivato... ignorante si ma non fino a questo punto

    Il problema è che il dopo il WHERE non riesce a trovarmi i campi restituiti da Forms!Nome_Maschera.filter (anche facendo una delete o una select) dato che sembrerebbe prendere il Nome_Maschera come se fosse quello della tabella.
    Per capirci, a fronte di una tabella "T1" e un campo "C1" (quindi T1.C1) l'istruzione mi va invece a cercare Nome_Maschera.C1 e non lo trova.

    E' sicuramente un problema risolvibile scrivendo il comando in un altro modo ma con le mie conoscenze (limitate) non trovo una soluzione.
  • Re: Query aggiornamento in base ai filtri della maschera

    cicciput ha scritto:


    Certo, fini lì ci ero arrivato... ignorante si ma non fino a questo punto
    Dal momento che oggettivamente non hai nessuna conoscenza che si ritiene BASE per usare Access... la cosa ovvia e semplice che viene da suggerirti, per provare ad aiutarti, è proprio di fare attenzione alle "banalità"... senza che tu ti senta offeso.
    Altrimenti potresti iniziare ad acquistare un Libro e provare a colmare le lacune, almeno quelle che consentono di instaurare uno scambio tecnico più "intelligente", poi ne possiamo parlare.
  • Re: Query aggiornamento in base ai filtri della maschera

    @Alex ha scritto:


    cicciput ha scritto:


    Certo, fini lì ci ero arrivato... ignorante si ma non fino a questo punto
    Dal momento che oggettivamente non hai nessuna conoscenza che si ritiene BASE per usare Access... la cosa ovvia che viene da suggerirti è proprio di fare attenzione alle "banalità"... senza che tu ti senta offeso, altrimenti potresti iniziare ad acquistare un Libro e provare a colmare le lacune almeno quelle che consentono anche uno scambio tecnico più "intelligente", poi ne possiamo parlare.
    Ci mancherebbe, non mi ero mica offeso ^^
    Cercherò di studiarmi qualcosa ma tra lavoro e famiglia tempo non ne rimane.
    Fino a oggi sono riuscito in qualche modo a fare sempre quello che mi serviva (a parte questo ) ma partendo dal lavoro di altri, cercando di capirlo e adattandolo alle mie esigenze ma non è nemmeno giusto avere sempre la pappa semi-pronta.

    Questa volta ho ceduto alla tentazione di provare a chiedere a qualcuno dato che non ho trovato soluzione ma ci sbatterò ancora un pò la testa dato che anche in altri lidi non hanno trovato una soluzione efficacie.
  • Re: Query aggiornamento in base ai filtri della maschera

    cicciput ha scritto:


    ...
    Questa volta ho ceduto alla tentazione di provare a chiedere a qualcuno dato che non ho trovato soluzione ma ci sbatterò ancora un pò la testa dato che anche in altri lidi non hanno trovato una soluzione efficacie.
    La soluzione che ti ho proposto è estremamente banale e funzionate, a saperla adattare alla realtà di lavoro cosa che purtroppo solo tu puoi fare, ma ti mancano troppi pezzi...

    P.S. sorvoliamo sulla questione del CrossPost...!
    Buon lavoro.
Devi accedere o registrarti per scrivere nel forum
16 risposte