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

VB.NET Discussion :

[VB.NET] Indexing Service


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 19
    Par défaut [VB.NET] Indexing Service
    Bonjour,

    J'arrive à parcourir et récupérer les différents catalogues présents dans le service d'indexation de Windows mais je n'arrive pas à récupérer les différents répertoires qui leur sont associés. J'ai tenté plusieurs choses grâce à la classe CIODMLib.ICatAdm mais je ne vois pas comment accéder aux répertoires des catalogues en vb.net. Quelqu'un aurait-il une idée ?

    Je souhaite juste afficher une liste des répertoires pour chaque catalogue.

    Merci pour vos réponses

  2. #2
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 19
    Par défaut
    J'ai finalement réussi à trouver, voila mon code si ça intéresse quelqu'un (je retourne les résultats sous la forme d'un DataSet) :

    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
    34
    35
    36
    37
    38
    39
    40
    41
     
    ''' <summary>
        ''' Retourne la liste des répertoires du catalogue
        ''' </summary>
        ''' <returns></returns>
        Public Function LoadAllDirectory() As DataSet
     
            Dim isFoundDirectory As Boolean = oICatAdm.FindFirstScope()
            Dim dsDirectories As New DataSet
            Dim ligne As DataRow
     
            'création d'une table dans le dataset
            dsDirectories.Tables.Add()
     
            'création des différentes colonnes de la table
            dsDirectories.Tables(0).Columns.Add("RepertoirePhysique", GetType(String))
            dsDirectories.Tables(0).Columns.Add("TailleRepertoirePhysique", GetType(Long))
     
            While isFoundDirectory
     
                ligne = dsDirectories.Tables(0).NewRow
     
                Dim scope As New CIODMLib.ScopeAdm
                scope = CType(oICatAdm.GetScope, CIODMLib.ScopeAdm)
     
                Dim chemin As String = scope.Path
     
                'on récupère les infos du catalogue trouvé
                Dim oDirectory As New CDirectory(chemin)
     
                ligne("RepertoirePhysique") = oDirectory.RepertoirePhysique
                ligne("TailleRepertoirePhysique") = oDirectory.TailleRepertoirePhysique
                'Debug Pour vérifer les propriétés
                'on ajoute les infos du site web dans une ligne de la table
                dsDirectories.Tables(0).Rows.Add(ligne)
                isFoundDirectory = oICatAdm.FindNextScope()
            End While
     
            Return dsDirectories
     
        End Function

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 30
    Par défaut
    Je reprends ce topic même si le problème est différent : Je n'arrive pas à faire de requête sur un catalogue pointant sur un serveur distant.

    Voilà sur quoi point le catalogue appelé "Test3" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \\Serveur\Repertoire$\Projets
    Donc dans mon code, j'écris ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            Private MonoleDbSelectCommand1 As New System.Data.OleDb.OleDbCommand
                    Private MondbAdapter As New System.Data.OleDb.OleDbDataAdapter
                    Private MadbConnection As New System.Data.OleDb.OleDbConnection
                    Private MaDataTable As New DataTable                                        
                    MondbAdapter.SelectCommand = MonoleDbSelectCommand1
                    MonoleDbSelectCommand1.Connection = MadbConnection
                    MadbConnection.ConnectionString = "Provider=MSIDXS.1;Data Source=Test3"
                    SQLSettingDir = "SELECT path FROM SCOPE() ORDER BY path"
                    MondbAdapter.SelectCommand.CommandText = SQLSetting
                    MondbAdapter.Fill(MaDataTable)
    Mais voilà, que je mette dans le Scope() :

    - """"
    - ""/"" (ainsi que //, \, \\ ...)
    - ' DEEP TRAVERSAL OF ""\"" '
    - ' DEEP TRAVERSAL OF ""\\"" '
    - ' DEEP TRAVERSAL OF ""/"" '
    - ' DEEP TRAVERSAL OF ""//"" '
    Rien ne fonctionne, à chaque fois le MondbAdapter.Fill(MaDataTable) me balance une exception.

    Peut être que quelqu'un a une solution sur ce problème où je bloque assez stupidement.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 30
    Par défaut
    Ok, j'ai fais des tests à partir d'un serveur lié sous SQL Server, et quand j'exécute une requête distribuée de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
    FROM OPENQUERY( SERVDIST1, 
       'SELECT path, FileName, Size, docauthor
        FROM SCOPE('' "\" '') ')
    Ca me renvoie un résultat !

    Mais dès que je rajoute un nom de répertoire après le '\', plus aucun résultat (mais pas d'erreur), alors que je fais pointer mon catalogue sur plusieurs répertoires : Clients, Modèles, etc...

    Comment pourrait-on dans ce cas utiliser le scope pour pouvoir naviguer dans les répertoires ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 30
    Par défaut
    Enfin ! Après pas mal de test, il semblerais qu'un alias UNC soit créé par défaut, celui correspond au chemin du serveur réseau soit un chemin de type :

    \\nomserveur\rép\etc...

    Donc la véritable requête serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
    FROM OPENQUERY( SERVLIEE, 
       'SELECT path, FileName, Size, docauthor
        FROM SCOPE('' SHALLOW traversal of "\\NomServ\NomRep\NomSousRep\" '') ')

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 30
    Par défaut
    Bon ben je me sens un peu seul moi^^

    Je viens une autre question complètement différente mais toujours concernant l'indexing service :

    Peut-on utiliser "hierarchical traversal of ..." avec Indexing Service ? Parce que dès que j'essaye d'exécuter une requête contenant ce type d'exploration, une exception me retourne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Syntaxe incorrecte à côté de 'h'. '(', DEEP_TRAVERSAL, SHALLOW_TRAVERSAL, URL attendu. SQLSTATE=42000
    ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/02/2007, 09h44
  2. [VB.NET][WindowsForm][Service Win.]msgbox
    Par jj del amorozo dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/11/2006, 08h23
  3. [VB.NET] accès service web en tâche de fond
    Par olivier57b dans le forum VB.NET
    Réponses: 1
    Dernier message: 25/09/2006, 16h02
  4. Réponses: 1
    Dernier message: 01/06/2006, 21h22
  5. [Vb.net] Indexé un objet crée dans une boucle
    Par picpic dans le forum Windows Forms
    Réponses: 10
    Dernier message: 17/12/2003, 14h37

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