Bonjour,

Je souhaite chercher si un enregistrement est présent dans une table à l'aide de sql dans du vba excel. Si tel n'est pas le cas, je dois réaliser mon traitement. Pour cela, j'ai codé:

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
 
Dim conn As New ADODB.Connection
   Dim conn2 As New ADODB.Connection
   Dim conn3 As New ADODB.Connection
   Dim connString
 
   ' Recordset pour traiter les of racines non soldés dont le statut est "Terminé" et pour lesquels il y a du livrable
   Dim rsRecords As New ADODB.Recordset
 
   ' Recordset pour rechercher si l'of racine a été traité
   Dim rsRecord_trt As New ADODB.Recordset
 
connString = "DSN=TOP;Uid=TOPMAN01;Pwd=TOPMAN01"
   conn.Open connString
   conn2.Open connString
 
' Suppression des of traités soldés.
   txt = "DELETE FROM topaddin.m44_of_racines_traites m WHERE m.id_wo in (select w.id_wo from topmes.wo w where nvl(w.b_closed,0) = -1)"
   conn2.Execute txt
 
   ' Suppression des of extraits et soldés
   txt = "DELETE FROM topaddin.m44_etiquettes WHERE id_wo in (select w.id_wo from topmes.wo w where nvl(w.b_closed,0) = -1)"
   conn2.Execute txt
 
   ' Suppression des étiquettes du traitement précédent
   txt = "DELETE FROM topaddin.m44_etiquettes WHERE id_wo in (select id_wo from topaddin.m44_of_racines_traites)"
   conn2.Execute txt
 
 Set rsRecord_trt = conn2.Execute("select id_wo from topaddin.m44_of_racines_traites where id_wo = " & id_wo)
 
         MsgBox rsRecord_trt.EOF
 
         If rsRecord_trt.EOF Then
Le msgbox ramène une valeur "Faux" alors même que la requête réalisée par sql ne ramène aucun enregistrement.

Je ne comprends pas comment cela est possible.

Faut-il coder des commit après des mises à jour ?

Merci d'avance.

Julien.