Newsgroup: it.comp.appl.access
Titolo: Query con criteri da funzione

Salve
Ho un problema che non riesco a risolvere. In una tabella Ordini ho un 
campo numerico Byte "Evaso" nel quale possono esserci 4 numeri diversi 
0=non evaso, 1=evaso, 3=parziale, 4=annullato. Devo selezionare i 
record in base allo stato di evasione che scelgo in una form mediante 
una casella combinata. Ho creato una query mettendo come criterio del 
campo Evaso il valore restituito dalla seguente funzione:
 
Function ParamQryCDC() As String
 
   Select Case Forms![Selezione stato]![ccbStato]
    Case "Evaso"
        ParamQryCDC = 1
    Case "Non evaso"
        ParamQryCDC = "0 Or 2"
    Case "Annullato"
        ParamQryCDC = 3
    Case "Tutti"
        ParamQryCDC = "0 Or 1 Or 2"
     End Select
 
End Function
 
Il probelma è che tutto funziona se la funzione mi retituisce un numero 
singolo (Es. Evaso =1), ma se la funzione mi restituisce una stringa 
come nel caso dei "Non evasi" (0 or 2) la query mi da errore di 
Espressione troppo complessa... Quacuno mi sa dare una dritta?
 
Grazie 1K per l'help
 


Fammi capire. Tu nel campo *evaso* che e' numerico  (byte) ci metti "0 
or 2" che e' una stringa? Oltretutto piu' lunga di 1 carattere?
Non ho capito inoltre perche' hai bisogno di questo UCAS.
Cbx con due colonne (che puoi nascondere) in cui la prima contiene il 
valore che vuoi su *eevaso* sembra troppo?
 
-- 
 
ac (x=y-1)

 
la stringa va nel criterio della query (non so se va bene il tipo 
stringa) per ottenere nel caso dei "Non evasi" sia i Non evasi (0) che 
i 
parzialmente evasi (2). Se nei criteri della query scrivo 0 Or 2 questa 
mi estrae correttamente i record mentre se il criterio glielo passo 
tramite la function (scrivendo: =ParamQryCDC()) nella cella criteri la 
query mi da errore.
 


L'errore è nella costruzione del criterio WHERE della query
 
WHERE Evaso=1 OR Evaso=2
 
Evaso = 1 OR 2 nn ti da il risultato che vuoi

 di Espressione troppo complessa... Quacuno mi sa dare una dritta?
 
Oltre alla sintassi sbagliata come gi� descritto da Fair c'� un altro
problema:
 
Non puoi mandare operatori (come OR) in questo modo perch�
per la query tutta l'espressione � solo una stringa.
 
Devi o cambiare la stringa/propriet� SQL della query con VBA
o usare il workaround che ho descritto in questa discussione:
http://groups.google.com/group/it.comp.appl.access/browse_frm/thread/38a2f2a09399d881/21c2ca5e983faf4e
 
 
 
-- 
Ciao
Karl
*********
Access FAQ: 
www.donkarl.com/it
 
 
 

 Devi o cambiare la stringa/proprietà SQL della query con VBA


 Espressione troppo complessa... Quacuno mi sa dare una dritta?
 
Ciao!
 
Nella query metti il criterio WHERE ParamQryCDC() LIKE '*' & [Evaso] & '*'
 
HTH
Popi

Il giorno martedì 29 maggio 2012 11:33:48 UTC+2, TDK ha scritto:
 
CUT & Maledizione alla fretta ... :)
 
Naturalmente la tua funzione dovrà ritornare valori diversi:
 
Function ParamQryCDC() As String
 
   Select Case Forms![Selezione stato]![ccbStato]
    Case "Evaso"
        ParamQryCDC = "1"
    Case "Non evaso"
        ParamQryCDC = "02"
    Case "Annullato"
        ParamQryCDC = "3"
    Case "Tutti"
        ParamQryCDC = "012"
     End Select
 
End Function
 
HTH
Popi