IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Adaptation de code vbs pour delphi


Sujet :

Delphi

  1. #1
    Membre éprouvé
    Avatar de neuneu1
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 874
    Points : 1 194
    Points
    1 194
    Par défaut Adaptation de code vbs pour delphi
    bonjour

    j'ai un petit soucis pour un code vbs a passer en delphi

    je pense que ca vient de la requête mais je ne vois pas comment passer mes quotes a moins que ca ne soit pas faisable:
    code vbs qui permet de déplacer un computer dans une OU
    Code VB : 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
     
    On Error Resume Next
     
    Const ADS_SCOPE_SUBTREE = 2
     
    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand =   CreateObject("ADODB.Command")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
    Set objCommand.ActiveConnection = objConnection
     
    objCommand.Properties("Page Size") = 1000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
     
    objCommand.CommandText = _
        "SELECT ADsPath FROM 'LDAP://dc=ecolesks,dc=local' WHERE objectCategory='computer' " & _
            "AND name='rr'"
    Set objRecordSet = objCommand.Execute
     
    objRecordSet.MoveFirst
    Do Until objRecordSet.EOF
        strADsPath = objRecordSet.Fields("ADsPath").Value
         Wscript.Echo objRecordSet.Fields("ADsPath").Value
        Set objOU = GetObject("LDAP://ou=ordinateurs,ou=ecole primaire,DC=ecolesks,DC=local")
       intReturn = objOU.MoveHere(strADsPath, vbNullString)
     
        objRecordSet.MoveNext
    Loop

    ce code marche!!!
    le code sous delphi
    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
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
    c:tscriptcontrol;
    begin
     c := TScriptControl.Create(Self);
    try
    c.Language := 'VBScript';
    c.AddCode('Const ADS_SCOPE_SUBTREE = 2') ;
    c.AddCode('Set objConnection = CreateObject("ADODB.Connection") ') ;
    c.AddCode('Set objCommand =   CreateObject("ADODB.Command") ') ;
    c.AddCode('objConnection.Provider = "ADsDSOObject" ')    ;
    c.AddCode('objConnection.Open "Active Directory Provider"') ;
    c.AddCode('Set objCommand.ActiveConnection = objConnection  ')  ;
    c.AddCode('objCommand.Properties("Page Size") = 1000  ')   ;
    c.AddCode(' objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE ') ;
    c.AddCode('objCommand.CommandText =  "SELECT ADsPath FROM '+'LDAP://dc=ecolesks,dc=local'+' WHERE objectCategory='+'computer' +' AND name='+'rr'+'" ');
    c.AddCode(' Set objRecordSet = objCommand.Execute  ') ;
    c.AddCode('  Wscript.Echo objRecordSet.Fields("ADsPath").Value ') ;
    c.AddCode('objRecordSet.MoveFirst  ')    ;
    c.AddCode('Do Until objRecordSet.EOF  ')  ;
    c.AddCode(' strADsPath = objRecordSet.Fields("ADsPath").Value ')   ;
    c.AddCode('  Wscript.Echo objRecordSet.Fields("ADsPath").Value ') ;
    c.AddCode('  Set objOU = GetObject("LDAP://ou=ordinateurs,ou=ecole primaire,DC=ecolesks,DC=local") ') ;
    c.AddCode('  intReturn = objOU.MoveHere(strADsPath, vbNullString)  ')   ;
    c.AddCode('objRecordSet.MoveNext  ')    ;
    c.AddCode(' Loop ')   ;
     
    finally;
    c.Free;
    end;
    end;
    end.
    ca palnte ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    c.AddCode('objCommand.CommandText =  "SELECT ADsPath FROM '+'LDAP://dc=ecolesks,dc=local'+' WHERE objectCategory='+'computer' +' "AND name='+'rr'+'" ');
    voila si vous avez vu mon erreur???

    merci
    a+
    bon week end
    Une porte peut -etre ouverte ou....rouge!!!!:mouarf

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Oui, le caractère entourant les chaîne de caractère sont les ' en Delphi. Pour échapper ce caractère (donc inclure une quote dans la chaîne) il suffit simplement de la doubler.
    Donc ton code qui merdouille devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c.AddCode('objCommand.CommandText =  "SELECT ADsPath FROM ''LDAP://dc=ecolesks,dc=local'' WHERE objectCategory=''computer'' AND name=''rr'' ');
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  3. #3
    Membre éprouvé
    Avatar de neuneu1
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 874
    Points : 1 194
    Points
    1 194
    Par défaut
    Bonjour

    merci pour la réponse c 'etait bien l erreur
    a+
    Une porte peut -etre ouverte ou....rouge!!!!:mouarf

  4. #4
    Membre éprouvé
    Avatar de neuneu1
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 874
    Points : 1 194
    Points
    1 194
    Par défaut
    bonjour

    je pensais avoir compris et résolu le problème , ben non..

    enfin si le code marche mais des que je dois passer une variable dedans, avec des quotes ben je me plante gros

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c.AddCode('objCommand.CommandText =  "SELECT ADsPath FROM ''LDAP://dc=ecolesks,dc=local'' WHERE objectCategory=''computer'' AND name=''monpc''"' );
    dans ce code le pc s appel monpc, c'est pour les tests

    ca marche bien..

    par contre des que je veux lui passer un paramettre a la place de 'monpc'
    ben je ni arrive pas

    je declare une variable:
    ordi:='monpc2';

    je remplace monpc par monpc2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c.AddCode('objCommand.CommandText =  "SELECT ADsPath FROM ''LDAP://dc=ecolesks,dc=local'' WHERE objectCategory=''computer'' AND name='+ ordi +'"' );
    ca marche pas et je sais que ca vient des quotes mais je n'arrive pas a voir ou

    merci
    a+
    Une porte peut -etre ouverte ou....rouge!!!!:mouarf

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Parce qu'il faut conserver le "quotage" de la chaîne pour que le SQL soit correctement interprété, soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c.AddCode('objCommand.CommandText =  "SELECT ADsPath FROM ''LDAP://dc=ecolesks,dc=local'' WHERE objectCategory=''computer'' AND name='''+ ordi +''' "' );
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  6. #6
    Membre éprouvé
    Avatar de neuneu1
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 874
    Points : 1 194
    Points
    1 194
    Par défaut
    merci pour la réponse

    a+
    Une porte peut -etre ouverte ou....rouge!!!!:mouarf

Discussions similaires

  1. Code VB6 pour éxecuter simplement un script vbs
    Par didierdarras dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/09/2007, 17h55
  2. Code source de FFT et FFT inverse pour Delphi
    Par david_chardonnet dans le forum Delphi
    Réponses: 2
    Dernier message: 06/03/2007, 21h46
  3. Je cherche le CODE SOURCE DE LA VCL pour Delphi 6
    Par PiPo123 dans le forum Delphi
    Réponses: 12
    Dernier message: 05/09/2006, 19h31
  4. Code barre dans des fichiers QuiReport 3.62 pour delphi 7
    Par yanis97 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 07/03/2006, 14h25
  5. [DirectX] DelphiX, ou une autre adaptation pour Delphi
    Par Nicodemus dans le forum Langage
    Réponses: 1
    Dernier message: 06/10/2005, 14h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo