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

Windows Forms Discussion :

DataReader et Requete DELETE


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 107
    Par défaut DataReader et Requete DELETE
    bonjour,

    J'ai une application vb net avec une base de donnée.
    Au chargement du formulaire une requete affiche les enregistrements de la base dans une listView.

    Quand je clique sur un bouton un événement doit pouvoir supprimer la ligne sélectionnée de la listView. J'ai donc ecrit ceci:
    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
    Dim maConnexion As OleDbConnection
            Dim maCommande As OleDbCommand
            Dim strConnect As String
            Dim strSql As String
            Dim enr1 As OleDbDataReader
     
            Dim dat As Date
            Dim nom As String
            Dim num As Integer
     
            num = txt_num.Text
            nom = txt_nom2.Text
            MT = txt_MT.Text
            reg = txt_Regle.Text
            dat = txt_date.Text
     
            Try
                strConnect = "Provider='Microsoft.Jet.OLEDB.4.0';Data Source='C:\Documents and Settings\fdefrocourt\Bureau\Caisse\bdd_agroform.mdb';User ID=Admin;Password=;"
                maConnexion = New OleDbConnection(strConnect)
                strSql = "SELECT numEncD, nomSalD, MTEncD, RegleD, dateEncD FROM EncaissementDetail"
                'Creation de l'objet contenant la req puis ouverture de la bdd
                maCommande = New OleDbCommand(strSql, maConnexion)
                maConnexion.Open()
                'execution de la requete
                enr1 = maCommande.ExecuteReader()
     
                While (enr1.Read() = True)
                    If enr1("numEncD") = num Then
                        strSql = "DELETE FROM EncaissementDetail WHERE nomSalD= '" & nom & "'"
                        'Creation de l'objet contenant la req puis ouverture de la bdd
                        maCommande = New OleDbCommand(strSql, maConnexion)
                        'execution de la requete
                        maCommande.ExecuteNonQuery()
                    End If
                End While
     
                MsgBox("Encaissement supprimé")
                maConnexion.Close()
    Mais dans la base il peut y avoir plusieurs fois le même nom et cette requete me supprime tous les enregistrements avec le même nom
    J'ai donc essaié:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    While (enr1.Read() = True)
                    If enr1("numEncD") = num Then
                        strSql = "DELETE FROM EncaissementDetail WHERE numEncD= '" & num & "'"
                        'Creation de l'objet contenant la req puis ouverture de la bdd
                        maCommande = New OleDbCommand(strSql, maConnexion)
                        'execution de la requete
                        maCommande.ExecuteNonQuery()
                    End If
                End While
    Mais j'ai une erreur: type de donnée incompatible.

    Pourquoi?

    Pouvez vous m'aider ?

  2. #2
    Membre émérite Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Par défaut
    C'est normal num est de type entier, donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     strSql = "DELETE FROM EncaissementDetail WHERE numEncD= " & num & ""
    Donc il te retourn une erreur de type mais sans les quote ça ira tout seul normalement

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 107
    Par défaut
    Ca marche !!
    Ca fait 3h que je suis sur cette erreur à cause de 2 SIMPLE COTE.
    on s'ennerve pas :d

    Merci beaucoup

  4. #4
    Membre émérite Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Par défaut
    Je te comprends! Moi ca fait 4 mois que je suis sur le VB.net avec gestion de bases de données et après avoir fait plein d'erreurs de type maintenant je les repères vite^^!

    Bonne chance pour la suite!

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 107
    Par défaut
    oui merci.
    bonne chance a toi aussi

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 107
    Par défaut
    euh. Unautre truc:

    j'ai ce code la:
    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
    While (enr1.Read() = True)
                    If enr1("nomSal") = nom Then
     
                        MTEnc = enr1("MTEnc")
                        MTregle = enr1("Regle")
                        RAP = enr1("RAP")
     
                        strSql = "UPDATE Encaissement SET MTEnc='" & (MTEnc - MT) & "', Regle='" & (MTregle - reg) & "', RAP='" & (RAP - reg) & "' WHERE nomSal='" & nom & "'"
     
                        'Creation de l'objet contenant la req puis ouverture de la bdd
                        maCommande = New OleDbCommand(strSql, maConnexion)
                        'execution de la requete
                        maCommande.ExecuteNonQuery()
                    End If
                End While
    Dans la requete, il me soustrait bien MTEnc et MT, MTRegle et reg mais pas RAP et reg

    pourquoi ?

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

Discussions similaires

  1. [Access 2003]Probleme type de donnée sur requete DELETE
    Par pottiez dans le forum Langage SQL
    Réponses: 12
    Dernier message: 09/08/2006, 09h39
  2. [requet delete] Probleme de suppression
    Par agougeon dans le forum Langage SQL
    Réponses: 5
    Dernier message: 27/07/2006, 12h17
  3. probleme requete DELETE
    Par Ice-tea dans le forum Bases de données
    Réponses: 3
    Dernier message: 09/06/2006, 13h47
  4. Requete DELETE un peu longue...
    Par Thierry8 dans le forum Requêtes
    Réponses: 3
    Dernier message: 21/02/2006, 15h37
  5. PB requete delete
    Par letudiant1 dans le forum ASP
    Réponses: 11
    Dernier message: 24/10/2005, 08h22

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