Casella combinata su query

di il
6 risposte

Casella combinata su query

Buonasera a tutti,
ho una casella combinata basata su una query UNION che uso per filtrare i dati in una maschera e funziona perfettamente; la stessa tipologia di casella combinata l'ho creata anche su altre maschere ma in alcuni casi i risultati derivati dalla query non sono quelli attesi!
Mi spiego meglio, la query union è così composta
SELECT tabella.campo, tabella.campo AS Filtro
FROM tabella
UNION SELECT "<Tutti>", "*" AS Filtro
FROM tabella
ORDER BY campo
Ora in alcuni casi il nome "Tutti" che attribuisco per unire tutti i record non viene mostrato nei risultati della query e viene sostituito da "*"!
Mi sfugge qualcosa?
Grazie

6 Risposte

  • Re: Casella combinata su query

    Se non devi filtrare... perché filtri con la wildcard...?
    Togli il filtro... è meglio.

    In ogni caso verifica il tipo di campo... se è sempre uguale... testo o numero
  • Re: Casella combinata su query

    Mi serve filtrare i record ma ho bisogno anche, all'occorrenza, di vederli tutti.
    I campi sono sempre testo
    La cosa che mi lascia perplesso è perchè il record di unione non mi viene valorizzato con la parola "tutti"; in alcuni casi funziona, in altri no eppure la sintassi è la stessa!
  • Re: Casella combinata su query

    Mi stavo dimenticando di dire che comunque la casella funziona perfettamente, è solo il fastidio di vedere "*" anzichè "Tutti"
  • Re: Casella combinata su query

    Se vuoi vedere TUTTI... equivale a non avere alcun filtro.
    Invece inserendo * anche se li vedi tutti introduci un criterio WHERE che non ottimizza l'esecuzione della queey.
    Quindi basterebbe non inserire alcun WHERE... ma fai come credi.

    Vedi * quando c'è difformità tra il campo vero rispetto al campo testo 'Tutti... oppure quando la combo ha un numero di colonne inferiore, nel tuo caso devono essere almeno 2 colonne.
  • Re: Casella combinata su query

    Mi riferivo a questo:
    "Usare una query di unione per filtrare i record in una maschera con un controllo casella combinata"
  • Re: Casella combinata su query

    Per chiarezza... prendo a spunto quanto hai scritto che ovviamente lascia margini di ERRORE, e che pertanto modifico per chiarezza differenziando i 2 Campi della Tabella originale
    
    SELECT tabella.campo1, tabella.campo2 AS Filtro
    FROM tabella
    UNION SELECT "<Tutti>", "*" AS Filtro
    FROM tabella
    ORDER BY campo
    Se Campo1 è un ID numerico... non può funzionare quello che hai fatto... ovvero non puoi aggiungere "<Tutti>" in corrispondenza di un campo Long...!
    Dovresti sostituire il tuo predicato così:
    
    SELECT  0 As IDArticolo, "<Tutti>" As DescrArticolo
    FROM tbArticoli
    UNION SELECT tbArticoli.IDArticolo, tbArticoli.DescrArticolo
    FROM tbArticoli;
    Poi nel criterio della Query
    
    Like IIF([Forms]![NomeMachera]![NomeCombo]=0; "*"; [Forms]![NomeMachera]![NomeCombo])
    Detto questo, io non userei mai questo sistema se non con SOLO 1 Criterio, se i criteri fossero N l'efficienza della Query sarebbe assurda, non solo, nel caso di utilizzo di un RDBMS, non sarebbe Risolvibile lato Server, obbligando il Server a restituire l'intero recordset di dati per affinare poi l'elaborazione del criterio in LOCALE, e questo è assolutamente il modo ERRATO di come si sviluppa.
Devi accedere o registrarti per scrivere nel forum
6 risposte