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] Variable integer qui reset toujours a 0 [Débutant]


Sujet :

ASP.NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 7
    Points : 5
    Points
    5
    Par défaut [VB.NET] Variable integer qui reset toujours a 0
    Bonjour
    Bon voilà, j'utilise une variable int pour n'aviguer dans les rows d'un dataset d'une requête SQL, quand j'appelle ma fonction qui fait i = i + 1, et bien quand la page load mon i redevient 0 à tout les coup, donc quand j'appuie sur le boutton suivant, il va toujours checher la rows(1) de mon dataset. Voici mon code :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    Imports System.Data.SqlClient
     
    Partial Public Class _Default
        Inherits System.Web.UI.Page
        Private Con As SqlConnection
        Private Cmd As SqlCommand
        Private Da As SqlDataAdapter
        Private Ds As DataSet
        Private results As String
        Private i As Integer
     
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Con = New SqlConnection("Data Source = CNTNGSOEAMS1\SqlExpress; Initial Catalog = Centraide; Integrated Security = SSPI;")
            Cmd = New SqlCommand("Select * from employe where Matricule like '" & TextBox1.Text & "%'", Con)
            Da = New SqlDataAdapter(Cmd)
            Ds = New DataSet()
     
            Da.Fill(Ds)
        End Sub
     
        Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
            change_i(0)
            Aff_Emp()
        End Sub
        Protected Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
            change_i(1)
            Aff_Emp()
        End Sub
        Protected Sub Button3_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button3.Click
            change_i(-1)
            Aff_Emp()
        End Sub
        Public Sub Aff_Emp()
            If Ds.Tables(0).Rows.Count > 0 Then
                TextBox2.Text = Ds.Tables(0).Rows(i).Item(0)
                TextBox3.Text = Ds.Tables(0).Rows(i).Item(1)
                TextBox4.Text = Ds.Tables(0).Rows(i).Item(2)
            End If
        End Sub
     
        Public Sub change_i(ByVal _i As Integer)
            If _i = 0 Then
                i = 0
            ElseIf _i = 1 Then
                i = i + 1
            ElseIf _i = -1 Then
                If i > 0 Then
                    i = i - 1
                End If
            End If
        End Sub
     
     
    End Class
    Merci de m'aider

  2. #2
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Plusieurs choses ne vont pas dans ton code...
    Renseignes toi sur le cycle de vie des pages Asp.Net :
    Tu recharges tes données à chaque passage dans le Page_Load. Or, tu passes (et c'est normal) dans ce Load avant de rentrer dans les events de tes boutons.
    Il faut que tu recharges tes données seulement si tu n'est pas dans un Postback
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If Not IsPostBack Then
    Con = New SqlConnection("Data Source = CNTNGSOEAMS1\SqlExpress; Initial Catalog = Centraide; Integrated Security = SSPI;")
    Cmd = New SqlCommand("Select * from employe where Matricule like '" & TextBox1.Text & "%'", Con)
    Da = New SqlDataAdapter(Cmd)
    Ds = New DataSet()
     
    Da.Fill(Ds)
    End If
    D'autre part, en construisant ta requête comme tu le fais, ta page est sensible aux injections SQL... Pas tip top niveau sécurité.
    Utilise les requêtes paramétrées.

    Enfin, stockes ta chaine de connexion dans un fichier de configuration et accèdes-y via la classe ConfigurationManager. Ca t'évitera de l'exposer dans ton code et de devoir la retaper à chaque fois

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Depuis que j'ai mis If Not IsPostBack Then dans mon Page_Load j'ai l'erreur suivante n'importe ou quand j'utilise une des variable du Page_Load :

    Object reference not set to an instance of an object.
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

    Source Error:


    Line 35: End Sub
    Line 36: Public Sub Aff_Emp()
    Line 37: If Ds.Tables(0).Rows.Count > 0 Then
    Line 38: TextBox2.Text = Ds.Tables(0).Rows(i).Item(0)
    Line 39: TextBox3.Text = Ds.Tables(0).Rows(i).Item(1)

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Ah j'ai trouvé !!

    Pour garder mon Data Set et mon iterateur je doit les stocker dans des ViewState.

    Merci bien pour tous les liens précieux fournis, j'ai bien su m'en servir.

    Cya !

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

Discussions similaires

  1. [VB.NET] : Processus qui tourne toujours
    Par forsay1 dans le forum VB.NET
    Réponses: 3
    Dernier message: 26/12/2006, 16h48
  2. [CR][.Net] Déploiement - Truc qui va pas la :D
    Par SoaB dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 10/05/2005, 09h36
  3. [VB.NET] Variable de type enum avec du string
    Par Mouse dans le forum Windows Forms
    Réponses: 4
    Dernier message: 13/01/2005, 18h22
  4. [VB.NET] Authentification Form qui rate.
    Par Abalalojik dans le forum ASP.NET
    Réponses: 4
    Dernier message: 10/01/2005, 13h09
  5. [VB.NET] Variable visible dans plusieurs fonctions ?
    Par Webman dans le forum ASP.NET
    Réponses: 2
    Dernier message: 19/05/2004, 17h36

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