1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur logiciel en formation
    Inscrit en
    février 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur logiciel en formation
    Secteur : Biens de consommation

    Informations forums :
    Inscription : février 2016
    Messages : 9
    Points : 9
    Points
    9

    Par défaut Requete SQL sur une donnée XML

    Bonjour à tous,

    Actuellement en stage suite à une formation de développeur logiciel que j'ai suivi au centre AFPA de ma commune, j'ai une difficulté liée à la base de données sur laquelle je travaille actuellement.

    Contexte du projet :

    Je travaille pour une grande entreprise qui propose à ses équipes en succursale d'utiliser une tablette tactile avec des modèles prédéfinies de prise d'informations via des formulaires.
    La personne en charge de mettre en forme ces modèles utilise un logiciel d'un prestataire (non développé chez nous) qui consiste à faire du "drag & drop" de boutons et autres menu déroulants sur une "page" prévue à cet effet.

    Lorsque le technicien en charge de celà décide de faire des modifications sur un modèle existant ou déjà crée, celà peut engendrer des modifications sur plusieurs formulaires non souhaités, et, lors de la mise en prod, les équipes en succursale trouvent des bugs lors de l'utilisation de leur tablette (bouton associé à rien du tout, formulaire inutile sur un modèle en particulier...).

    BUT :

    C'est là ou j'interviens.
    On m'a demandé de concevoir une application web permettant de lister les modèles sur lesquels il y a eu des modifications, mais aussi les formulaires impactés par la modification.
    Ainsi, le technicien choisira le ou les formulaires sur lesquels il souhaite que la modification se fasse ou non avant mise en production.

    DIFFICULTES TECHNIQUES :
    Ces modèles et formulaires sont enregistrés dans une base de données comprenant les champs suivants : Id, Name, Content. (table Template et table Form).
    Le champs Content prend des informations directement en XML. Voici à quoi ressemble l'information enregistrée en base de données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <Root><StorageObject Name="OI-GENOUILLERE ODRA-v2" Id="0108f7ac-7853-4543-8ec4-a04cb755ed46" Type="Adviser.Proteor.Library.TemplateImpl"><Properties><Property Name="TimeCreated" Value="27/07/2017 11:14:18" /><Property Name="Enabled" Value="True" /><Property Name="TimePublished" Value="01/01/0001 00:00:00" /><Property Name="TimeLastModified" Value="10/11/2017 09:09:29" /><Property Name="Description" Value="" /><Property Name="ObjectContent" Value="&lt;Template&gt;&lt;Component Type="Adviser.Proteor.Library.TemplateImpl"&gt;&lt;ExtendedProperty Text="OI" Key="Classification" /&gt;&lt;ExtendedProperty Text="35176af2-b664-42d6-a7ba-5d06602b0500" Key="ClassificationId" /&gt;&lt;ExtendedProperty Text="GAO" Key="Activity" /&gt;&lt;ExtendedProperty Text="58d942ea-8cf7-4089-879c-f8633925473b" Key="ActivityId" /&gt;&lt;ExtendedProperty Text="OI 36" Key="AnatomicalLevel" /&gt;&lt;ExtendedProperty Text="76418da5-6830-4a49-aed0-b472c11c67c6" Key="AnatomicalLevelId" /&gt;&lt;ExtendedProperty Text="ORTHESE INF." Key="Type" /&gt;&lt;ExtendedProperty Text="13b33a27-57ce-4009-8812-00f8578982fd" Key="TypeId" /&gt;&lt;Version Version.Major="0" Version.Minor="1" /&gt;&lt;Properties&gt;&lt;Property Name="TimeCreated" Value="27/07/2017 11:14:18" /&gt;&lt;Property Name="Enabled" Value="True" /&gt;&lt;Property Name="TimePublished" Value="01/01/0001 00:00:00" /&gt;&lt;Property Name="TimeLastModified" Value="10/11/2017 09:09:29" /&gt;&lt;Property Name="Description" Value="" /&gt;&lt;/Properties&gt;&lt;Component Type="Adviser.Proteor.Library.StepImpl"&gt;&lt;Properties&gt;&lt;Property Name="FormId" Value="d442dce3-fc1f-49da-92c5-b25d89d76881" /&gt;&lt;Property Name="ValidationMode" Value="None" /&gt;&lt;/Properties&gt;&lt;Component Type="Adviser.Proteor.Library.Impl.Action.Task.OnPageLoadTrigger"&gt;&lt;Properties&gt;&lt;Property Name="PageNumber" Value="1" /&gt;&lt;/Properties&gt;&lt;Component Type="Adviser.Proteor.Library.Impl.Action.Task.SetControlValueTask"&gt;&lt;Properties&gt;&lt;Property Name="Text" Value="{agence}" /&gt;&lt;Property Name="ObjectId" Value="dc20a4e2-46d6-47fe-8c75-bf4d7ff012ba" /&gt;&lt;/Properties&gt;&lt;/Component&gt;&lt;Component Type="Adviser.Proteor.Library.Impl.Action.Task.SetControlValueTask"&gt;&lt;Properties&gt;&lt;Property Name="Text" Value="{win_utilisateur}" /&gt;&lt;Property Name="ObjectId"
    Je ne vous ai pas tout mis, car la donnée est énorme.
    J'ai vu qu'il était possible de faire des requêtes SQL sur ce genre de données, mais je suis perdu... En fouillant dans le code, j'ai trouvé un élément qui est, après investigation, très important pour la suite de mon projet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FormId" Value="d442dce3-fc1f-49da-92c5-b25d89d76881"
    La valeur qui correspond est bien l'Id de la table Form correspondante.
    Mais sans la requête pointant directement sur cet (ces) élement(s) dans le champs Content, je ne pourrai pas afficher ces informations dans mon application web.

    Technologiquement, j'ai fait le choix de travailler en ASP.Net sur Visual Studio et d'utiliser Sql Server Management Studio (l'entreprise ou je travaille est sur Sql Server).
    Mon GridView est prêt avec le SqlCommand qu'il faut mais le principal est encore à faire...

    J'ai besoin d'être orienté, car je vois beaucoup de chose, mais je suis perdu :
    - Dois-je sortir toute la donnée sur un fichier xml à part ?
    - puis-je travailler directement sur cette donnée là ?
    - J'ai vu beaucoup de chose sur le net qui demandait à avoir le namespace. Or, je ne vois rien dans le code qui le précise.

    Bonne journée.

    Cdt,

    Senjin

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Développeur logiciel en formation
    Inscrit en
    février 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur logiciel en formation
    Secteur : Biens de consommation

    Informations forums :
    Inscription : février 2016
    Messages : 9
    Points : 9
    Points
    9

    Par défaut

    Je me permets de rajouter ce lien Google doc qui permet de voir l'intégralité d'une donnée XML dans la base sur laquelle je travaille :

    https://docs.google.com/document/d/1...it?usp=sharing

    Je préfère le rajouter, car je sais que de mettre une partie du code XML n'aide pas forcément les plus aguerris dans le domaine

    Cdt,

    Senjin.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur logiciel en formation
    Inscrit en
    février 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur logiciel en formation
    Secteur : Biens de consommation

    Informations forums :
    Inscription : février 2016
    Messages : 9
    Points : 9
    Points
    9

    Par défaut

    Je me permets d'alimenter de nouveau le sujet, car j'ai eu une suggestion sur Stackoverflow.
    Il est évident que d'avoir stocké toutes ces données dans un champs n'est pas très optimisé. n'ayant pas la main dessus, je ne peux pas modifier la base.

    Est-il possible, selon vous, de passer, non pas par une requête SQL, mais pas du code-behind, à savoir par du C# (ASP.Net).

    Je me suis penché sur le sujet ce matin, et je voulais avoir votre avis là dessus.

    Cdt,

    Senjin.

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/03/2008, 15h26
  2. Requete SQL sur une table dont le nom est dans une autre table
    Par orangepresse dans le forum Langage SQL
    Réponses: 3
    Dernier message: 29/09/2007, 14h32
  3. requet sql sur une BD access
    Par k_boy dans le forum C++/CLI
    Réponses: 1
    Dernier message: 25/09/2007, 17h27
  4. [Vba-Excel] Exécuter une requete SQL sur une feuille de donnée
    Par Spacy_green dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/11/2006, 10h27
  5. Réponses: 23
    Dernier message: 19/09/2006, 12h33

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