[Déplacé VB6 --> VBA] Excel, Mysql - recordset.find - Recherche avec deux condit
cs_eugi
Messages postés1Date d'inscriptionlundi 3 décembre 2007StatutMembreDernière intervention13 novembre 2009
-
13 nov. 2009 à 22:05
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
14 nov. 2009 à 04:12
Bonjour à tous,
Avec recordset.find je peut rechercher seulement 1 condition. Exite t'il un moyen de contournement pour rechercher une deuxième condition?
Je veut rechercher traitement et auteur (mysql) dans le fichier excel colonne 1 (A1) traitement et colonne 7 (G1) auteur
Merci de votre aide!
Option Explicit
Public Const SAPXLS = "C:\HFPCL\SAP\SAP.xls"
Sub Main
Dim app As Excel.Application
Dim rng As Excel.Range
Dim rstVerifs As New ADODB.Recordset ' recordset contenant tous les traitements dont le système est SAP
Dim rstResult As New ADODB.Recordset ' recordset servant à enregistrer les nouveaux résultats
Dim strSQL As String
Dim conn As New ADODB.Connection
DoEvents
' ouverture de la connexion à la base de données
conn.Open CONNSTRING
'ouverture du fichier SAP.xls
Set app = New Excel.Application
app.Visible=False
app.Workbooks.Open SAPXLS
'trouve tous les traitements SAP à vérifier
strSQL = "Select tbltraitements.nom As traitement, tbltraitements.idtraitement as idtraitement, tbltraitements.Auteur as auteur " & _
" from tbltraitements " & _
" where tbltraitements.systeme = 'SAP' and PCL <> FALSE;"
rstVerifs.Open strSQL, conn, adOpenKeyset, adLockOptimistic
rstResult.Open "select * from tblresultats where idresultat = 0",conn,adOpenKeyset,adLockOptimistic
Set rng = app.ActiveWorkbook.Sheets(1).Range("A1")
Do While (Len(rng.Value) > 0) ' parcours le fichier xls
' pour chaque ligne on cherche dans notre recordset rstVerifs
' si la valeur de la colonne 1 (nom du traitement) est trouvée dans le recordset
rstVerifs.MoveFirst
rstVerifs.Find("traitement = '" & rng.Value & "'")
' un enregistrement est créé ou mis à jour dans la table tblresultats si tel est le cas
If Not rstVerifs.BOF And Not rstVerifs.EOF Then
.... .... ....
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 14 nov. 2009 à 04:12
Salut
En effet, la méthode Find ne permet de choisir qu'un seul champ (mais autorise plusieurs conditions, mais sur un seul champ), sinon, c'est l'erreur 3001.
As-tu seulement cherché "ADODB Find" sur ton moteur de recherche favori ?
Il y a pourtant <cet article> qui explique comment procéder : Avec la méthode Filter et/ou Clone
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)