Bonjour,

Le but, est dans une table ici Table1, de trouver une ligne dont la valeur du champ1 est 1, du champ2 est 2 et du champ3 est 4 puis de modifier les valeurs du champ 4 et 5 correspondant. Toutes les types des entrées de la Table sont du texte.

dans le code ci-dessous, j'ai un problème de type de donnée incompatible.
la variable qdf est déclaré comme étant Variant. Je me demande si le problème ne viendrait pas de la! Car une requête est du texte, mais je ne sais plus trop où chercher.
INFO: j'utilise access 2003.

Merci d'avance pour votre aide.


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
Option Compare Database
 
Public Sub GO()
'Exemple D'appel de la Function Generique....
'Call UpDateFunction("Nom Table", "On Veux Champs1=?", "On Veux Champs2=?", "On Veux Champs3=?", "On Ecrira Dans ChampsX=?", "Nom Du ChampsX")
 
    Call UpDateFunction("Table1", "1", "2", "4", "3", "NbComposants")
    Call UpDateFunction("Table1", "1", "2", "4", "2", "NbCanaux")
End Sub
 
Sub UpDateFunction(TableZ As String, a As String, b As String, c As String, ReplaceZ As String, ChampsZ As String)
'TableZ: nom de la table à modifier; a,b,c les valeurs des champs à rechercher;
'ReplaceZ: élément à mettre à jour dans la table; ChampZ: Champs dans lequel changer la valeur ReplaceZ;
 
 
Dim StrSql As String: Dim qdf As Variant
 
 
'Construction De La String Contenant La Requette SQL...
    StrSql = "UPDATE " & [TableZ] & " AS Tab1"
    StrSql = StrSql + " SET [Tab1]." & ChampsZ & " = '" & [ReplaceZ] & "'"
    StrSql = StrSql + " WHERE ([TableZ].IdType=" & [a] & " And "
    StrSql = StrSql + " [Tab1].IdBoitier=" & [b] & " And "
    StrSql = StrSql + " [Tab1].IdCode=" & [c] & ");"
 
'Afficher Le Resultat Dans Debug : CLICK DROIT BARRE OUTILS : ACTIVER DEBUGAGE : CLIQUER SUR FENETRE EXECUTION... POUR VOIR LE RESULTAT
Debug.Print StrSql
 
'Creation Du Compteneur/Executeur De Requette
Set qdf = CurrentDb.CreateQueryDef("", StrSql)
 
Debug.Print StrSql
 
'Execution De La Requette Precedement Créée
qdf.Execute ("StrSql")
'dbFailOnError
 
End Sub