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

ASP.NET Discussion :

[VB.NET] Pb sur update à partir champs Textbox


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 71
    Points : 59
    Points
    59
    Par défaut [VB.NET] Pb sur update à partir champs Textbox
    Bonjour à tous,

    j'ai un problème sur la mise à jour d'une ligne d'une table à partir des Textbox d'un formulaire (les données saisies restent inchangées, bien que la requete se soit déroulée : elle reprend en fait les valeurs affichées initialement et pas celles nouvellement saisies.

    j'affiche les données (sur le Page_Load)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ... init connection, etc...        
    Dim ds As New DataSet
     
            daCust.Fill(ds, "unFormateur")
     
            nom.Text = ds.Tables("unFormateur").Rows(0).Item("nom")
            prenom.Text = ds.Tables("unFormateur").Rows(0).Item("prenom")
                ... etc pour tous les champs...
    tout s'affiche correctement

    je met à jour :

    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
           Dim sql As New StringBuilder("update formateur ")
            sql.Append("set nom = @par0,")
            ...
            sql.Append("email = @par7 ")
            sql.Append("where id_formateur =  " + idFormateur)
     
            Dim c As New SqlCommand(sql.ToString(), SqlConnection1)
            c.Parameters.Add(New SqlParameter("@par0", nom.Text))
            ...
            ... etc pour tous les paramètres
            SqlConnection1.Open()
            Dim nb As Integer
            nb = c.ExecuteNonQuery()
     
            SqlConnection1.Close()
    et nb est bien à 1 !

    Merci pour vos conseils

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 71
    Points : 59
    Points
    59
    Par défaut
    il ne faut quand même pas que j'écrive pour chaque contrôle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim nomf = Request.QueryString("nom")
    et que j'applique la procédure du dessus avec ces nouvelles variables ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 71
    Points : 59
    Points
    59
    Par défaut
    après de nombreux tests je ne vois que cette solution.

    voir aussi pb data binding
    http://www.developpez.net/forums/viewtopic.php?t=187027

  4. #4
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Et si tu essayais de faire un

    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
     
     
    if ( !IsPostBack )
    {
     
    ... init connection, etc...        
    Dim ds As New DataSet 
     
            daCust.Fill(ds, "unFormateur") 
     
            nom.Text = ds.Tables("unFormateur").Rows(0).Item("nom") 
            prenom.Text = ds.Tables("unFormateur").Rows(0).Item("prenom") 
                ... etc pour tous les champs...
     
    }
    dans ton Page_Load ?

    In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 71
    Points : 59
    Points
    59
    Par défaut
    oui, tu as raison, c'est ce que j'avais fait au départ et çà marche.

    Mais ensuite, après mise à jour par l'utilisateur et retour du formulaire par le click sur un bouton Valider, mon nom.Text ne prend pas la nouvelle valeur saisie, mais conserve l'ancienne.

    Sauf dans le cas Creation : je n'initialise pas les textBox, et là çà marche...

    et le Request.QueryString["nom"] ne marche pas non plus...je craque...

  6. #6
    Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Même problème avec un code semblable enfin moi j'utilise une procédure stockée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CmdUpdateProduitGen.CommandText = "UpdateProduit"
            Dim ParamIDProduit As Data.SqlClient.SqlParameter = CmdUpdateProduitGen.Parameters.Add("@IDProduit", Data.SqlDbType.Int)
            ParamIDProduit.Value = Request.QueryString("IDP")
            Dim UpdateNom As Data.SqlClient.SqlParameter
            UpdateNom = CmdUpdateProduitGen.Parameters.Add("@Nom", Data.SqlDbType.NVarChar, 2000)
            UpdateNom.Value = TextBox1.Text
    ...
    Connexion.Open()
    CmdUpdateProduitGen.ExecuteNonQuery()
    Textbox1.Text recoit la valeur qui lui est donné au PageLoad et ne prend pas la valeur modifiée. Du coup la requête fait un update mais avec les valeur d'origine donc inutile.
    Donc pas de solution visiblement ? Comment je peux faire, il faut bien que je le fasse cet update.

    Merci

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

Discussions similaires

  1. Trigger sur update d'un champ
    Par Fused dans le forum Développement
    Réponses: 3
    Dernier message: 05/08/2009, 19h45
  2. UPDATE d'un champs à partir d'une autre table
    Par choupeo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/12/2007, 14h50
  3. Réponses: 4
    Dernier message: 01/07/2007, 12h59
  4. [vb.Net] Click sur un champ dans DataGrid
    Par More dans le forum Windows Forms
    Réponses: 8
    Dernier message: 06/03/2007, 11h35
  5. [ADO.Net][VB.Net] Comment réaliser un Update via un champ de saisie ?
    Par nazimb dans le forum Accès aux données
    Réponses: 25
    Dernier message: 15/05/2006, 14h10

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