Newsgroup: it.comp.appl.access
Titolo: sql, parametri where da function

vorrei ottenere una sql così 
SELECT tabella_autorizzazioni.Matricola,
tabella_autorizzazioni.Matricola_vera
FROM tabella_autorizzazioni
WHERE (((tabella_autorizzazioni.Matricola) In (22,33)));
 
ma in modo dinamico con valori presi da una function
 
cioè:
 
funzione:
Public Function valori_where_per_sql() As Variant
valori_where_per_sql = "In (22,33)"
End Function
 
sql dinamica
SELECT tabella_autorizzazioni.Matricola,
tabella_autorizzazioni.Matricola_vera
FROM tabella_autorizzazioni
WHERE (((tabella_autorizzazioni.Matricola)=valori_where_per_sql()));
 
ma praticamente non mi restituisce nulla perchè interpreta la risposta
della funcion come come stringa
 
esiste una soluzione?
 
ciao a tutti e buona giornata
 
-- 
 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it
 
 
 

 ciao a tutti e buona giornata
 
scusate ma mi sono accorto di dov'è l'errore, è qui:
WHERE (((tabella_autorizzazioni.Matricola)=valori_where_per_sql()))
 
praticamente mi scrive questo
WHERE (((tabella_autorizzazioni.Matricola)=In (22,33)))
 
quindi è il segno di = (uguale) che dovrei riuscire a togliere...
 
ma come si fa? :-(


On Thu, 06 Oct 2011 09:59:27 +0200, 
news...@gmail.com
 (newsmino)
wrote:

 Dim sql As String
 sql = "SELECT Matricola, Matricola_vera FROM tabella_autorizzazioni
WHERE Matricola" & valori_where_per_sql()
    Debug.Print sql

     Debug.Print sql
anzitutto grazie per la risposta
ma purtroppo non è così semplice
io questo valori_where_per_sql() lo devo inserire direttamente nella
"struttura della query e no nell' sql 
non so se riesco a farvi capire....


     Debug.Print sql
 
ho provato a mettere un campo così:
 
[numeroordine] In (valori_where_per_sql())
 
però se scrivo la function così:
cioè con la virgola tra i valori
Public Function valori_where_per_sql()
valori_where_per_sql = "22, 33"
'MsgBox valori_where_per_sql
End Function
 
la query mi restituisce errore nel campo
 
se scrivo la function così:
cioè con il punto e virgola
Public Function valori_where_per_sql()
valori_where_per_sql = "22; 33"
'MsgBox valori_where_per_sql
End Function
 
mi da errore lo stesso
 
ma come è possibile?


newsmino ha scritto:

RETTIFICO!!!!!!!!!
ho provato a mettere un campo così:
 
[numeroordine] In (valori_where_per_sql())
 
però se scrivo la function così:
cioè con la virgola tra i valori
Public Function valori_where_per_sql()
valori_where_per_sql = "22, 33"
'MsgBox valori_where_per_sql
End Function
 
la query mi restituisce sempre falso anche se il valore è presente nel
campo
 
se scrivo la function così:
cioè con il punto e virgola
Public Function valori_where_per_sql()
valori_where_per_sql = "22; 33"
'MsgBox valori_where_per_sql
End Function
 
mi da errore 
 


 ma come è possibile?
In tutti e trecento i post che hai scritto manca essenzialmente un punto 
importante: dove diavolo fai quella cosa che dici?
E' una query  salvata o e' dinamica?
Se e' un parametro di una query salvata la sostituzione non funziona 
punto. Per il sistema il parametro e' una stringa e *non* una lista di 
valori.
Se invece e' una query dinamica (i.e. via codice) allora sbagli qualcosa
 
x="select ..... bla bla ..... from qualchefontedati where campo in (" & 
stringavaloriseparatadavirgolaecongliapici(o doppi)alpuntogiusto & ")"
 
 
-- 
 
ac (x=y-1)

 stringavaloriseparatadavirgolaecongliapici(o doppi)alpuntogiusto & ")"
 
č in una query salvata ed ero quasi riuscito a giungere al risultato con
quello che ho scritto nel mio ultimo messaggio
 
quindi mi pare che bisogna ricreare ogni volta l'sql...
 
va bene farň cosě
 
ciao


 ...
 
http://groups.google.com/group/it.comp.appl.access/msg/21c2ca5e983faf4e
 
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 
 
 

 
http://groups.google.com/group/it.comp.appl.access/msg/21c2ca5e983faf4e
 
 
avevo già provato così ma mi da questo errore:
 
"espressione digitata non correttamente o troppo...." ecc ecc
 
la function è fatta così:
 
Public Function valori_where_per_sql()
 
valori_where_per_sql = "12530,12531"
 
End Function
 
e il campo è questo Eval([NumeroOrdine] & ' In(' & valori_where_per_sql()
& ')')
 
sbaglio qualcosa io sicuramente... ma dove?


 
http://groups.google.com/group/it.comp.appl.access/msg/21c2ca5e983faf4e
 
 
funziona perfettamente, sbagliavo io a mettere un parametro, 
 
grazie mille sei sempre risolutivo
