[Déplacé VB6 --> VBA] Excel, Mysql - recordset.find - Recherche avec deux condit

cs_eugi Messages postés 1 Date d'inscription lundi 3 décembre 2007 Statut Membre Dernière intervention 13 novembre 2009 - 13 nov. 2009 à 22:05
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 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
.... .... ....


Eugi (Canada, Québec, St-Hubert)

1 réponse

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0
Rejoignez-nous