none
recherche et recuperation de données .. RRS feed

  • Question

  • Bonjour Guillaume,

     

    de retour

     

    j'aimerai te demander par rapport un sujet, je m'explique:

     

    sur un formulaire j'ai deux texBox (Nom, prenom, Numerotel) qui ont un lien avec une table sur un BDD avec les champs s'y referent à savoir (ID, Nom, Prenom, Numtel).

     

    pour la création je n'ai pas de soucis je traite ce sujet la sans problème, par contre ce que je veux faire, c'est metttre en place une recherche par Nom et si celui la existe sur ma Table, les infos "prenom" et "Numero telephone" se charge aussi donc en gros je voudrai faire un Update quoi.

     

    comment dois-je porocéder ??

     

    merci pour ton retour

     

    Alexy..

    jeudi 5 juin 2008 13:28

Réponses

  • Bonjour,

    Dans un premier temps quelle base de données utilisez vous ?

     

    Concernant votre formulaire, voulez vous que l'utilisateur rentre ses infos comme pour un insert et que si le nom existe déjà un update soit fait au lieu d'un insert ?

    Si c'est le comportement que vous voulez, je vous le déconseillerai car pour la mise à jour il vaut mieux forcer l'utilisateur à choirir les données sur lesquelles il va travailler. En effet prennez le cas suivant :

     

    Vous avez deja en base le nom Dupond. Votre utilisateur veux ajouter la personne Dupont mais fait une faute de frappe et tape Dupond. Vous allez écraser les données et votre utilisateur ne le saura pas ! Et même dans le cas ou vous lui précisez à la fin que les données ont été mises à jour et non ajoutées, il sera trop tard pour revenir en arrière.

     

    De manière générale, ce que l'on fairait c'est afficher sur une page d'administration la liste de toutes les personnes dans la bases avec pour chaque personne une options d'édition ou de suppression. Et ailleurs dans la page un bouton pour ajouter une personne permettant d'afficher un formulaire d'ajout.

    jeudi 5 juin 2008 14:54
  • Bonjour,

    Désolé pour la réponse tardive mais je suis débordé.

    Pour votre premier cas, même formulaire pour l'ajout et la mise à jour, ce que vous pouvez faire c'est :

    • ajouter un handler sur le TextChanged de votre TextBox nom (ne pas oublier AutoPostBack = true).
    • dans le handler vous faite une requête en base pour voir s'il existe un enregistrement avec le nom spécifié.
      • si oui, vous stocké dans le ViewState["DataId"], par exemple, l'id de l'enregistrement et vous mettez à jour vos autres TextBox
      • si non, vous vidé votre ViewState["DataId"]
    • lors du clic sur le bouton, vous regardez ViewState["DataId"], s'il est null vous faite un INSERT sinon vous faite un UPDATE.

     

    mardi 10 juin 2008 08:30
  • Bonjour,

    Le ViewState est un dictionnaire d'objet lié par une clé sous forme de chaine. Les données du ViewState sont écrites dans un champs input de type hidden et sont donc accessible après un postback sur la même page.

    On écrit généralement une propriété pour accéder à chaque données que l'on veut mettre dans le ViewState :

     

    Code Snippet

    private int UserId

    {

    get

    {

    // récupère la valeur dans le ViewState (null s'il n'y a pas de valeur)

    object value = this.ViewState["Id"];

    if (null != value)

    {

    // retourne la valeur du ViewState

    return (int)value;

    }

     

    // valeur par défaut

    return int.MinValue;

    }

    set

    {

    // ajoute dans le ViewState

    this.ViewState["Id"] = value;

    }

    }

     

     

     

     

    samedi 14 juin 2008 06:43

