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

Accès aux données Discussion :

[VB.Net/DataReader] Pourquoi mon ExecuteReader ne fonctionne pas ?


Sujet :

Accès aux données

  1. #1
    Membre du Club Avatar de emeraudes
    Inscrit en
    Avril 2004
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 148
    Points : 57
    Points
    57
    Par défaut [VB.Net/DataReader] Pourquoi mon ExecuteReader ne fonctionne pas ?
    Bonjour,

    Je voudrais faire une connexion à ma base de données Access via Vb.Net.
    J'ai mis ce code mais il ne marche plus jusqu'au moment où j'initialise mon DataReader

    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
    Dim strcn As String = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data source=
     C:\Documents and Settings\barbierp\Mes documents\Visual Studio 2005
    \WebSites\ProjetFHI\FHI.mdb"
     
    Dim req As String = "SELECT * FROM INFO_COMPL where Matricule=" +
     tb_matricule.Text
            Try
                Dim cn As New OleDbConnection(strcn)
                Dim cmde As New OleDbCommand(req, cn)
                Dim dr As OleDbDataReader
                cn.Open()
                dr = cmde.ExecuteReader 'ici ca ne marche plus. Il s'arrete à cet
     endroit et ne fais pas le reste des traitements
                If dr.HasRows Then
                    While dr.Read()
                        If dr("mdp").ToString = strMotDePasse Then
                            Session("Matricule") = tb_matricule.Text
                            Response.Redirect("menuGeneSal.aspx")
                        Else
                            Response.Write("Mauvais mot de passe. Recommencez!!")
                        End If
                    End While
                Else
                    Console.WriteLine("Mauvais matricule. Recommencez !!")
                End If
                dr.Close()
                cn.Close()
            Catch ex As Exception
                Console.WriteLine("L'erreur suivante a été rencontrée :" + ex.Message)
            End Try
    Pourquoi?
    Aidez moi svp!!
    Merci
    le génie n'existe pas sans une pointe de folie

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Quel est le message d'erreur précis de l'exception levée

    Sinon je suggère ceci avant:

    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
    Dim strcn As String = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data source=
     C:\Documents and Settings\barbierp\Mes documents\Visual Studio 2005
    \WebSites\ProjetFHI\FHI.mdb"
     
    Dim req As String = "SELECT * FROM INFO_COMPL where Matricule LIKE '"
     + tb_matricule.Text + "'"
    Dim cn As OleDbConnection
    Dim cmde As OleDbCommand
    Dim dr As OleDbDataReader
     
    Try
      cn = New OleDbConnection(strcn)
      cmde = New OleDbCommand(req, cn)
      cn.Open()
      dr =cmde.ExecuteReader()
      If dr.HasRows Then
        While dr.Read()
           If dr("mdp").ToString() = strMotDePasse Then
              Session("Matricule") = tb_matricule.Text
              Response.Redirect("menuGeneSal.aspx")
           Else
              Response.Write("Mauvais mot de passe. Recommencez!!")
           End If
        End While
      Else
         Response.Write("Mauvais matricule. Recommencez !!")
      End If
    Catch ex As Exception
         Response.Write("L'erreur suivante a été rencontrée :" + ex.ToString())
    Finally
        If Not(dr Is Nothing) Then dr.Close()
        If Not(cn Is Nothing) Then cn.Close()
    End Try
    En fait je me demande si ce n'est pa ligne au-dessus qui lève l'exception, avec un problème de connection (voir eventuellement http://www.connectionstrings.com/ pour la chaîne de connection)
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  3. #3
    Membre du Club Avatar de emeraudes
    Inscrit en
    Avril 2004
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 148
    Points : 57
    Points
    57
    Par défaut
    merci pour ton code. Il marche mieux (j'ai changé la chaine de connexion) mais maintenant j'ai le message d'erreur suivant :
    L'erreur suivante a été rencontrée :Impossible de lire les enregistrements; pas d'autorisation de lecture sur 'INFO_COMPL'.
    Pourtant je n'ai mis aucun droit sur mes tables pour le moment. Alors pourquoi ca fait ca??
    le génie n'existe pas sans une pointe de folie

  4. #4
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par emeraudes
    merci pour ton code. Il marche mieux (j'ai changé la chaine de connexion) mais maintenant j'ai le message d'erreur suivant :


    Pourtant je n'ai mis aucun droit sur mes tables pour le moment. Alors pourquoi ca fait ca??
    euh si tu as bien mis cette ligne de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Catch ex As Exception
       Response.Write("L'erreur suivante a été rencontrée :" + ex.ToString())
    je suis surpris que ton message d'erreur soit aussi laconique
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  5. #5
    Membre du Club Avatar de emeraudes
    Inscrit en
    Avril 2004
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 148
    Points : 57
    Points
    57
    Par défaut
    J'avais oublié que j'avais un nom d'utilisateur et un mot de passe. J'ai modifié la chaine de connexion mais maintenant j'ai un nouveau message d'erreur :
    L'erreur suivante a été rencontrée :Impossible de démarrer votre application. Le fichier d'informations du groupe de travail est absent ou ouvert en mode exclusif par un autre utilisateur.
    ca c'est l'erreur avec ex.Message

    Voici l'erreur avec ex.Tostring()
    L'erreur suivante a été rencontrée :System.Data.OleDb.OleDbException: Impossible de démarrer votre application. Le fichier d'informations du groupe de travail est absent ou ouvert en mode exclusif par un autre utilisateur. à System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) à System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) à System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup) à System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) à System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) à System.Data.OleDb.OleDbConnection.Open() à loginResp.Page_Load(Object sender, EventArgs e) dans C:\Documents and Settings\barbierp\Mes documents\Visual Studio 2005\WebSites\ProjetFHI\loginResp.aspx.vb:ligne 18
    Ca veut dire quoi??? et comment y remedié?
    le génie n'existe pas sans une pointe de folie

  6. #6
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Ben çà m'inspire pas des masses désolé (suis peut-être fatigué aussi )
    Essayons encore de débugguer plus précis
    ajoute le code en rouge suivant:
    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
    '...
    Try
      cn = New OleDbConnection(strcn)
      cmde = New OleDbCommand(req, cn)
      cn.Open()
      dr = cmde.ExecuteReader()
      If dr.HasRows Then
        While dr.Read()
           If dr("mdp").ToString() = strMotDePasse Then
              Session("Matricule") = tb_matricule.Text
              Response.Redirect("menuGeneSal.aspx")
           Else
              Response.Write("Mauvais mot de passe. Recommencez!!")
           End If
       End While
      Else
         Response.Write("Mauvais matricule. Recommencez !!")
      End If
    Catch e As OleDbException
      Dim erreurs As New System.Text.StringBuider(String.Empty)
      Dim i As Integer
      For i = 0 To e.Errors.Count - 1
         erreurs.Append("Index #")
         erreurs.Append(i.ToString())
         erreurs.Append(Environment.NewLine)
         erreurs.Append("Message: ")
         erreurs.Append(e.Errors(i).Message)
         erreurs.Append(Environment.NewLine)
         erreurs.Append("NativeError: ")
         erreurs.Append(e.Errors(i).NativeError)
         erreurs.Append(Environment.NewLine)
         erreurs.Append("Source: ")
         erreurs.Append(e.Errors(i).Source)
         erreurs.Append(Environment.NewLine)
         erreurs.Append("SQLState: ")
         erreurs.Append(e.Errors(i).SQLState)
         erreurs.Append(Environment.NewLine)
      Next i
      Response.Write(erreurs.ToString())
    Catch ex As Exception
       Response.Write("L'erreur suivante a été rencontrée :" + ex.ToString())
    Finally
       If Not(dr Is Nothing) Then dr.Close()
       If Not(cn Is Nothing) Then cn.Close()
    End Try
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  7. #7
    Membre du Club Avatar de emeraudes
    Inscrit en
    Avril 2004
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 148
    Points : 57
    Points
    57
    Par défaut
    Il y a toujours un message d'erreur, C'est celui la maintenant :
    Index #0 Message: Impossible de démarrer votre application. Le fichier d'informations du groupe de travail est absent ou ouvert en mode exclusif par un autre utilisateur. NativeError: -124520301 Source: Microsoft JET Database Engine SQLState: 3028
    Je suis perdue là moi
    le génie n'existe pas sans une pointe de folie

  8. #8
    Membre du Club Avatar de emeraudes
    Inscrit en
    Avril 2004
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 148
    Points : 57
    Points
    57
    Par défaut
    J'ai essayai avec un fichier Excel et ca marche tres bien. Je ne comprend pas pourquoi ca fait ca avec Access alors que avec Excel ca marche.
    le génie n'existe pas sans une pointe de folie

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Août 2006
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim req As String = "SELECT * FROM INFO_COMPL where Matricule=" +
    tb_matricule.Text
    je pense qu'il faut juste de tu rajoute cà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    Dim req As String = "SELECT * FROM INFO_COMPL where Matricule='" +
    tb_matricule.Text +"'"

Discussions similaires

  1. [Déploiement] Pourquoi mon application ne fonctionne pas sur tous les postes ?
    Par Willthelegend dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 08/09/2008, 20h34
  2. Réponses: 7
    Dernier message: 23/08/2008, 11h34
  3. pourquoi mon code ne fonctionne pas
    Par jmlb35 dans le forum VBA Access
    Réponses: 2
    Dernier message: 30/06/2008, 19h02
  4. Pourquoi mon frame ne fonctionne pas sur Safari 3.0.4?
    Par joecool2005 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/02/2008, 17h36
  5. Réponses: 1
    Dernier message: 30/08/2006, 19h00

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