Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 10 su 10

Errore run-time Parametri insufficienti: previsto 4 durante esecuzione di query

  1. #1
    hayabusa_65 non  in linea Scolaretto
    Buonasera a tutti
    ho un problema di questo tipo che provo a descrivere scusandomi fin d'ora per la confusione espositiva.

    in una routine ho scritto questa parte di codice

    ...
    sSqlstat = " SELECT QryCostiMensDip.PkDipAna, QryCostiMensDip.Dipendente, QryCostiMensDip.PkCriRip as idCriRip , QryCostiMensDip.[importo] AS ImportoTot, " & _
                       " IIf(IsNull([RipImp]),0,[RipImp]) AS ImportoRib, [ImportoTot]-[ImportoRib] AS Importo, 4401011 as pdcKey" & _
                       " FROM QryCostiMensDip LEFT JOIN QryCostiMdoRibaltati ON QryCostiMensDip.PkTblCon = QryCostiMdoRibaltati.ConKey" & _
                       " WHERE (QryCostiMensDip.PkCriRip=" & iCriRip & ");"
    
            Set rS1 = db.OpenRecordset(sSqlstat)    ' recordset con record da ripartire
    
    il predicato della ssqlstat l'ho creato con la creazione guidata query e testata. presa cos singolarmente funziona perfettamente, in VB ho solo sostituito la variabile icririp

    Il problema mi sorge durante l'esecuzione della routine in quanto si blocca dicendo "Parametri insufficienti. Previsto 4"

    La cosa ancora pi strana in quanto se eseguo il debug e lancio la query manualmente, con il debug in corso, non funziona pi nemmeno esternamente se blocco il debug riprende a funzionare.

    Qualcuno mi pu aiutare?
    Grazie

  2. #2
    L'avatar di muttley005
    muttley005 non  in linea Topo di biblioteca
    su quale istruzione?
    questa?
    Set rS1 = db.OpenRecordset(...)
    
    non credo conti ma tanto per fare... c' uno spazio prima di select
    altra cosa che non credo sia ma non si sa mai...
    [ImportoTot]-[ImportoRib] AS Importo
    
    prova a scriverla cos
    ([ImportoTot]-[ImportoRib]) AS Importo
    
    altro... iCriRip che valore ha quando arrivi al sSqlstat ?
    db assegnato bene?

  3. #3
    L'avatar di nman
    nman non  in linea Scribacchino
    ma nella tua query "QryCostiMensDip" hai per caso 4 parametri che arrivano da maschere ??? per esempio:
    ...... WHERE NomeCampo = Forms!NomeMaschera!NomeControllo ......
    ??

  4. #4
    hayabusa_65 non  in linea Scolaretto
    Innanzitutto grazie per la risposta.


    su quale istruzione?
    questa?
    Set rS1 = db.OpenRecordset(...)
    
    Si su questa istruzione



    non credo conti ma tanto per fare... c' uno spazio prima di select
    altra cosa che non credo sia ma non si sa mai...
    [ImportoTot]-[ImportoRib] AS Importo
    
    prova a scriverla cos
    ([ImportoTot]-[ImportoRib]) AS Importo
    
    Ho provato ma non cambia
    altro... iCriRip che valore ha quando arrivi al sSqlstat ?
    db assegnato bene?
    E' una variabile che ho impostato precedentemente e arriva correttamente.
    Ma quello che non capisco perch se eseguo la query in fase di debug non funziona, mentre se la eseguo da sola funziona.

    Grazie e ciao

  5. #5
    hayabusa_65 non  in linea Scolaretto
    Si, la "QryCostiMensDip" ha delle condizioni che preleva dalla maschera principale e al suo interno ha un'altra query che prende i parametri sempre dalla maschera principale.
    Pu essere questo che la blocca?
    Se si come mai?
    La stessa "tecnica" l'ho usata anche altre volte ma non mi ha mai dato problemi.
    I parametri sono troppi?


    Grazie per la risposta.

  6. #6
    Quote Originariamente inviato da hayabusa_65 Visualizza il messaggio
    Si, la "QryCostiMensDip" ha delle condizioni che preleva dalla maschera principale e al suo interno ha un'altra query che prende i parametri sempre dalla maschera principale.
    Pu essere questo che la blocca?
    nman aveva intuito giusto.
    Quote Originariamente inviato da hayabusa_65 Visualizza il messaggio
    Se si come mai?
    Perch le query parametriche danno sempre grane in vba se non gestite adeguatamente, passando i parametri alla querydef.
    Quote Originariamente inviato da hayabusa_65 Visualizza il messaggio
    La stessa "tecnica" l'ho usata anche altre volte ma non mi ha mai dato problemi.
    Forse a te sembra la stessa cosa, per... chiss.
    Quote Originariamente inviato da hayabusa_65 Visualizza il messaggio
    I parametri sono troppi?
    Non credo che sia un problema di numero eccessivo di parametri quanto il fatto che i parametri non sono valorizzati come il codice si aspetta.

    Soluzione 1: crei una "super sql" dove al posto di [Maschere]![Maschera1]![Controllo] metti il relativo valore (un po' come hai creato la stringa SQL di cui al primo post)
    Soluzione 2: gestisci i parametri da codice, assicurandoti per che siano inseriti come tali in QueryDef. La query che vedi da interfaccia grafica, in visualizzazione SQL, inizier con "PARAMETERS ..." mentre in QBE si usa il pulsante Parametri (in A2013 vicino al pulsante che attiva i Totali)
    Qui trovi alcune informazioni ed esempi:
    PARAMETERS Declaration (Microsoft Access SQL)
    http://forum.masterdrive.it/access-7...etriche-18578/

  7. #7
    L'avatar di muttley005
    muttley005 non  in linea Topo di biblioteca
    senza offesa... a parere mio una pessima tecnica.
    pu solo darti problemi

  8. #8
    OsvaldoLaviosa non  in linea Topo di biblioteca
    Qualcosa mi ricorda di aver richiesto anch'io una cosa simile in questa discussione
    http://forum.masterdrive.it/access-7...81/index2.html
    Philcattivocarattere mi aveva indicato la stessa strada (stessi link)...che io non ho capito a dire il vero.

    Similmente a questa affermazione/soluzione
    Quote Originariamente inviato da Philcattivocarattere
    Soluzione 1: crei una "super sql" dove al posto di [Maschere]![Maschera1]![Controllo] metti il relativo valore (un po' come hai creato la stringa SQL di cui al primo post)
    Io ho risolto, ragionando in questo modo:
    1. Nella query ci sono dei "parametri" che VBA non legge o non lascia passare, allora
    2. Prelevo la stringa SQL che c' al suo interno,
    3. Alla stringa SQL gli dico, con un Replace (vedi tu bene la sintassi), sostituisci quello che appare come parametro e mettici dentro il valore effettivo corrente che vedi nella tua maschera
    4. In questo modo la query perde la sua caratteristica parametrica e diventa una normale query di selezione facilmente gestibile dal VBA
    5. Adesso apri il recordset su questa nuova stringaSQL e vedrai che il codice VBA ne tiene conto e lascia passare.

    Spero di non essere andato fuori tema.
    Ultima modifica di OsvaldoLaviosa; 25-09-2015 11:08 

  9. #9
    hayabusa_65 non  in linea Scolaretto
    Grazie per i consigli
    prover a gestire le query come mi avete consigliato
    Vi aggiorno sui risultati
    Grazie

  10. #10
    hayabusa_65 non  in linea Scolaretto
    Assolutamente nessuna offesa.
    Sono assolutamente certo che non sia una delle strade migliori, ma al momento non me ne sono venute altre

    Grazie e ciao

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. errore di run-time 3061 parametri insufficienti previsto 1
    Da Aleandro nel forum Microsoft Access
    Risposte: 5
    Ultimo Post: 22-11-2020, 09:10
  2. Risposte: 11
    Ultimo Post: 22-01-2019, 19:19
  3. Risposte: 4
    Ultimo Post: 08-11-2017, 15:25
  4. [Access] - Parametri insufficienti . Previsto 2
    Da Fabio63 nel forum Microsoft Access
    Risposte: 6
    Ultimo Post: 05-03-2009, 10:01
  5. [ASP]Parametri insufficienti. Previsto 1.
    Da jonny75 nel forum ASP 3, ASP .Net
    Risposte: 7
    Ultimo Post: 23-01-2007, 18:30