Errore di run-time 3061 parametri insufficienti. Previsto 1 (access)

Anonimo
2015-07-08T22:52:47+00:00

Buona sera!

Non riesco a capire un errore di access e non riesco ad andare avanti, ecco il problema:

 In access, ho una tabella utenti, composta cosi:

ID_UTENTE

USER                           (testo)

PASSWORD                (testo) 

AMMINISTRATORE    (testo)

SUPERUSER               (testo)

USER                          (testo)

Sto creando un accesso utenti. Faccio inserire user e password in un’altra maschera chiamata login e sul bottone OK ho messo questo codice:

    Set db = CurrentDb

    Set rsCodUtente = db.OpenRecordset("SELECT user.[ID_user], user.[utente], user.[password], user.[amministratore], user.[super-user], user.[user] FROM [user] WHERE ((([utente])= [Maschere]![login]![txt_user]))")

    utente = rsCodUtente![utente]

    rsCodUtente.Close

poi ovviamente faccio tutti i controlli del caso, ma il vba mi da questo errore: “Errore di run-time 3061 parametri insufficienti. Previsto 1”

La costa curiosa è che se tolgo nella query la parte where, funziona e mi restituisce il primo campo della tabella user, io vorrei però filtrarli con il where.

Sapete aiutarmi? 

Grazie!!

Microsoft 365 e Office | Access | Per la casa | Windows

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.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2015-07-09T00:53:45+00:00

se ti dice  ".... parametri insufficienti. previsto 1"  significa che manca 1 parametro.

devi "esplicitare" quel riferimento a  [Maschere]![login]![txt_user]

scrivendolo cosi:

..........    WHERE ((([utente])='" & [Forms]![login]![txt_user] & "'))") 

ma più in generale se mi permetti  noto che non hai dichiarato le variabili, non hai chiuso il db, hai una variabile stringa di nome "utente" che è omonima del campo "utente", hai dei nomi di campo che mi ricordano molto delle parole riservate di Access,  hai dei simboli matematici all'interno dei nomi di campo  ( super-user )

prova a ripensarla cosi:

Public Sub NomeSub()

Dim db As DAO.Database

Dim rsCodUtente As DAO.Recordset

Dim str_utente As String

Dim strSql As String

strSql = ""

strSql = strSql & "SELECT "

strSql = strSql & "user.[ID_user], "

strSql = strSql & "user.[utente], "

strSql = strSql & "user.[password], "

strSql = strSql & "user.[amministratore], "

strSql = strSql & "user.[super-user], "

strSql = strSql & "user.[user] "

strSql = strSql & "FROM "

strSql = strSql & "[user] "

strSql = strSql & "WHERE "

strSql = strSql & "((([utente])='" & [Forms]![login]![txt_user] & "'))"

strSql = strSql & ";"

Set db = CurrentDb

Set rsCodUtente = db.OpenRecordset(strSql, dbOpenDynaset)

str_utente = rsCodUtente.Fields("utente").Value

rsCodUtente.Close

db.Close

Set rsCodUtente = Nothing

Set db = Nothing

MsgBox str_utente

End Sub

Facci sapere 

.

La risposta è stata utile?

2 persone hanno trovato utile questa risposta.
0 commenti Nessun commento

1 risposta aggiuntiva

Ordina per: Più utili
  1. Anonimo
    2015-07-10T23:08:19+00:00

    Grazie mille!! funzionano entrambe le soluzioni che mi hai dato!

    Effettivamente la seconda è più ordinata! tengo quella!

    Grazie e buona serata!!

    La risposta è stata utile?

    0 commenti Nessun commento