Toutes les réponses

  • Bonjour,

    Dans un premier temps quelle base de données utilisez vous ?

     

    Concernant votre formulaire, voulez vous que l'utilisateur rentre ses infos comme pour un insert et que si le nom existe déjà un update soit fait au lieu d'un insert ?

    Si c'est le comportement que vous voulez, je vous le déconseillerai car pour la mise à jour il vaut mieux forcer l'utilisateur à choirir les données sur lesquelles il va travailler. En effet prennez le cas suivant :

     

    Vous avez deja en base le nom Dupond. Votre utilisateur veux ajouter la personne Dupont mais fait une faute de frappe et tape Dupond. Vous allez écraser les données et votre utilisateur ne le saura pas ! Et même dans le cas ou vous lui précisez à la fin que les données ont été mises à jour et non ajoutées, il sera trop tard pour revenir en arrière.

     

    De manière générale, ce que l'on fairait c'est afficher sur une page d'administration la liste de toutes les personnes dans la bases avec pour chaque personne une options d'édition ou de suppression. Et ailleurs dans la page un bouton pour ajouter une personne permettant d'afficher un formulaire d'ajout.

    jeudi 5 juin 2008 14:54
  •  

    merci Guillaume,

     

    je vais pour un premier lieu choisir la partie:

     

    De manière générale, ce que l'on fairait c'est afficher sur une page d'administration la liste de toutes les personnes dans la bases avec pour chaque personne une options d'édition ou de suppression. Et ailleurs dans la page un bouton pour ajouter une personne permettant d'afficher un formulaire d'ajout.

     

    est-ce que tu peux me donner un exemple très simple dessus ??

     

    merci encore

     

    Alexy

    jeudi 5 juin 2008 15:49
  • Bonjour,

    Pour ce qui est d'afficher, éditer et supprimer les données existantes il n'y a rien de plus simple :

    • Vous mettez sur votre page un GridView en activant l'édition et la suppression au moins.
    • Vous ajoutez une SqlDataSource en la configurant sur votre table et en n'oubliant pas dans choisir de générer les commandes insert, update et delete (bouton advanced dans l'écran de sélection de table).
    • Vous spécifié comme DataSource de votre GridView cette DataSource.

    Le problème est que la GridView ne permet pas par défaut d'ajouter des données. Vous avez 2 solutions :

    Tout ce fait via le designer avec des wizard assez explicite.

    vendredi 6 juin 2008 07:30
  •  

    Merci Guillaume,

     

    et si on discutait du premier cas ??

     

    je veux dire une simple recherche par nom et si l'enregistrement existe le reste de ses infos s'affiche sur les champs qui restent(prenom et Numero telephone).

     

    si tu as un exemple dessus stp ??

     

    merci

     

    Alexy

    vendredi 6 juin 2008 23:25
  • Bonjour,

    Désolé pour la réponse tardive mais je suis débordé.

    Pour votre premier cas, même formulaire pour l'ajout et la mise à jour, ce que vous pouvez faire c'est :

    • ajouter un handler sur le TextChanged de votre TextBox nom (ne pas oublier AutoPostBack = true).
    • dans le handler vous faite une requête en base pour voir s'il existe un enregistrement avec le nom spécifié.
      • si oui, vous stocké dans le ViewState["DataId"], par exemple, l'id de l'enregistrement et vous mettez à jour vos autres TextBox
      • si non, vous vidé votre ViewState["DataId"]
    • lors du clic sur le bouton, vous regardez ViewState["DataId"], s'il est null vous faite un INSERT sinon vous faite un UPDATE.

     

    mardi 10 juin 2008 08:30
  • Bonjour Guillaume,

     

    merci pour ces precisions, ceci dit je n'ai jamais utilisé de ViewState, peux-tu me faire un petit aperçu Stp ?? un petit exemple si possible..

     

    merci

     

    Alexy..

    vendredi 13 juin 2008 22:01
  • Bonjour,

    Le ViewState est un dictionnaire d'objet lié par une clé sous forme de chaine. Les données du ViewState sont écrites dans un champs input de type hidden et sont donc accessible après un postback sur la même page.

    On écrit généralement une propriété pour accéder à chaque données que l'on veut mettre dans le ViewState :

     

    Code Snippet

    private int UserId

    {

    get

    {

    // récupère la valeur dans le ViewState (null s'il n'y a pas de valeur)

    object value = this.ViewState["Id"];

    if (null != value)

    {

    // retourne la valeur du ViewState

    return (int)value;

    }

     

    // valeur par défaut

    return int.MinValue;

    }

    set

    {

    // ajoute dans le ViewState

    this.ViewState["Id"] = value;

    }

    }

     

     

     

     

    samedi 14 juin 2008 06:43
  •  

    Bonjour Guillaume,

     

    désolé de t'importuner mais j'ai fait quelques recherches sur le net concernant l'utilisation du Viewstate et franchement je n'arrive pas à saisir comment l'utiliser et quand le faire aussi.

     

    ton exemple m'est un peu flou, est-ce que tu peux l'appliquer à ma requête et me donner quelques détails pour chaque partie d'instruction ??

     

    je te remercie

     

    Alexy..

    mardi 17 juin 2008 09:31
  • Bonjour Guillaume,

     

    j'attends toujours ta réponse, je sais que tu es très occupé ces temps-ci, je compte sur toi une fois que tu as un peu de temps libre.

     

    merci encore

     

    Alexy..

    dimanche 22 juin 2008 16:57