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

ADO.NET Discussion :

Mise à jour Auto incrément SqlCe


Sujet :

ADO.NET

  1. #1
    Membre confirmé Avatar de nemo69500
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 639
    Points : 519
    Points
    519
    Par défaut Mise à jour Auto incrément SqlCe
    Bonjour à tous, j'ai besoin d'aide

    Je suis sur un programme en c# framework 4.0 sous visual studio 2010. J'utilise dans mon prog une bdd SqlCe avec un dataset pour la gestion dans le programme.

    Je ne sais pas si je fais les choses correctement mais je charge au démarrage de mon appli toutes les données dans mon dataset en mémoire (à l'aide de table adapter).

    Ma bdd est composé de plusieurs tables avec identifiant auto incrémenté, de relations ainsi que des tables de jonctions (pour les relations n to n)

    Mon problème: Lors d'un premier démarrage de mon prog, je vais faire des ajout dans mon dataset et mettre à jour la bdd à certaines étapes. Les éléments s'ajoute correctement et l'id s'incrémente bien. Si je fais des suppressions de lignes dans mes tables tout beigne aussi. L'id auto ne décrémente pas mais si j'en rajoute à nouveau l'id reprend la ou il s'est arrêté. Si je supprime toutes les lignes ajoutées et que je ferme l'appli, au moment de la réouverture du logiciel, je n'ai aucun ligne à rapatrier dans mon dataset, seulement l'auto incrément de la bdd lui ne démarre plus à 0.

    Cela ne me générai pas si je n'avais pas besoin d'ajouter des lignes avec cette id dans des tables de jonctions pour la "futur" nouvelle ligne.

    Voila, donc en gros, j'essaye de récupérer l'auto incrément d'un champ dans une base sqlce (si possible).

    Je pense que mes explications ne doivent pas être très clair, mais je peux donner plus de précisions par la suite à l'aide de question en fonction des incompréhension de chacun.

    Merci d'avance de vos réponses.

    Par contre
    *************##--##***************
    www.ptichoupi.fr



    Pensez au
    De tmps en tps du repos, ca fais du bien!

    ************//////\\\\\\**************

  2. #2
    Membre expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Points : 3 543
    Points
    3 543
    Par défaut
    Si tu as besoin du numéro auto_incrémenté de la ligne que tu viens de créer, il y a la possibilité de faire SELECT @@IDENTITY; qui te retourne le dernier auto_incrément généré pour la session en cours.

    Maintenant, si tu veux l'avoir avant, il faut regarder du côté des tables systèmes.

    Du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select autoinc_next from information_schema.columns where table_name = 'Nom_Table' and column_name = 'Nom_colonne';
    Maintenant, il faut voir comment appliquer cela au dataset je suppose
    Si ton problème a une solution, rien ne sert de t'inquiéter..
    Si il n'en a pas, t'inquiéter ne sert à rien


  3. #3
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Il est plus recommendé d'utiliser pour plus de précision.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  4. #4
    Membre confirmé Avatar de nemo69500
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 639
    Points : 519
    Points
    519
    Par défaut
    Merci pour vos réponses.

    Le problème est que mon dataset est vide étant donnée qu'il n'y a aucun élément à récupérer avec la méthode fill du tableadapter.

    Sinon, comment utiliser scope_identity() ??
    *************##--##***************
    www.ptichoupi.fr



    Pensez au
    De tmps en tps du repos, ca fais du bien!

    ************//////\\\\\\**************

  5. #5
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Citation Envoyé par nemo69500 Voir le message
    Sinon, comment utiliser scope_identity() ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    insert into table matatble values(......);
    select scope_identity()
    NB: Votre table doit avoir un champ auto-incrémenté.

    Bref tu l'utilise de la même façon.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  6. #6
    Membre confirmé Avatar de nemo69500
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 639
    Points : 519
    Points
    519
    Par défaut
    En faite je pense que nous nous sommes pas compris (ou surement que je me suis mal exprimé )

    Donc, j'utilise une bdd sqlce créé graphiquement avec vs 2K10. J'ai un dataset fortement typé et plusieurs tableadapter que je gère avec un tableadaptermanager.

    Je récupère toutes les données en début d'éxécution en faisant un fill sur chaque tableadapter.

    Imaginons qu'il y est trois tables, une pour les commandes, les produits et une table de jonction pour faire un n to n car un produit peut être dans plusieurs commandes, et une commande peut avoir plusieurs produits.

    J'ouvre une fenetre pour ajouter une commande, donc je crée une nouvelle ligne dans mon dataset dans la table commande. Ensuite dans cette commande j'ajoute deux produits en créant deux lignes dans la table de jonction.

    Le problème se situe à ce niveau. J'arrive à ajouter des lignes dans le dataset mais lorsque je vais faire un update de mon dataset, j'ai une exception qui me dis que je ne retourne pas le bon id dans ma table de jonction car, comme expliquer dans mon premier poste, si j'avais ajouter des lignes, puis en supprimer, puis fermer et réouvrir l'appli, le dernier id de la dernière ligne ajouté n'est pas bon. Et etant donnée que je n'ajoute la ligne "commande" en bdd qu'après avoir ajouté les produits, je n'ai pas le bonne id en bdd.

    Voila, c'est un peu tendu à expliquer.

    Donc en gros je ne sais pas récupérer mon dernier id.

    Pour la ligne que vous me proposez scope identity, je ne sais pas où l'éxécuter étant donnée que j'utilise des tableadapter.

    Merci de votre aide
    *************##--##***************
    www.ptichoupi.fr



    Pensez au
    De tmps en tps du repos, ca fais du bien!

    ************//////\\\\\\**************

Discussions similaires

  1. retirer l'alerte de mise à jour auto
    Par gretch dans le forum Windows XP
    Réponses: 2
    Dernier message: 09/10/2006, 09h35
  2. Mise à jour auto d'un site web, comment ?
    Par 123quatre dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 27/08/2006, 19h38
  3. Mise à jour auto MIDlet possible ?
    Par infotron dans le forum Java ME
    Réponses: 7
    Dernier message: 27/07/2006, 14h18
  4. [MS-DOS] Une commande DOS pour activer les mises à jour auto
    Par Furius dans le forum Scripts/Batch
    Réponses: 20
    Dernier message: 02/12/2005, 16h21
  5. Mise à jour auto champs date
    Par rodrigue50 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/07/2005, 17h03

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