Newsgroup: it.comp.appl.access
Titolo: Errore di runtime 3061

Salve a tutti.
Ho due tabelle cosě strutturate:
TABELLA1      TABELLA2
idAnagrafico      data
cognome            idAnagrafico
nome                 valore
altri campi          altri campi
con idAnagrafico come campo di collegamento e per TABELLA2 non ho chiavi
Ho poi creato due query: una semplice, "Query1", che seleziona cognome,
nome, data, valore
in base a un intervallo di date e una a campi incrociati, "Query2", che
preleva i dati da "Query1"
e con: intestazione di riga: cognome, nome;
          intestazione di colonna: data;
          valore: valore.
Le informazioni di "Query2" le utilizzo per un report che riempio in modo
dinamico con il
seguente codice:
    Private Sub Report_Open(Cancel As Integer)
    Dim rst As Recordset
    Dim indice As Integer
    Set rst = CurrentDb.OpenRecordset("Query2")
    For indice = 0 To rst.Fields.Count - 1
        Me("controllo" & Trim(indice)).ControlSource =
rst.Fields(indice).Name
        Me("lbl" & Trim(indice)).Caption = rst.Fields(indice).Name
    Next indice
    Set rst = Nothing
    End Sub
Funziona tutto finchč inserisco esplicitamente l'intervallo di date come
criterio di Query1, ma
ho bisogno di inserirlo da tastiera con un box di dialogo. Ho quindi pensato
di usare un
parametro ed č qui che iniziano i problemi: infatti al momento di aprire il
report appare il seguente
messaggio:"Errore di run-time '3061': Parametri insufficienti. Previsto 1".
Le guide, in linea e cartacea, non mi sono state di nessun aiuto.
Scusate la prolissitŕ e grazie per l'attenzione.
** Articolo inviato tramite i servizi gratuiti di 
www.x-privat.org
 **


Due cose; fai attenzione al campo chiamato "data" (e anche "descrizione")
perché questo è un termine utilizzato da access e ti potrebbe causare strani
comportamenti.
Mi sembra di capire che la condizione l'hai scritta nella colonna data con
una richiesta di input dall'utente al momento della esecuzione della query;
se è così prova con:
es.
Between CVDate([inserire la prima data]) And CVDate([inserire la seconda
data])
Ciao.
--
Sergio MAZZA

 messaggio:"Errore di run-time '3061': Parametri insufficienti. Previsto
1".
Che io mi ricordi questo è il classico errore che esce quando si tenta di
usare come origine di un recordset una query con parametri.
Hai due soluzioni:
- utilizzare la proprietà parameters del recordset applicando un filtro dopo
aver aperto il recordset su una query senza filtri
- creare via codice una stringa SQL contenente il filtro mettendoci il
valore inserito dall'utente e quindi aprire il recordset tramite la stringa
SQL
Antonio


Se stai operando con una query a campi incrociati parametrica o con una
query a campi incrociati basata su una query di selezione parametrica,
affinché tutto funzioni e per non ricevere da Access l'errore 3061 è
INDISPENSABILE esplicitare il tipo dati di tutti i parametri della query.
Per fare questo apri la struttura della query che contiene i parametri; dal
menu Query seleziona il comando Parametri... ; nella finestra di dialogo
Parametri query che si apre, per ogni parametro della query digita il
parametro nella colonna Parametro e seleziona il Tipo dati del parametro
nella relativa colonna.
Se vuoi operare direttamente sul codice SQL della query che contiene i
parametri, fai iniziare il codice SQL con la dichiarazione PARAMETERS (vedi
help). La dichiarazione PARAMETERS precede tutte le altre istruzioni,
inclusa l'istruzione SELECT.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

Grazie a tutti per l'aiuto. Sono riuscito a risolvere il problema via
codice.
