Newsgroup: it.comp.lang.visual-basic
Titolo: Query Parametrica

Come si scrive una query parametrica a cui si passano due parametri?
Esempio
Dim db As DataBase
Dim strSQL As String
Dim rs As Recordset
Dim intA As Integer
Dim strB As String
intA=Txt1.Text
strB=Txt2.Text
strSQL(SELECT * FROM MiaTabella WHERE Campo1 = & " intA" & AND Campo2=
&"strB" &)
set db=CurrentDb
set rs=db.Openrecordset(strSQL)
Giuseppe

 &"strB" &)
Questa non mi pare, in termini tecnici, una query "parametrica"..., ma
semplicemente la composizione di un comando SQL in stringa, con variabili
Ragiona su questa sintassi:
strSQL = "SELECT * FROM MiaTabella WHERE Campo1 = " & intA & " AND Campo2='"
& strB & "'"
Noterai che il valore del campo numerico è passato come tale (per
conversione implicita ne verrà "tradotto in stringa" il suo valore), mentre
il valore del campo stringa viene racchiuso fra apici singoli

 Come si scrive una query parametrica a cui si passano due parametri?
Di che database stai parlando? Access?? ... Sql Server ??
Oracle??? ...
Abracadraba ... magicabula .... pia li sfera e vedi il nula <-(versione
tarocchesca del null)
-- 
Saluti
Andrea Moro
Sito Comune : 
http://www.it-lang-vb.net

 ha scritto nel messaggio
news:b96fdf$g3f5p$1...@ID-174464.news.dfncis.de...

Prima di tutto grazie per la spiegazione.Mi sembrava di aver capito che le
qry parametriche fossero quelle
a cui si passano i valori di ricerca a run time.Quindi mi chiedo cosa si
intende per query paramatrica?
Giuseppe


Mi sembrava chiaro che fosse access dalla dichiarazione delle varibili.;)
Dim db As DataBase
Dim rs As Recordset
Faccio cmq ammenda Merlino ;)
Giuseppe

 intende per query paramatrica?
Direi quella che ... utilizza l'oggetto/insieme Parameter.
No, non lo uso.

 Dim rs As Recordset
Più che Access (queste dichiarazioni non sono sufficienti per affermarlo), è
DAO.
Ovvio che le probabilità che sia Access sono ... molto alte. ;-)

 Giuseppe
Nella mia ignoranza in access ...
questa è una query parametrica :
PARAMETERS Pippo int;
SELECT * FROM Clienti WHERE Codice = Pippo;
ora non mi ricordo se ci va il ";" e se la sintassi è giusta , ma so di
certo che se crei una query in access (e la salvi come query appunto) poi la
esegui, ti viene richiesta con una inputbox il valore del parametro Pippo.
In DAO se non sbaglio dovresti fare una specie di Execute (o OpenQuery
magari con la libreria Access) e dopo il nome della query passargli il
valore dei parametri (separati da una virgola).
In ADO immagino che si possano utilizzara gli oggetti Command e Parameters.
Il vantaggio (rispetto a quello del codice interpretato al volo) sta appunto
nella possibilità di evitare la fase di parsing del dialetto SQL (comunque
ben lontano dal concetto di StoredProcedure di SQLServer).
Per query complicate forse ne vale la pena, ma per l'esempio che ti ho fatto
io di certo no.
Saluti

 SELECT * FROM Clienti WHERE Codice = Pippo;
 E questo è come si usa da VB
 Dim wrk As DAO.Workspace
 Dim db As DAO.Database
 Dim rst As DAO.Recordset
 Dim qdf As QueryDef
 Set wrk = CreateWorkspace("", "Admin", "", dbUseJet)
 Set db = wrk.OpenDatabase("Percorso e nome del DB.mdb")
 Set qdf = db.QueryDefs("nome della tua query")
 qdf.Parameters("Pippo") = 1234 '* Numero inventato
 set rst = qdf.OpenRecordset()
 rst.MoveLast
 MsgBox "Trovati " & rst.RecordCount & " record."
 Set rst = Nothing
 Set qdf = Nothing
 Set db = Nothing
 Set wrk = Nothing
Ciao
--------------------------------
Inviato via 
http://usenet.libero.it

  rst.MoveLast
Quasi più facile di ADO ...
saluti

 Saluti
Susa l'ignoranza ma visto che ci siamo cosa è la fase di parsing del
dialetto SQL?
Giuseppe

 wrote in message
news:wpPta.50131$3M4.1...@news1.tin.it...

E' la verifica sintattica e logica dell'istruzione SQL (nel suo dialetto)
...
è la prima operazione che viene eseguita dal motore db tra le fasi di
esecuzione della query.
Una query salvata nel db access non deve attraversare il parser per essere
eseguita (o almeno non completamente) in quanto l'operazione viene eseguita
durante il salvataggio della query stessa (o forse alla prima esecuzione).
ti assicuro che non è poca cosa
Saluti

Permettetemi di essere pignolo ... quelle variabili le uso anche
io per oggetti ado ... tanto su access, che su msde, che su sql server
che su oracle ... sono banali variabili oggetto ... e una semplice
query sql che da come è fatta è digeribile da tutti gli rdbms menzionati.


Giusto as database ... è dao ma per il resto ...


 Giusto as database ... è dao ma per il resto ...
Direi che è solo DA, comunque, non ADO.

 Direi che è solo DA, comunque, non ADO.
Non l'ho capita ...


 Non l'ho capita ...
Solo perchè mancava una O? ;-)
Fermandoci a DAO e ADO, un oggetto dichiarato "As DATABASE" non può essere
che di DAO perchè ADO non ha tale "tipologia" (il "corrispondente" più
vicino può essere Connection). Di conseguenza (pur potendo DAO
interfacciarsi anche con vari tipi di database) la probabilità che si tratti
di Access è alta.