Voila j'ai quelque chose de ce genre:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
 
        Dim marque As String
        Dim desc As String
 
        marque = txtmarque.Text
        desc = txtdesc.Value
 
        Dim oConnection As New OleDbConnection
 
        Dim sConnectionString As String
        sConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " & Server.MapPath("********.mdb")
        oConnection.ConnectionString = sConnectionString
 
        oConnection.Open()
        Dim cmd As OleDbCommand
 
cmd = New OleDbCommand("UPDATE produit SET idfamille = @idfamille, idssfamille = @idssfamille, idcategorie = @idcategorie, nomproduit= @marque, descproduit= '" & desc & "' WHERE idproduit = " & id1 & "", New OleDbConnection(sConnectionString))
 
            'idfamille
            Dim param As DbParameter = cmd.CreateParameter()
            param.ParameterName = "@idfamille"
            param.DbType = DbType.Int32
            param.Value = idfamille
            cmd.Parameters.Add(param)
 
            'idssfamille
            Dim param2 As DbParameter = cmd.CreateParameter()
            param2.ParameterName = "@idssfamille"
            param2.DbType = DbType.Int32
            param2.Value = idssfamille
            cmd.Parameters.Add(param2)
 
            'idcategorie
            Dim param3 As DbParameter = cmd.CreateParameter()
            param3.ParameterName = "@idcategorie"
            param3.DbType = DbType.Int32
            param3.Value = idcategorie
            cmd.Parameters.Add(param3)
 
            'quantite
            Dim param4 As DbParameter = cmd.CreateParameter()
            param4.ParameterName = "@quantite"
            param4.DbType = DbType.Int32
            param4.Value = quantite
            cmd.Parameters.Add(param4)
 
            'marque
            Dim param5 As DbParameter = cmd.CreateParameter()
            param5.ParameterName = "@marque"
            param5.DbType = DbType.String
            param5.Value = marque.ToString()
            cmd.Parameters.Add(param5)
 
            'description
            Dim param6 As DbParameter = cmd.CreateParameter()
            param6.ParameterName = "@descproduit"
            param6.DbType = DbType.String
            param6.Value = desc
            cmd.Parameters.Add(param6)
 
            cmd.Connection.Open()
            cmd.ExecuteNonQuery()
            cmd.Connection.Close()
            'End If
        Catch ex As Exception
            Label2.Text = "ERREUR: " & ex.Message
        End Try
        ' Fermeture de la connexion
        oConnection.Close()
Et voila ma requête paramétrée fonctionne pour toutes les variables en Integer (avec DbType.Int32) mais dès que j'essaie de faire passer la variable "marque" ou "desc"'(avec DbType.String) ça ne fonctionne pas en me disant:
"Type de données incompatible dans l'expression du critère"

Alors que dans la base de données Access: nomproduit et descproduit (les champs destinataires des variables marque et desc) sont en Texte.

J'ai essayé avec .Stringfixedlength, avec AnsiString, avec AnsiStringFixedlength, en précisant moi même le .Size du paramètre, en convertissant la variable encore une fois en .ToString (comme indiqué plus haut) mais toutes ces méthodes ce sont révélées infructueuses.
Je voudrais savoir qu'est-ce que je devrais faire de spécial pour passer un dbtype.string dans cette requête.

Merci d'avance.

NB: J'ai volontairement changé le chemin de la base de données, les étoiles ne sont donc pas la cause des erreurs.