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

VB.NET Discussion :

Probleme datagrid affichage [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 19
    Points : 5
    Points
    5
    Par défaut Probleme datagrid affichage
    Bonjour a tous,

    Voila j'ai deja posté pour une aide sur access et maintenant que tout marche parfaitement, j'ai un probleme pour un affichage dans mon datagrid.

    Je peux afficher les données de ma table dans mon datagrid au chargement du formulaire, mais quand j'utilise un textbox pour faire un affichage precis, j'ai a chaque fois des erreurs.

    Chargement du formulaire (tout fonctionne) :

    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
     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim cnn As New OleDbConnection   'Connexion à la base de données
            Dim cmd As New OleDbCommand    'Commande requête
            Dim drr As OleDbDataReader            'Jeu d'enregistrements
            Dim existenreg As Boolean
            'Connexion à la base de données annuaire sous ACCESS
            cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\archivesCD.mdb"
            cnn.Open()
            'Requête SQL
            cmd.CommandText = "SELECT * FROM Archivage"
            cmd.Connection = cnn
            'Exécution de la requête et récupération du résultat sous forme d'un jeu d'enregistrements dans drr
            drr = cmd.ExecuteReader()
            GrdArchive.ColumnCount = 6
            GrdArchive.Rows.Clear()
            existenreg = drr.Read    'Lecture du premier enregistrement
            While existenreg            'Parcours des enregistrements
                GrdArchive.Rows.Add(drr("ID"), drr("NumAffaire"), drr("Année"), drr("Client"), drr("NumCd"), drr("Observations"))   'Ajout de l'enregistrement dans le DataGridView
                existenreg = drr.Read   'Lecture de l'enregistrement suivant
            End While
            drr.Close()
            cnn.Close()
        End Sub
    _______

    Afficher le n° d'affaire tapé dans le textbox prevu a cet effet :

    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
     Private Sub BtnAff_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAff.Click
            Dim cnn As New OleDbConnection   'Connexion à la base de données
            Dim cmd As New OleDbCommand    'Commande requête
            Dim drr As OleDbDataReader            'Jeu d'enregistrements
            Dim existenreg As Boolean
            'Connexion à la base de données annuaire sous ACCESS
            cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\archivesCD.mdb"
            cnn.Open()
            'Requête SQL
            cmd.CommandText = "SELECT * FROM Archivage WHERE NumAffaire=" & TxtAff.Text & "'"
            cmd.Connection = cnn
            'Exécution de la requête et récupération du résultat sous forme d'un jeu d'enregistrements dans drr
            drr = cmd.ExecuteReader()
            GrdArchive.ColumnCount = 6
            existenreg = drr.Read    'Lecture du premier enregistrement
            While existenreg            'Parcours des enregistrements
                GrdArchive.Rows.Add(drr("NumAffaire"), drr("Année"), drr("Client"), drr("NumCd"), drr("Observations"))   'Ajout de l'enregistrement dans le DataGridView
                existenreg = drr.Read   'Lecture de l'enregistrement suivant
            End While
            drr.Close()
            cnn.Close()
    ____

    la j'ai une erreur, j'ai fait un screen :



    et j'ai a peu pres la meme erreur si je veux un n° de cd precis, une année precise, un client precis.
    Je sens que sa vient de mon SELECT, mais je ne sais pas quoi tenter. Si vous avez une idée, je prends

    Merci.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour
    Pense à la mise en forme du code avec la balise code, c'est plus simple pour lire.
    Citation Envoyé par d4lvy Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      cmd.CommandText = "SELECT * FROM Archivage WHERE NumAffaire=" & TxtAff.Text & "'"
    Tu as une cote après TxtAff.Text pas avant.
    La présence de cote dépend du type de NumAffaire.

    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 19
    Points : 5
    Points
    5
    Par défaut
    je ne comprend pas bien, il faut que je note comme cela ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd.CommandText = "SELECT * FROM Archivage WHERE NumAffaire="' & TxtAff.Text & ";"

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Si NumAffaire est numérique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd.CommandText = "SELECT * FROM Archivage WHERE NumAffaire=" & TxtAff.Text
    Si NumAffaire est alphanumérique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd.CommandText = "SELECT * FROM Archivage WHERE NumAffaire='" & TxtAff.Text & "'"
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 19
    Points : 5
    Points
    5
    Par défaut
    Aucun des deux ne marche.

    Dans Access, NumAffaire est en tant que texte.
    Les numero d'affaires sont du style : 97A217.
    Et pour les champs n'ayant pas de numero, j'ai rajouté "aucun numero" pour pas qu'il soit vide.

  6. #6
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Bonsoir,

    on ne le répétera jamais assez, quand vous utilisez des valeurs qui ne sont pas fixe, donc qui proviennent de variable, ne concaténez pas les chaînes manuellement.
    Utilisez plutôt les requêtes paramétrées qui sont faites pour cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            cmd.CommandText = "SELECT * FROM Archivage WHERE NumAffaire = ?"
            cmd.Parameters.Add("NumAffaire", System.Data.OleDb.OleDbType.VarChar)
            cmd.Parameters("NumAffaire").Value =  TxtAff.Text
    Celle-ci vous protège des erreurs d'écriture de requête (pas besoins de mettre les quotte ') ainsi que des injections SQL (sécurité d'injection de code par l'interface)...

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 19
    Points : 5
    Points
    5
    Par défaut
    J'ai bien repris ces 3 lignes et quand j'appuie sur le bouton pour lancer ma recherche, il n'y a pas d'erreurs, mais il ne se passe rien non plus

    pourtant mon datagrid est bien chargé au demarrage, donc pour une recherche plus precise, sa devrait fonctionner. L'erreur ne peut pas se trouver ailleurs que dans le SELECT non ?

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

Discussions similaires

  1. probleme d'affichage d'une date sur datagrid
    Par Amargoo dans le forum C#
    Réponses: 1
    Dernier message: 31/03/2011, 14h13
  2. probleme d'affichage sur un datagrid
    Par diamentelle dans le forum Windows Forms
    Réponses: 0
    Dernier message: 14/04/2009, 17h25
  3. Probleme d'affichage de virgule dans un datagrid
    Par PatricePatrice dans le forum Oracle
    Réponses: 1
    Dernier message: 02/04/2008, 10h05
  4. probleme d'affichage en DataGrid
    Par marouanensa dans le forum ASP.NET
    Réponses: 6
    Dernier message: 04/02/2008, 15h14
  5. [c#] probleme d'affichage de datagrid
    Par shams dans le forum ASP.NET
    Réponses: 17
    Dernier message: 22/07/2005, 11h24

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