I am trying to execute an UPDATE SQL query using an ADODB.Command object. I never used it before so I may be doing stupid mistakes, her's a copy of my code:
Public Function setOffre(idO As Integer, idS As Integer, ref As String, dateO As Date, dateF As Date, nomR As String, idEntRecr As Integer, emploi As String, idEtat As Integer, lieu As String, plage As String, College As String)
Dim sqlQuery As String
Dim rs As ADODB.Recordset
Set connect = New ADODB.Connection
connect.Open connString
sqlQuery = "UPDATE offres " & _
"SET source_ID = @idSource, " & _
"reference = @idRef, " & _
"recruteur = @recruteur, " & _
"lieu = @lieu, " & _
"etat_ID = @idEtat, " & _
"emploi = @emploi, " & _
"plage = @plage, " & _
"college = @college, " & _
"offre_Date = @dateO, " & _
"offre_Forclusion = @forcO, " & _
"offre_Mois = @moisO, " & _
"entite_ID = @idEntite " & _
"WHERE offre_ID = @idOffre;"
With New ADODB.Command
.ActiveConnection = connect
.CommandType = adCmdText
.NamedParameters = True
.CommandText = sqlQuery
.Parameters.Append .CreateParameter("@idSource", adInteger, adParamInput, 10, idS)
.Parameters.Append .CreateParameter("@idRef", adLongVarChar, adParamInput, 10, ref)
.Parameters.Append .CreateParameter("@recruteur", adLongVarChar, adParamInput, 100, nomR)
.Parameters.Append .CreateParameter("@lieu", adLongVarChar, adParamInput, 100, lieu)
.Parameters.Append .CreateParameter("@idEtat", adInteger, adParamInput, 10, idEtat)
.Parameters.Append .CreateParameter("@emploi", adLongVarChar, adParamInput, 200, emploi)
.Parameters.Append .CreateParameter("@plage", adLongVarChar, adParamInput, 10, plage)
.Parameters.Append .CreateParameter("@college", adLongVarChar, adParamInput, 200, College)
.Parameters.Append .CreateParameter("@dateO", adDate, adParamInput, 10, Format(dateO, "yyyy-mm-dd"))
.Parameters.Append .CreateParameter("@forcO", adDate, adParamInput, 10, Format(dateF, "yyyy-mm-dd"))
.Parameters.Append .CreateParameter("@moisO", adInteger, adParamInput, 10, Month(dateO))
.Parameters.Append .CreateParameter("@idEntite", adInteger, adParamInput, 10, idEntRecr)
.Parameters.Append .CreateParameter("@idOffre", adInteger, adParamInput, 10, idO)
.Execute
End With
connect.Close
End Function
My error trigger on .Execute
it says [MySQL][ODBC 5.3(a) Driver][mysqld-5.5.16]Invalid parameter type
. Is adLongVarChar
not the right type to use for a string value ?
EDIT : After trying @h2so4 's method (concatenating the parameter values into the command string), I get an other error saying
[MySQL][ODBC 5.3(a) Driver][mysqld-5.5.16]our le champ 'this MySQL version'
.
No idea what it means but it triggers on my executing line :
connect.Execute sqlQuery, , adCmdText