Recorset di una query

lunedì 06 novembre 2006 - 09.25

Emilia Profilo | Newbie

Salve ragazzi, vorrei sapere come prelevare un dato tramite un Recordset di una query.
In pratica io ho già utilizzato i Recordset su tabelle.
Dalle guide che ho letto in merito ai Recordset di una query sembra che la gestione sia la stessa dei Recordet delle tabelle, quindi ho adattato quello che avevo usato per le tabelle alla query :


Dim rs As Recordset

Set rs = CurrentDb.OpenRecordset("QueryAssociaCodice")
rs.MoveFirst
CodiceAutomezzo = rs("[Codice Automezzo]")

Ma mi segnale l'errore: Parametri insufficienti, previsti 1.
A questo punto ho provato ad aggiungere il parametro DbOpenTable:


Dim rs As Recordset

Set rs = CurrentDb.OpenRecordset("QueryAssociaCodice", dbOpenTable)
rs.MoveFirst
CodiceAutomezzo = rs("[Codice Automezzo]")

ma mi segnala l'errore : Operazione non valida.

In cosa sbaglio?

lbenaglia Profilo | Guru

> Dim rs As Recordset
>
> Set rs = CurrentDb.OpenRecordset("QueryAssociaCodice")
> rs.MoveFirst
> CodiceAutomezzo = rs("[Codice Automezzo]")
>
>Ma mi segnale l'errore: Parametri insufficienti, previsti 1.

Ciao Emilia,

per caso la query è parametrica?
Se non lo è significa che il nome della colonna che vai a specificare non è corretto.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Emilia Profilo | Newbie

La query prende come parametri un NumeroTelepass passato dalla maschera e restituisce un CodiceAutomezzo.
Il campo della query che contiene il Codice si chiama proprio Codice Automezzo, quindi non credo che abbia sbagliato il nome della colonna.

lbenaglia Profilo | Guru

>La query prende come parametri un NumeroTelepass passato dalla
>maschera e restituisce un CodiceAutomezzo.
Dato che la query necessita di un parametro di input dovrai specificarlo prima di eseguirla.
Utilizza la collection Parameters dell'oggetto QueryDef come riportato nel seguente esempio:
http://www.developerfusion.co.uk/show/111/

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Emilia Profilo | Newbie

Ciao Lorenzo,
l’esempio che mi hai proposto ho cercato di adattarlo alle mie esigenze e ne è uscito fuori il seguente codice:

Dim rst As Recordset
Dim query As QueryDef

Set query = CurrentDb.QueryDefs("QueryAssociaCodice")
QueryAssociaCodice è una query già esitente nel mio Database che per filtrare ha bisogno di prendere in input il Numero di Via-Card che inserisco nella maschera.

query.Parameters("[NumeroViaCard]") = ViaCard
ViaCard è il campo presente nella maschera, quindi proprio quello che la query dovrà ricevere in input.

Set rst = query.OpenRecordset()
rst.MoveFirst
CodiceAutomezzo = rst("[Codice Automezzo]")

Questo codice mi genera l'errore : Elemento non trovato in questo insieme!

lbenaglia Profilo | Guru

> query.Parameters("[NumeroViaCard]") = ViaCard
>ViaCard è il campo presente nella maschera, quindi proprio quello
>che la query dovrà ricevere in input.
>
> Set rst = query.OpenRecordset()
> rst.MoveFirst
> CodiceAutomezzo = rst("[Codice Automezzo]")
>
>Questo codice mi genera l'errore : Elemento non trovato in questo
>insieme!

L'errore dove si verifica? Quando valorizzi il parametro della query oppure quando leggi il valore della colonna del recordset?
Hai provato a rimuovere quelle parentesi quadre?
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Emilia Profilo | Newbie

Si ho provato ma mi da lo stesso errore.
Tieni presente che il codice sul furum è come realmente l'ho scritto.
Non vorrei che ci manchi qualche altro pezzo (non so, magari inerente la creazione del database o del workset, anche se credo che mettendo CurrentDb dovrebbe già includere entrambi e poi l'errore non mi sembra inerente a quello).

lbenaglia Profilo | Guru

>Si ho provato ma mi da lo stesso errore.
L'errore dove si verifica? Quando valorizzi il parametro della query oppure quando leggi il valore della colonna del recordset?

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Emilia Profilo | Newbie

Visto che mi da come errore : Elemento non trovato in questo insieme!, penso che l'errore si verifichi quando leggo il valore nella colonna del Recorset .

lbenaglia Profilo | Guru

>Visto che mi da come errore : Elemento non trovato in questo
>insieme!, penso che l'errore si verifichi quando leggo il valore
>nella colonna del Recorset .

Pensi?! Non puoi debuggare il tuo codice eseguendo passo passo ogni singola riga in modo da vedere dove si scatena l'eccezione?
Se hai ancora problemi, allega in un nuovo post un mdb di esempio (compresso in un fle zip) che contenga le tabelle base, la query ed un modulo con il codice che hai scritto in modo da individuare insieme l'errore.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Emilia Profilo | Newbie

Ho risolto diversamente, ho scoperto che la query è possibile effettuarla direttamente sulla maschera e quindi non ho avuto bisogno del Recordset perchè il campo l'ho direttamente collegato alla query in modo che il risultato mi comparisse nella casella di testo.:)
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5