Newsgroup: it.comp.appl.access
Titolo: Criterio OR

Ciao a tutti, ho un problema di questo tipo, devo inserire in una query
un criterio di tipo Or usanto un Imput Box , ho messo nel campo
da usare come filtro la seguente Funzione ;
Public Function Scegli_Reparto() As Variant
Dim id As Integer, Msg As String
Msg = "Seleziona Nr° per criterio estrazione ; " & vbNewLine & _
          " 1 [Linea Tel]" & vbNewLine & _
          " 2 [Linee Coppelle]" & vbNewLine & _
          " 3 [Linee Velo]" & vbNewLine & _
          " 4 [Linea Confezione]" & vbNewLine & _
          " 5 [Spedizioni]"
id = CInt(InputBox(Msg))
Select Case id
Case Is = 1
Choose_Reparto = 1
Case Is = 2
Choose_Reparto = 2 Or 3
Case Is = 3
Choose_Reparto = 4 Or 5
Case Is = 4
Choose_Reparto = 17
Case Is = 5
Choose_Reparto = 7
Case Else
Exit Function
End Select
End Function
il problema nasce quando la scelta ricade sul reparto 2 o il reparto 3,
dove viene preso solo il valore superiore(  3 o 5 ).
Qualcuno mi puo gentilmente dire dove sbaglio ??
Grazie e Ciao Marco
il sito comune di it.comp.appl.access:
http://members.xoom.it/it_db_access/

 dove viene preso solo il valore superiore(  3 o 5 ).
2 or 3 e' un'operazione logica fra bit e fra questi due numeri di da' 
proprio 3.
Non puoi assegnare a una variabile un valore o un'altro (o e' 2 oppure e' 
3).
Ciao
-- 
JBad

 wrote in message
MPG.148c617be...@news.tin.it...


 
Rispondi dopo il quoting ! (vedi INFO di Federico Luciani)
Riguardo al tuo problema riassumo per vedere se ho capito bene:
hai una query sulla quale vuoi fare dei filtri selezionando dei valori da 
una casella combinata che pero' non sono i valori da filtrare, ma devono 
essere convertiti in criteri da passare alla query.
Possibile soluzione:
Potresti inserire un campo calcolato nella query che faccia la 
conversione inversa a quella che serve a te:
Public Function Reparto2Criterio(Rep as integer) As integer
select case rep
	case 1: reparto2criterio = 1
	case 2: reparto2criterio = 3
	case 3: reparto2criterio = 3
	ecc...
End Select
function end
Questa funzione converte il reparto che hai nella query nel criterio 
corrispondente, con il vantaggio che puoi assegnare a piu' reparti lo 
stesso criterio (naturalmente non puoi assegnare a un reparto piu' di un 
criterio).
Se inserisci questa funzione nella tua query (es. Criterio: 
reparto2criterio([Reparto]) )puoi fare i filtri che ti servono senza fare 
ulteriori conversioni utilizzando il campo calcolato [Criterio].
Spero di essere stato chiaro.
Ciao
-- 
JBad

 wrote in message
MPG.148c809ed...@news.tin.it...

Chiaro si, ma non mi risolvi il problema, lo stesso Reparto
puo avere 2 criteri (come da Funzione che ho postato)
4 o 5 per il reparto 3, 2 o 3 per il reparto 2.
Grazie lo stesso,
Ciao Marco

 Ciao Marco
A me sembra il contrario:
Select Case id
Case Is = 1
Choose_Reparto = 1
Case Is = 2
Choose_Reparto = 2 Or 3
Case Is = 3
Choose_Reparto = 4 Or 5
Case Is = 4
Choose_Reparto = 17
Case Is = 5
Choose_Reparto = 7
Case Else
Exit Function
End Select
quindi
Criterio 1 => Reparto 1
Criterio 2 => Reparto 2
Criterio 2 => Reparto 3
Criterio 3 => Reparto 4
Criterio 3 => Reparto 5
Criterio 4 => Reparto 17
Criterio 5 => Reparto 7
UN reparto appartiene a UN SOLO criterio (a UN criterio possono 
appartenere PIU' reparti).
E' una relazione uno (criterio) a molti (reparti)
La funzione che ho postato serve per tradurre dal reparto al criterio (da 
molti a uno) e quindi e' univoca, mentre il metodo che utilizzi tu tenta 
di convertire da criterio a reparto (uno a molti) e quindi per ogni 
valore in ingresso puoi avere piu' valori in uscita.
Se la relazione che hai fra criteri e reparti e' molti a molti devi 
prevedere una tabella di decodifica intermedia (fai una ricerca sul 
newsgroup sulle relazioni molti a molti).
Ciao
-- 
JBad

 wrote in message
MPG.148c979f9...@news.tin.it...

Comunque non va, prende solo il primo valore..
Ciao Marco

 Ciao Marco
Scusa eh?
Ma in un campo o variabile o quello che sia puoi memorizzare SOLO un valore
numerico, no tanti!!!
Se tu vuoi associare a qualcosa più di un valore o (se siamo nel caso di un
record) duplichi il record mantenendo il riferimento a quel qualcosa e
cambiando il valore nel campo valore, oppure usi qualche sporco trucco tipo
memorizzare una stringa con separatori (es. 2;3) e quando devi analizzare
il/i valori usi una funzioncina che verifica se c'è più di un valore e ti
restituisce tutto...
Antonio

, 
preti...@tiscalinet.it
 says...
Mi sa che non ci siamo capiti...
Riposta le modifiche che hai fatto cosi' ti dico dove hai sbagliato.
Ciao
-- 
JBad

 wrote in message
mbJU5.5490$CH3.2...@news.infostrada.it...

Hai ragione, pensavo a torto che l'operatore Or potesse discriminare
i valori..
niente proverò in un altro modo
grazie e Ciao
Marco