Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    5

    access, automatizzare diverse query

    Salve a tutti,
    avrei bisogno di un'informazione/aiuto con access, che uso molto sommariamente ma che già così mi semplifica molto del lavoro..
    Ho
    migliaia di record inseriti in un database da cui ho creato una query.
    Ho il campo data e alcuni campi con dei valori che possono essere
    presenti o assenti

    es:
    data a b c d
    1/01/2011 5 8 9 10
    5/01/2011 3 5 5
    6/02/2011 6 6

    come vedere i campi "a"-"d" possono contenere o no alcuni valori

    quello che mi interessa è contare tutte le combinazioni del tipo:

    "a" not null and "b" null and "c" not null
    oppure
    "a" not null and "b" not null and "c" not null
    e via dicendo

    quindi
    ogni volta modifico la query inserendo i criteri diversi, la eseguo, mi
    annoto i valori che poi riporto in una tabella excel.

    Il punto è
    che dopo aver fatto tutte le combinazioni per i campi "a"-"d" devo
    ripetere l'operazione filtrando diversi periodi di tempo

    >=01/01/2011 and <= 31/01/2011

    e via dicendo per ogni mese per 2 anni.

    Morale,
    devo modificare la query un certo n. d volte per avere tutte le
    combinazioni di "campi a-d completi" e poi ripetere tutte queste per
    diverse date...

    A mano impazzisco, mi chiedevo se ci fosse la
    possibilità di impartire delle istruzioni e dire ad access di
    concatenare diverse query che variano per certi criteri senza dover ogni
    volta a mano modificarli volta per volta...

    grazie mille

  2. #2
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,706
    Io farei via codice (io farei tutto via codice ). Per renderti conto, prepara una query delle tua e poi visualizza l'SQL (dal menù visualizza), vedi che una query è un'istruzione con parametri perciò, via codice la puoi costruire iterando e modificando ogni parametro e automatizzando fin che credi anche usando dei campi nella maschera come paramentri (es. date da utilizzare o combinazioni da valutare). Credo sia la soluzione più semplice e veloce, sempre se ho capito la tua richiesta
    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).

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    5
    Grazie, ok, visualizzo il codice sql però anche al suo interno ogni volta dovrei cambiare a mano i parametri ed eseguire ogni volta la query per conteggiare i record estratti (se non ho capito male)
    In realtà vorrei sapere se fosse possibile in una sola istruzione dire di estrarre i record secondo diverse combinazioni di criteri ed avere quindi un solo output con i conteggi di tutte le query interrogate.
    Colgo l'occasione per una domanda, nella visualizzazione del codice, è possibile accodare le istruzioni di 2 query diverse?
    Grazie mille

  4. #4
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,706
    Devi infatti utilizzare alcune righe di codice nelle quali prevedi tutte le varie possibilità anche di periodo e associare questo codice, esempio, ad un pulsante su una maschera. Al termine la routine restituisce tutti i records con tutte le combinazioni previste in dato periodo. Potresti anche usare una routine che analizzi la tabella senza far uso di query.
    No, l'sql è un'istruzione univoca che può prevedere parametri, ordinamenti, inner-join, ma sempre una rimane.
    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).

  5. #5
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Non sono convinto di avere capito tutto comunque:
    Data una tabella di nome "Tabe" con i campi:
    - Dat --- DataOra
    - aaa --- testo
    - bbb --- testo
    - ccc --- testo
    - ddd --- testo

    con questa query ottieni quasi quello che vuoi:
    ( ma se nei dati ti manca una combinazione NON restituisce zero bensi nulla )
    codice:
    SELECT 
    IIf(IsNull([aaa]),"_","x") & IIf(IsNull([bbb]),"_","x") & IIf(IsNull([ccc]),"_","x") & IIf(IsNull([ddd]),"_","x") AS Resx, 
    Count(IIf(IsNull([aaa]),"_","x") & IIf(IsNull([bbb]),"_","x") & IIf(IsNull([ccc]),"_","x") & IIf(IsNull([ddd]),"_","x")) AS Conx
    FROM 
    Tabe
    WHERE 
    (((Tabe.Dat)>[Dal] And (Tabe.Dat)<[Al]))
    GROUP BY 
    IIf(IsNull([aaa]),"_","x") & IIf(IsNull([bbb]),"_","x") & IIf(IsNull([ccc]),"_","x") & IIf(IsNull([ddd]),"_","x")
    ;

    Colgo l'occasione per una domanda, nella visualizzazione del codice, è possibile accodare le istruzioni di 2 query diverse?
    questo è possibile solo con Query costruite con VBA, ma vediamo prima come va la query sopra !!!
    Ultima modifica di nman; 13-03-2014 a 14:11

  6. #6
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,706
    Esempio, adatta e associa questo codice ad un pulsante:
    codice:
    Public Function Analisi()
    ' variabili con risultati
    Dim nulla, nullb, nullc as Integer
    nulla = DCount ("[uncampovalidodituatabella]", "tuatabella", "IsNull([a])")
    nullb = DCount ("[uncampovalidodituatabella]", "tuatabella", "IsNull([b])")
    nullc = DCount ("[uncampovalidodituatabella]", "tuatabella", "IsNull([c])")
    End Function
    ottieni nelle variabili quello che cerchi oppure non ho capito io?
    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).

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.