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

Développement SQL Server Discussion :

Comment trouvé ID d'une donnée


Sujet :

Développement SQL Server

  1. #1
    Membre éclairé Avatar de isarian
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 268
    Par défaut Comment trouvé ID d'une donnée
    VOila mon problème je ne vois pas comment faire.

    Je suis preneur de tout idée qui me permettrais de resoudre mon soucis qui est le suivant.


    J'ai une procédure stocké en sql server 2005
    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
    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go
     
    ALTER PROCEDURE [dbo].[SauverFichier] 
    	@FichierId int,@Date Smalldatetime, 	@FichierData varbinary(max),
    	@TypeModification int
    AS
    BEGIN
     
    	SET NOCOUNT ON;
     
    	INSERT INTO ModificationFichiers(FichierId,Date, FichierData, TypeModification)
    	VALUES(1,@date, @FichierData, @TypeModification); 
     
    END
    alors elle sauve un fichier qui a été modifié dans la db. L'application qui appel cette procédure, vérifie les changement d'un fichier si celui ci est modifié, il fait appel a ma procédure pour l'ajouter dans la db. Mais Voila, je viens à mon problème, le fichier modifié on ne connait pas l'Id. Donc j'ai dois avoir une autre procédure qui me donne l'Id Suivant le chemin du fichier.

    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
    SET ANSI_NULLS ON
    SET QUOTED_IDENTIFIER ON
    GO
     
    CREATE PROCEDURE GetIdFichier
    @FichierPath varchar(1024)
     
    AS
    SELECT FichierId, 
    		FichierNom,
    		FichierExtension,
    		RepertoireId,
    		FichierType
    From Fichiers
    Where (Fichiers.FichierPath= @FichierPath)

    Mais voila pour la procédure Stocké comment lui donné l'id du fichier?

    Je ne sais pas si j'ai bien été clair?

    Merci d'avance

  2. #2
    Membre expérimenté
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2007
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 193
    Par défaut
    j'ai survolé, j'avoue

    mais si l'id du fichier correspond a l'id de la db ou au nom de la db

    Tu as les 2 fonctions transact-sql
    Qui sans paramètre te renverrons la valeur de la db sur laquelle tu travailles, avec un paramètre te renverront l'id ou le nom de la db concernée

  3. #3
    Membre éclairé Avatar de isarian
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 268
    Par défaut
    le problème pour moi, c'est que je ne sais pas quel id du fichier je travail.

    J'utilise sqlserver 2005, et je programme en visual studio 2005.

    L'application utilise le FileSystemWatcher, avec event sur modifier, creer, effacer et sur renomer.

    donc n'importe quel fichier de mon dossier peuvent etre modifier.

    donc comment l'application pourrait elle donner le fichier, si elle ne connait son id. donc avant de transmettre le fichier elle doit connaitre son ID, id fourni donc par une procedure stocké. Mais comment?

  4. #4
    Membre expérimenté
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2007
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 193
    Par défaut
    valeur de retour de la procédure stockée, paramètre output de la procédure stockée autrement.

    Vous pouvez aller voir le code de la procédure stockée si ça en est une. Je n'ai plus le nom de la fonction qui renvoit cette valeur, c'est sp_prochelp ou qqch du genre

  5. #5
    Membre éclairé Avatar de isarian
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 268
    Par défaut
    je suis un peu perdu la

    d'autre information?

    Merci

  6. #6
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Par défaut
    Salut pour moi tu devrais jouer avec la fonction newid(),

    Tu dois pour cela dans ta table "FICHIER" ajouter une entité appelée "rowguid" avec le type de donnée "uniqueidentifier"

    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DECLARE @id VARCHAR(5000)
    SET @id=newid()
    INSERT INTO fichier (@FichierNom,@FichierExtension,@RepertoireId,@FichierType,@id)
    Comme ca a chaque fichier rajouté dans la table "FICHIER" appartiendra un id unique



    dans ta premiere procédure il faut l'appelé avec l'id créé juste avant

    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
     
    SET ANSI_NULLS ON
    SET QUOTED_IDENTIFIER ON
    go
     
    ALTER PROCEDURE [dbo].[SauverFichier] 
    	@Id VARCHAR(5000),@Date Smalldatetime, 	@FichierData varbinary(max),
    	@TypeModification int
    AS
     
    BEGIN
     
    	SET NOCOUNT ON;
     
    	INSERT INTO ModificationFichiers(FichierId,Date, FichierData, TypeModification,rowguid)
    	VALUES(1,@date, @FichierData, @TypeModification,@id); 
     
    END
    il faut donc rajouter une entité dans ta table "Modificationfichiers" appelée "rowguid" avec le type de donnée "uniqueidentifier"

    et dans ta 2 eme procédure appelé avec toujour la meme id (@id):

    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
     
    SET ANSI_NULLS ON
    SET QUOTED_IDENTIFIER ON
    GO
     
    CREATE PROCEDURE GetIdFichier
    @FichierPath varchar(1024)
    @id VARCHAR(5000)
     
    AS
    SELECT 		FichierNom,
    		FichierExtension,
    		RepertoireId,
    		FichierType,
                              id
    FROM Fichiers
    WHERE (id= @id)

  7. #7
    Membre éclairé Avatar de isarian
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 268
    Par défaut
    Citation Envoyé par Thecr0w Voir le message
    Salut pour moi tu devrais jouer avec la fonction newid(),

    Tu dois pour cela dans ta table "FICHIER" ajouter une entité appelée "rowguid" avec le type de donnée "uniqueidentifier"

    par exemple :

    Code :

    DECLARE @id VARCHAR(5000)
    SET @id=newid()
    INSERT INTO fichier (@FichierNom,@FichierExtension,@RepertoireId,@FichierType,@id)
    Comme ca a chaque fichier rajouté dans la table "FICHIER" appartiendra un id unique
    Je m'excuse mais dans ma table fichier, (oui j'ai pas préciser) j'ai un id FichierID qui est auto incrementer, je pense donc que ceci n'est pas utile? ou je suis obligé de le signaler avec la requete?


    je me pose assez bien de question concernant ma table. (un fichier renomer et effacer comment cela va etre gerer mais ceci j'y penserais apres) la j'essaie deja de voir avec un evenement modifier et un event creer.

    Dans ma table fichier , j'ai un ID, nom, datecreation.. l'id est unique auto incrementer pour chaque fichier enregistrer.

    Dans la table modification idmodifi, id du fichier et les donné du fichier et typedelamodification.

  8. #8
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Par défaut
    je n'arrive pas a voir qu'elle travail tu dois faire.

    En gros un utilisateur enregristre un fichier

    puis le modifie

    c'est ca?

  9. #9
    Membre éclairé Avatar de isarian
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 268
    Par défaut
    l'application est la suivant,
    Un backup restore.
    Donc l'application surveille un dossier, il voit un fichier qui est creer, modifier, renommer ou effacer il place la modification dans la table avec le fichier en question (c'est une obligation de mettre le fichier dans la db ) et pouvoir par la suite choisir un fichier et restorer suivant la date, la modification ou autre .

    et le probleme que j'ai actuelement c'est de voir l'id du fichier modifier.

    c'est un test mais je ne sais pas comment quand le faire.

  10. #10
    Membre éclairé Avatar de isarian
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 268
    Par défaut
    Voila j'ai un peu avancer, j'ai fait une procédure qui doit me renvoyer l'id du fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go
     
     
     
    ALTER PROCEDURE [dbo].[GetIdFichier]
    @FichierPath varchar(1024)
     
    AS
    SELECT FichierId
    From Fichiers
    Where (Fichiers.FichierPath= @FichierPath)
    dans mon application j'ai une méthode
    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
     public void GetIdFichier(string chemin)
            {
                SqlConnection myConnection = new SqlConnection(connectionString);
                SqlCommand myCommand = myConnection.CreateCommand();
                try
                {
                    myConnection.Open();
                    myCommand.CommandText = "GetIdFichier";
                    myCommand.CommandType = CommandType.StoredProcedure;
     
                    SqlParameter FichierPath = new SqlParameter();
                    FichierPath.ParameterName = "@FichierPath";
                    FichierPath.SqlDbType = SqlDbType.VarChar;
                    FichierPath.Value = chemin;
                    myCommand.Parameters.Add(FichierPath);
     
                    myCommand.ExecuteNonQuery();
                }
     
                catch (Exception ex)
                {
                    Console.WriteLine("erreur" + ex);
                }
                finally
                {
                    myConnection.Close();
                }
    Mais honte a moi dans la procédure stocké dois je metter autre chose pour lui dire que la valeur Getidfichier doit etre renvoyer dans mon application pour que je puisse l'utiliser ailleur? Ou que dois je faire dans mon application? (je suppose que ce post aurais plutot sa place dans le forum C# donc si besoin pouvez le deplacer) Merci D'avance

Discussions similaires

  1. help gdb, comment le contenu d'une donnée
    Par razam dans le forum Linux
    Réponses: 0
    Dernier message: 27/11/2009, 15h06
  2. Réponses: 1
    Dernier message: 05/04/2008, 21h03
  3. Comment faire pour remplacer une donnée Null par une autre.
    Par Dpedrosa dans le forum Général VBA
    Réponses: 1
    Dernier message: 09/03/2008, 11h25
  4. Réponses: 2
    Dernier message: 28/10/2005, 12h52
  5. Comment faire pour récup une donnée d'une liste déroulante
    Par magic8392 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 03/03/2005, 15h00

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