Bonjour un petit soucis dans un script vbs qui interroge le ldap

[Résolu]
Signaler
Messages postés
20
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
27 mars 2009
-
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
-
voila le script :
Je n'arrive pas sortir les noms et d'autre filtre !
L'erreur doit etre enorme, mais je ne vois pas !

Set Fl = Fso.GetFile("c:\tmp\essai.txt")
Set Fso = CreateObject("Scripting.FileSystemObject")

Function existMatriculeMAT(Matricule)


Dim strLDAP,nb,tableau,nom
Dim ADOConnection, ADORecordset1
Set ADOConnection1 = CreateObject("ADODB.Connection")
ADOConnection1.Provider = "ADSDSOObject"
ADOConnection1.Properties("Password") = "motdepasse***"
ADOConnection1.Properties("User ID") = "fd-prod-dir\userreadwrite1"
ADOConnection1.Open
strLDAP = "<LDAP://172.17.230.171/ou=people,DC=fd-prod-dir>;(displayName=" & Matricule & ");azPRID;onelevel"
Set ADORecordset1 = ADOConnection1.Execute(strLDAP)
nb = ADORecordset1.RecordCount
While Not nb = 0
result = result & " " & ADORecordset1.Fields(0).Value
nb = nb - 1
Wend


prid = result
Set ADOConnection1 = Nothing
Set ADORecordset1 = Nothing
End Function
Fl.Write result & VbCrLf

Merci !

5 réponses

Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
Set Fl = Fso.GetFile("c:\tmp\essai.txt")

Set Fso = CreateObject("Scripting.FileSystemObject")



Déjà, là , çà ne serait pas dans l'autre sens ? Tu utilises fso avant de l'avoir initialisé !!



Set Fso = CreateObject("Scripting.FileSystemObject")

Set Fl = Fso.GetFile("c:\tmp\essai.txt")





Manu
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 70 internautes nous ont dit merci ce mois-ci

Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
Ensuite, pour que la ligne suivante donne quelque chose :


Fl.Write result & VbCrLf


Il faut que result soit une variable publique de ton module (Elle est mise à jour dans la fonction existMatriculeMAT, mais existe-t-elle en dehors de cette fonction ?

Et il faut l'initialiser à "" avant de la remplir avec les champs de ta BDD.


Manu
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 70 internautes nous ont dit merci ce mois-ci

Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
Humm bon ... faudra que je pense à mettre toutes mes remarques dans le même message, je viens de voir autre chose :

A quoi servent les déclarations Set Fso et Set fl ?

Ne seraient-elles pas hors sujet dans ce problème ?

De plus, pourquoi est ce que existMatriculeMAT est une fonction ? Ca ne renvoit rien du tout ?? Ce devrait plutôt être une procédure !
Où est déclarée la variable prid ? la variable nb ?

Manu
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 70 internautes nous ont dit merci ce mois-ci

Messages postés
20
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
27 mars 2009

Merci pour tous
pour fso petit pb de copier coller oupss merci

Pour result oublie de ma part
Et en fait la variable prid c un champs dans ldap que je cherche a sortir
et nb = ADORecordset1.RecordCount c juste le nombre de enregistrement rencontré mais en fait je m'en fous.
et les declaration Fso et Fl c'est pour écrire a la fin dans un fichier texte.
Mais cette ligne ADORecordset1.Fields(0).Value n'est pas de moi, il m'a dit que je pouvais renvoyer ce qu'il y avait dans le champs prid de ldap.
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
Bonjour,

Il y a trop d'anomalies dans ton script !!!!
Ci-dessous une autre méthode à adapter (loggin,pssw....):

Dim Fso, Db, Rs, MaBaseJor
Set Fso = CreateObject("Scripting.FileSystemObject")


'*********************** Mappage du server OXALYS ************
Dim WshNetwork
Set WshNetwork = WScript.CreateObject("WScript.Network")
'WshNetwork.RemoveNetworkDrive "U:"
'WshNetwork.MapNetworkDrive "U:", "[file://Oxalys/OXALYS/OXADATA/JOR \\Oxalys\OXALYS\OXADATA\JOR]"


'*********************** Copie Base Access OxaJor du server OXALYS sur poste local ************
'Fso.CopyFile OxaJor, MaBaseJor
'Const OxaJor = "[file://Oxalys/OXALYS/OXADATA/JOR \\Oxalys\OXALYS\OXADATA\JOR]" & "\JOB_DIA7.MDB"
Const PathOut = "d:\Oxauser"
MaBaseJor = PathOut & "JOB_DIA7.MDB"
'Fso.CopyFile OxaJor, MaBaseJor


Saisie = "15/01/2006"
'Conversion de la date saisie (jj/mm/aaaa) au format date SQL (mm/jj/aaaa)
SQL_saisie = "#" & Mid(Saisie , 4, 2) & "/" & Mid(Saisie , 1, 2) & "/" & Mid(Saisie , 7, 4) & "#"
MaTable = "JOB"
MaRequete = "SELECT JOBID,RON,AMJ,DATE_FIN,ABORT,PROJECT,CPU,USER,ELAPSE FROM " & MaTable
MaRequete = MaRequete & " WHERE AMJ > " & SQL_saisie & " ORDER BY AMJ"
'MaRequete = SELECT TOP 10 ...... permet de lire les 10 premiers recordsets
'
'JOBID Rs.Fields(0) : var=jobid nom du job
'RON Rs.Fields(1) : var=ron numéro d''identification du jobid
'AMJ Rs.Fields(2) : var=DatDeb date début du jobid sous la forme jj/mm/aaaa hh:mn:ss
'


Set Db = CreateObject("ADODB.Connection")
Set Rs = CreateObject("ADODB.Recordset")
Db.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & MaBaseJor
Rs.Open MaRequete ,Db
MsgBox "ouverture base"
Do While Not Rs.EOF


'MsgBox "recordset: " & Rs.Fields(0) & " " & Rs.Fields(2)
Rs.MoveNext


Loop
Rs.Close
Set Fso = Nothing
Set WshNetwork = Nothing
msgbox "fin du script"