Una famiglia di sistemi di gestione per database relazionali di Microsoft progettati per semplificare l'uso.
Ciao,
prova a cambiare:
dim recordset as dao.recordset
set recordset = currentdb.openrecordset("Select * from Nome_Query")
Ciao Mimmo
Questo browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
Salve, mi è capitato spesso utilizzando Vba con access di utilizzare tabelle come recordset con la seguente sintassi
dim recordset as dao.recordset
set recordset = currentdb.openrecordset("Nome_Tabella")
e vari comandi tra cui recordset.movenext o recordset.fields("nome_del_campo")
avrei la necessità di utilizzare una query come recordset,
ho tentato di fare la medesima cosa con la query:
dim recordset as dao.recordset
set recordset = currentdb.openrecordset("Nome_Query")
Ma mi ha dato errore.. qualcuno conosce la sintassi per effettuare questa operazione anche tramite una query?
Grazie in anticipo per la disponibilità!
Una famiglia di sistemi di gestione per database relazionali di Microsoft progettati per semplificare l'uso.
Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.
Ciao,
prova a cambiare:
dim recordset as dao.recordset
set recordset = currentdb.openrecordset("Select * from Nome_Query")
Ciao Mimmo
Ciao, ho provato e da il seguente errore:
il codice è il seguente , il debug evidenzia la riga sottolineata:
Private Sub FiltroOrd_Change()
'calcolo totale ordine corrente
Dim qord As DAO.Recordset
Set qord = CurrentDb.OpenRecordset("Select * from QOrdini")
If (qord.EOF = False) Then
qord.MoveFirst
End If
While (qord.EOF = False)
Forms!MainBoard!optot = Forms!MainBoard!optot + qord.Fields("Totale")
qord.MoveNext
Wend
'fine calcolo totale ordine corrente
Me.Refresh
End Sub
in pratica dovrebbe leggere il valore del campo ("Totale") dalla query e sommarlo in un campo della form (optot), per poi passare al record successivo della query e ripetere l'operazione
ciao Ivan,
la sintassi che mostri è corretta, quale errore ricevi....? Devi essere più preciso, altrimenti dobbiamo tirare ad indovinare.
Posta tutto il codice che stati tentando di impostare.
Ciao, Sandro.
ciao Ivan,
hai un parametro della query (?) QOrdini ?
L'errore è dovuto al fatto che il dbEngine (Jet/Ace) non riesce e risolvere il riferimento della query (?) QOrdini, la soluzione più semplice è avvolgere il parametro con la funzione Eval("[forms!nomeForm!nomeControllo]")
Per il resto, non tanto bello il codice che mostri, prima di chiudere la sub sempre meglio chiudere il recordset e distruggere la variabile oggetto:
rst.close
set rst=nothing
ed il loop sarebbe meglio gestirlo con
do while not rst.eof
...
rst.movenext
loop
In ogni caso, ciclare un recordset per il problema che poni non è la soluzione migliore, se la form è associata di basta inserire nell'origine dati del controllo, magari posto a pie pagina della form il calcolo :
=somma(totale)+optot
Se la form è una subForm ed il controllo da sommare è posto nella main form è necessario rivedere il codice impostando i riferimenti diversamente.
Mancano un po' troppi dettagli per dare un suggerimento preciso.
Ciao, Sandro.
Ciao,
se l'obiettivo e sommare ad un controllo della maschera [optot] il totale del campo [totale] della query QOrdini ti basta:
Forms!MainBoard!optot = Forms!MainBoard!optot + DSum("Totale","QOrdini")
Ciao Mimmo