Problema con ADO

lunedì 26 aprile 2004 - 10.33

Seagull Profilo | Newbie

Ho un problema riguardante l'aggiornamento di un campo di una tabella con ADO. Se provo ad aggiornare o modificare tale campo attraverso un form ASP mi viene restituito il seguente errore:

Error: -2147217904
Parametri insufficienti. Previsto 3.

Premesso che le query SQL ed i riferimenti alle tabelle del database (Access) sono corretti, ho provato anche a modificare la gestione degli errori, ma il risultato non cambia.

lbenaglia Profilo | Guru

Seagull wrote:

> Error: -2147217904
> Parametri insufficienti. Previsto 3.

Ciao Seagull,

in genere questo errore è generato quando JET non riesce ad identificare il nome di un campo che di conseguenza considera come parametro.
Il consiglio che ti posso dare è quello di verificare la sintassi del comando di aggiornamento ed i nomi delle varie colonne.

Dato che non hai postato alcuna riga di codice non sono in grado di aiutarti ulteriormente.
Sarebbe utile conoscere la struttura della tabella, la definizione delle colonne che la compongono (data type, lunghezza, constraints, ecc...) e la sezione di script che utilizzi per effettuare l'aggiornamento.

Io consiglio *SEMPRE* di accedere ad un database .mdb tramite gli oggetti QueryDef che sfruttano la tecnologia Rushmore presente in JET e creano un livello di astrazione tra la tua applicazione ed il database.
Per un esempio di codice guarda questo post:
http://tinyurl.com/obsv

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
http://italy.mvps.org

Seagull Profilo | Newbie

Anzitutto grazie della risposta; riguardo al database, queste sono le "features" della
tabella in questione:

Nome della Tabella: Categoria

Campi della Tabella "Categoria":

ID (Chiave primaria) --> Contatore (Intero Lungo)
Genere --> Testo (50)

la mia Funzione Update() che, essendo public si trova all'interno di un modulo ASP esterno al form,
è la seguente:

Public Function Update()
Dim objCmd

On Error Resume Next

Set objCmd = Server.CreateObject("ADODB.Command")

With objCmd
.CommandText = "prc_updCategoria"
.CommandType = adCmdStoredProc
Set .ActiveConnection = objCn

.Parameters.Append .CreateParameter("pID", adInteger, adParamInput, 4, m_lngID)
.Parameters.Append .CreateParameter("pGenere", adVarWChar, adParamInput, 50, m_strGenere)
.Execute , , adExecuteNoRecords
End With

If Err <> 0 Then
m_strErrorDescription = Err.Description
Update = Err.number
Else
m_strErrorDescription = ""
Update = 0
End If
End Function

lbenaglia Profilo | Guru

Seagull wrote:

> ID (Chiave primaria) --> Contatore (Intero Lungo)
<SNIP>
> .Parameters.Append .CreateParameter("pID", adInteger, adParamInput, 4, m_lngID)

Ciao Seagull,

dato che ID è autonumber verrà incrementato automaticamente da JET, quindi non devi specificare il parametro di input pID.
Per il resto il codice mi sembra OK (sempre che m_strGenere sia definita a livello di pagina e valorizzata correttamente, objCn sia un oggetto ADODB.Connection valido e che la query prc_updCategoria sia corretta).

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5