Errore DAO con Query

di il
12 risposte

Errore DAO con Query

Salve a tutti e ringrazio anticipatamente a chi mi aiuta perchè mi sono incartato

Devo inviare un file in pdf in maniera ciclica da una lista di clienti di una query. Ero indeciso tra un istruzione For Each ed un Dao ed alla fine mi sembrava più facile usare l'Istruzione DAO ma non pensavo di incartarmi qui.. Il problema è che il ciclo di comandi su una tabella funziona perfettamente ma appena la applico su una query mi da errore sul comando EOF... Dove sbaglio oppure come posso risolvere il problema? Allego i comandi sia per la tabella (funzionante) sia per la Quesry (ERRORE)
Ps: Ovviamente ho provato prima con il comando msgbox prima di cimentarmi sull'invio delle email


PER TABELLA FUNZIONANTE
Dim DbCorrente As DAO.Database
Dim Tabella As DAO.Recordset
Set DbCorrente = CurrentDb
Set Tabella = DbCorrente.OpenRecordset("AnagraficaCorso")

Do Until Tabella.EOF
MsgBox Tabella.Fields("Sezione")
Tabella.MoveNext
Loop
Tabella.Close
DbCorrente.Close


CON QUERY NON FUNZIONANTE
Dim DbCorrente As DAO.Database
Dim Query As DAO.QueryDef
Set DbCorrente = CurrentDb
Set Query= DbCorrente.QueryDefs("InvioEmailDocenti")

Do Until Query.EOF 'ERRORE QUI!!
MsgBox Query.Fields("Sezione")
Query.MoveNext
Loop
Query.Close
DbCorrente.Close

12 Risposte

  • Re: Errore DAO con Query

    Non si capisce che fai.

    Non esiste e non ha senso EOF per la QueryDef.

    Una query deve essere eseguita e puoi scorrere il risultante recordset.

    Usa un libro per studiare le basi.
  • Re: Errore DAO con Query

    Ciao Oregon. Ho provato con diversi libri ma nessuno infatti parla di scorrimento su query. Stavo provando a tentativi Mi puoi per favore suggerire come fare e che istruzione usare? Sia le istruzioni DAO che For Each non le ho mai usate (non sono espertissimo).
    Ti ringrazio anticipatamente...
  • Re: Errore DAO con Query

    Puoi usare tranquillamente il recordset anche per la query, così dovrebbe funzionare:

    Dim DbCorrente As DAO.Database
    Dim Query As DAO.Recordset
    Set DbCorrente = CurrentDb
    Set Query = DbCorrente.OpenRecordset("InvioEmailDocenti")

    Do Until Query.EOF
    MsgBox Query.Fields("Sezione")
    Query.MoveNext
    Loop
    Query.Close
    DbCorrente.Close
  • Re: Errore DAO con Query

    Grazie SimoData ma purtroppo mi da questo errore "Errore di run-time 3061 parametri insufficienti. Previsto 5" sulla riga "Set Query = DbCorrente.OpenRecordset("InvioEmailDocenti")"
    ((
  • Re: Errore DAO con Query

    vincoll ha scritto:


    Ho provato con diversi libri... provando per terntativi ...
    Non diciamo sciocchezze ...
    non sono espertissimo
    Beh, ci sono tuoi interventi dal 2015 ... in 2 anni di lettura libri (con relativi esercizi) si apprendono le basi ... andiamo ...

    @simoData ... non userei nomi di variabili che nulla hanno a che vedere con l'oggetto ... Un recordset non è una query ... è meglio scrivere

    Dim rs As DAO.Recordset

    e di conseguenza nel codice ...
  • Re: Errore DAO con Query

    vincoll ha scritto:


    Grazie SimoData ma purtroppo mi da questo errore "Errore di run-time 3061 parametri insufficienti. Previsto 5" sulla riga "Set Query = DbCorrente.OpenRecordset("InvioEmailDocenti")"
    ((
    Cosa è InvioEmailDocenti?

    Non si può lavorare "al buio" e "per tentativi". Non è possibile neanche aiutare in un forum in queste condizioni.
  • Re: Errore DAO con Query

    Oregon magari ho ripreso dal 2015 ad ora e non essendo un programmatore professionista e non facendolo di mestiere, chiedo aiuto a chi con grande umiltà dimostra a me e tanti altri di essere più bravo degli altri... Probabilmente per chi ha dimestichezza con la programmazione basta un nulla aiutare gli altri, sempre se uno voglia farlo...così come gentilmente ha fatto @SimoData, altrimenti si perderebbe il senso del Forum.
    Questo è il mio pensiero....
  • Re: Errore DAO con Query

    @Oregon ... non stavo fornendo una soluzione completa (come da regolamento), ma solo l'indicazione di come poteva fare. Poi cosa sia meglio o peggio fare è un altro discorso.

    @vincoll Questo sembra semplicemente un problema nella query, non del codice. Se ci fai doppio clic sopra si apre correttamente? Non credo.
  • Re: Errore DAO con Query

    SimoData ha scritto:


    @Oregon ... non stavo fornendo una soluzione completa
    Non stavo dicendo questo. Stavo solo parlando del nome delle variabili scelte. Mi sembrava chiaro.
  • Re: Errore DAO con Query

    vincoll ha scritto:


    Oregon magari ho ripreso dal 2015
    E allora ascoltami ...

    Il forum serve a dare buoni consigli, prima di tutto. Visto che sei a meno di zero, prendi dei libri e studia la parte teorica di base e gli esercizi minimi.
    Il forum non si sostituisce ai libri, fornirti del codice, come hai visto, sposta solo il problema più avanti, perché non lo comprendi e ti fermi al prossimo problemino.

    Puoi anche non accettare il consiglio ... comunque buon lavoro.
  • Re: Errore DAO con Query

    oregon ha scritto:


    SimoData ha scritto:


    @Oregon ... non stavo fornendo una soluzione completa
    Non stavo dicendo questo. Stavo solo parlando del nome delle variabili scelte. Mi sembrava chiaro.
    Quello che tu dici è chiaramente e indubbiamente corretto: non mi sono spinto a dare anche questa indicazione, ma mi sono concentrato sul nocciolo della questione. Chiedo venia.
  • Re: Errore DAO con Query

    SimoData ha scritto:


    oregon ha scritto:


    SimoData ha scritto:


    @Oregon ... non stavo fornendo una soluzione completa
    Non stavo dicendo questo. Stavo solo parlando del nome delle variabili scelte. Mi sembrava chiaro.
    Quello che tu dici è chiaramente e indubbiamente corretto: non mi sono spinto a dare anche questa indicazione, ma mi sono concentrato sul nocciolo della questione. Chiedo venia.
    Nessun problema, non era una critica.

    Mi preoccupava il fatto che l'OP comprendesse che EOF e Query non c'entrano nulla e in quel modo si sarebbe potuto confondere (ulteriormente).
Devi accedere o registrarti per scrivere nel forum
12 risposte