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

VBScript Discussion :

Pb query de tag depuis Windows Desktop search en VBS


Sujet :

VBScript

Vue hybride

atomusk Pb query de tag depuis... 03/02/2008, 22h02
ced600 essayes : ... 04/02/2008, 14h54
atomusk Ca me donne ça : Objet... 04/02/2008, 21h15
ced600 Bah la description des... 05/02/2008, 09h26
atomusk j'avais remarqué que j'était... 05/02/2008, 10h48
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 10
    Par défaut Pb query de tag depuis Windows Desktop search en VBS
    Bonjour,

    C'est mon premier message ici. Je suis developpeur SAP sur Paris et accessoirement developpeur en VBScript/Javascript quand j'ai un peu de temps

    Je suis entrain d'essayer de faire une page pour Windows Home server (IIS7 & Windows Desktop Search 3 inclus) qui va me récuperer l'ensemble des tags des images du système en Vbscript (coté serveur) en faisant des requettes sur WDS.

    Mes premiers tests donnent de bon résultats (et surtout des perfs acceptables :p), mais au moment d'afficher un tag, j'ai de gros problèmes

    Voici mon code :


    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
    <script language="Vbscript" runat="server">
    Set objConnection = CreateObject("ADODB.Connection")
    Set objRecordSet = CreateObject("ADODB.Recordset")
     
    objConnection.Open "Provider=Search.CollatorDSO;Extended Properties='Application=Windows';"
     
    'requette : ensemble des fichiers images
    objRecordSet.Open "SELECT System.FileName,System.ItemFolderPathDisplay,System.Photo.DateTaken, System.Keywords FROM SYSTEMINDEX  where system.kind = 'Picture'", objConnection
     
    objRecordSet.MoveFirst
     
    Do Until objRecordset.EOF
     
     response.write objRecordset.Fields.Item("System.FileName") 
     response.write objRecordset.Fields.Item("System.Keywords")
     response.write "<BR>"
     
     objRecordset.MoveNext
    Loop
     
    </script>
    Voila, rien de bien compliqué. Donc cette requette récupere l'ensemble des noms/tags &co de WDS et me les affichent.
    Voila le résulat :

    1175192143987.jpg
    DSC00102.JPG
    [... liste d'image...]
    DSC00104.JPG
    P1010264.JPG
    Objet Response erreur 'ASP 0106 : 80020005'

    Erreur de type

    /photo/test/test.asp, ligne 0

    Un type de données non pris en charge a été détecté.
    En fait P1010264 est la toute premiere image de la liste à avoir des tags !

    C'est donc la premiere fois que le code :
    response.write objRecordset.Fields.Item("System.Keywords")
    ne retourne pas la valeur vide.

    J'ai donc fait quelques tests et j'ai trouvé la fonction
    varType(objRecordset.Fields.Item("System.Keywords"))
    qui me retourne '8200' pour toutes les images avec Tags.

    La fonction IsArray(objRecordset.Fields.Item("System.Keywords")) me retourne "true" pour toutes les images avec tags.

    Et Ubund(objRecordset.Fields.Item("System.Keywords")) me retourne bien le nombre de tags appliqués sur l'image.

    Mais quand j'essaye de faire :
    objRecordset.Fields.Item("System.Keywords")(0)

    Il me retourne :

    Erreur d'exécution Microsoft VBScript erreur '800a01c2'

    Nombre d'arguments ou affectation de propriété incorrects: '[object]'

    /photo/test/test.asp, ligne 20
    Donc je ne sais pas trop quoi faire, il me dit bien que c'est un array d'element, mais je ne sais pas trop comment faire pour savoir un array de "quoi" et surtout comment l'afficher!

    Merci de votre aide.

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    essayes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (objRecordset.Fields.Item("System.Keywords"))(0)
    ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set toto = objRecordset.Fields.Item("System.Keywords")
    toto(0)
    Je suis loin d'être sur de moi.
    Dernièrement j'ai utilisé une librairie d'une appli en c#, et je n'ai que des exemples en vbs.
    Donc j'ai dû m'efforcer à faire de la traduction. Pas facile mais je crois avoir mieux compris le vbs maitenant.

    Dans ton cas Fields ressemble à un dictionnaire, et pour accéder à un élement de celui tu utilises la méthode Item.
    Et cela te renvois un object en général.
    Maintenant c'est soit une valeur, soit un tableau, soit un autre objet.

    Cela pourrait être un autre dictionnaire non ? Et dans ce cas là tu devrais faire un truc du genre (je reprends mon deuxième exemple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    toto.Items("quelque chose peut être un keyword")
    Je te conseille quand même de regarder l'aide msdn pour l'objet en question.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 10
    Par défaut
    Citation Envoyé par ced600 Voir le message
    essayes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (objRecordset.Fields.Item("System.Keywords"))(0)
    Ca me donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Objet Response erreur 'ASP 0106 : 80020005' 
     
    Erreur de type 
     
    /photo/test/default.asp, ligne 20 
     
    Un type de données non pris en charge a été détecté.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set toto = objRecordset.Fields.Item("System.Keywords")
    toto(0)
    Ce me donne ça
    P1010264.JPG

    Erreur d'exécution Microsoft VBScript erreur '800a01c2'

    Nombre d'arguments ou affectation de propriété incorrects: 'toto'

    /photo/test/default.asp, ligne 24

    Apres, j'ai bien cherché dans MSDN, mais le problème c'est chercher quoi

    Je vais essayer de voir sur le forum de developpeur WDS de Ms.

    Je repasserai si on me donne une réponse la bas

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Apres, j'ai bien cherché dans MSDN, mais le problème c'est chercher quoi
    Bah la description des arguments et de methodes de l'objet recordset, et plus précisement de fields, et de item.

    Edit :
    Je t'ai retrouvé http://forums.microsoft.com/MSDN/Sho...91446&SiteID=1

    Edit2 :
    j'ai fait une recherche et je n'ai pas trouvé grand chose, sauf une chose, tu sembles être le seul dans le monde à faire : Item("System.Keywords")

    Voici quelques liens :
    http://support.microsoft.com/kb/166277
    http://www.microsoft.com/technet/scr...6/hey0504.mspx
    http://msdn2.microsoft.com/en-us/library/ms974559.aspx
    http://www.tek-tips.com/viewthread.c...435847&page=10

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 10
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Bah la description des arguments et de methodes de l'objet recordset, et plus précisement de fields, et de item.

    Edit :
    Je t'ai retrouvé http://forums.microsoft.com/MSDN/Sho...91446&SiteID=1

    Edit2 :
    j'ai fait une recherche et je n'ai pas trouvé grand chose, sauf une chose, tu sembles être le seul dans le monde à faire : Item("System.Keywords")

    Voici quelques liens :
    http://support.microsoft.com/kb/166277
    http://www.microsoft.com/technet/scr...6/hey0504.mspx
    http://msdn2.microsoft.com/en-us/library/ms974559.aspx
    http://www.tek-tips.com/viewthread.c...435847&page=10

    j'avais remarqué que j'était le seul
    Mais c'est vrai que j'ai pas trouvé d'autre solution pour lister l'ensemble des tags des images ...

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    si je te faisais remarquer cela c'est juste pour mettre en cause l'existence d'une clé system.keywords.
    Si la clé n'existe pas, mais que la fonction te renvois quand même un tableau, je crois que ton erreur peut survenir.

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/10/2012, 13h45
  2. Windows desktop search sdk et l'indexation
    Par Goulutor dans le forum Windows
    Réponses: 2
    Dernier message: 06/10/2009, 13h42
  3. Windows Desktop Search, mise en place
    Par GabSeco dans le forum Windows XP
    Réponses: 0
    Dernier message: 28/11/2007, 11h41

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