Newsgroup: it.comp.appl.access
Titolo: Recordset e Query

Ho questo problema:
Ho una tabella (Tabella1) così strutturata:
Id1                    Contatore e chiave primaria
Campo1            Testo
Campo2            Testo
Ho un seconda tabella (Tabella2) così strutturata:
Id2                    Contatore e chiave primaria
Id1                    Numerico
Campo3            Testo
Campo4             Testo
Ho infine una query (Query1) che contiene tutti i campi di Tabella2
Ho creato una maschera (Maschera1) che ha come origine record Tabella1 e
contiene anche un pulsante di comando; su clic del pulsante di comando ho
necessità di aprire Query1 come recordset e pertanto ho scritto il seguente
codice VBA:
Dim dbMio As Database
Dim rstMio As Recordset
Set dbMio = CurrentDb
Set rstMio = dbMio.OpenRecordset("Query1")
Se la Query1 non è una query di selezione ovvero ha il seguente codice SQL:
SELECT Tabella2.Id2, Tabella2.Id1, Tabella2.Campo3, Tabella2.Campo4
FROM Tabella2;
oppure è di seleziona e nei criteri esplicito direttamente una costante,
ovvero ha il seguente codice SQL:
SELECT Tabella2.Id2, Tabella2.Id1, Tabella2.Campo3, Tabella2.Campo4
FROM Tabella2
WHERE (((Tabella2.Id1)=1));
tutto funziona; se invece Query1 è una query di selezione e nei criteri
richiamo il nome di un controllo contenuto in Maschera1, ovvero ha il
seguente codice VBA:
SELECT Tabella2.Id2, Tabella2.Id1, Tabella2.Campo3, Tabella2.Campo4
FROM Tabella2
WHERE (((Tabella2.Id1)=[Forms]![Maschera1]![Id1]));
Access mi dà il seguente errore:
Errore di run-time '3061'
Parametri insufficienti. Previsto 1
e se premo il pulsante di Debug mi evidenzia la riga
Set rstMio = dbMio.OpenRecordset("Query1")
Dove è il mio errore?
Come devo aprire il mio recordset nell'ultimo caso,quello che mi dà errore?
Grazie!!!
Roberto
(Senza portatile, lo ho lasciato in ufficio)

 ha scritto nel messaggio
news:ct7x5.34927$XZ4.4...@news.infostrada.it...

guarda le risposte ad un medesimo quesito del 11/09/2000
che ha il seguente oggetto
 Err...3061: Parametri insufficienti. Previsto 1
Pietro

 ha scritto nel messaggio
news:gN8x5.35593$XZ4.4...@news.infostrada.it...

Le ho guardate:
1) non mi trovo nella condizione ipotizzata da lbo
2) come hai suggerito ho letto l'help a Parameters ed anche io, come è
successo a Fabio Della Valle, con QueryDef non ho risolto nulla.
3) non ho capito la soluzione con cui Fabio,beato lui, ha risolto.
Resto in attesa che qualcuno riesca a colmare le mie lacune, altrimenti
pazienza, resto nella mia ignoranza.
Comunque grazie per la risposta.
Roberto


Se devi aprire una query con parametri via codice, devi espressamente
assegnare il valore al parametro/i ed aprire il recordset tramite 
qdf.openRecordset() con qdf = oggetto QueryDef.
...
Dim dbMio As Database
Dim rstMio As Recordset
Dim qdf As QueryDef
Set dbMio = CurrentDb
Set qdf = dbMio.QueryDefs("query1")
qdf.Parameters("[Forms]![Maschera1]![Id1]") = Me!id1
Set rstMio = qdf.OpenRecordset()
...
a meno che la query non ti serva per altri scopi, come parametro dagli un
nome piu' significativo di [Forms]![Maschera1]![Id1], dato  che  non ti
funziona come riferimento al valore del campo id1 del record corrente 
della maschera. 
Ciao
 Sandro

3) non ho capito la soluzione con cui Fabio,beato lui, ha risolto.
Per curiosita' ho letto i post in questione dopo averti gia' risposto.
Fabio Della Valle ha inserito come criterio nella query il riferimento ad
una funzione messa in un modulo generale, per esempio: miafun() 
dove miafun potrebbe essere cosi' definita:
Function miafun()
  miafun = Forms!maschera1!id1
End Function
Cosi',  per aprire il recordset:
...
Dim dbMio As Database
Dim rstMio As Recordset
Set dbMio = CurrentDb
Set rstMio = dbMio.OpenRecordset("query1")
...
Personalmete preferiso il metodo della querydef e parameters in quanto la
 query rimane piu' pulita. Se ci sono piu' parametri non e' un problema:
...
qdf.Parameters("parametro1") = ...
qdf.Parameters("parametro2") = ...
...
Ciao
  Sandro

"Sandro" <api...@LEVAMIworldonline.it> ha scritto nel messaggio
news:8FB356F51apign...@127.0.0.1...

Sei stato veramente gentile.
Appena posso provo i tuoi suggerimenti e ti faccio sapere.
--
Roberto
---------------------------------------------
il sito comune di it.comp.appl.access:
http://members.xoom.it/it_db_access/
---------------------------------------------

"Sandro" <api...@LEVAMIworldonline.it> ha scritto nel messaggio
news:8FB351109apign...@127.0.0.1...

OK, Grazie!
Appena posso provo e ti faccio sapere


"Sandro" <api...@LEVAMIworldonline.it> ha scritto nel messaggio
news:8FB351109apign...@127.0.0.1...

Finalmente ho avuto modo di provare la tua soluzione.
Funziona tutto!
Grazie infinite.
