[VB.net] Problème avec requête

Résolu
thespybot Messages postés 5 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 5 novembre 2008 - 25 sept. 2008 à 11:08
thespybot Messages postés 5 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 5 novembre 2008 - 25 sept. 2008 à 11:42
Bonjour à tous, j'ai un gros problème avec mon vb.net et du sql :

Voici le code :

Dim req As String
        Dim vJ As Integer = 0
        Dim cuA As OleDbDataReader
        dsAlarms.Reset()
        Dim typeB As String = rechTypeBien
        connexionAv.Close()
        Dim sql As OleDbCommand = New OleDbCommand()
        connexionAv.ConnectionString = chaine_connexionAv

        req = "Select * From " + typeB + " Where (`Vendeur Nom` Like '*" + champRech + "*') and type IN ('LOCATION','VENTE');"

        Try
            'ouverture
            connexionAv.Open()
            'SQL, opérations
            sql.CommandText = req
            sql.CommandType = Data.CommandType.Text
            sql.Connection = connexionAv
            cuA = sql.ExecuteReader
            Dim MyDataRow As DataRow
            MyDataRow = MyData.NewRow
            While cuA.Read()
                    Try

                    MyDataRow.Item("Référence") = CType(cuA("reference"), String)
                    Dim a As String = CType(cuA("reference"), String)
                    MyDataRow.Item("Nature") = CType(typeB, String).Substring(0, 3)
                    MyDataRow.Item("Date Entrée") = CType(cuA("Date entree"), String)
                    MyDataRow.Item("Adresse 1") = CType(cuA("Adresse 1"), String)
                    MyDataRow.Item("Adresse 2") = CType(cuA("Adresse 2"), String)
                    MyDataRow.Item("Ville") = CType(cuA("Ville"), String)
                    MyDataRow.Item("Prix (en €)") = FaireEspacePx(CType(cuA("Prix vente euro"), Double), True)
                    MyDataRow.Item("Titre vendeur") = CType(cuA("Vendeur Formule"), String)
                    MyDataRow.Item("Vendeur") = CType(cuA("Vendeur Nom"), String)
                    MyDataRow.Item("Téléphone vendeur") = CType(cuA("Vendeur Telephone domicile"), String)
                    MyDataRow.Item("Téléphone vendeur Bureau") = CType(cuA("Vendeur Telephone Bureau"), String)
                    MyDataRow.Item("Téléphone vendeur Autre") = CType(cuA("Vendeur Telephone autre"), String)
                    MyDataRow.Item("Type") = CType(cuA("type"), String)

                    Try
                        'ouverture
                        connexionAvRappel.Open()
                        'SQL, opérations
                        Dim r As String = CType(cuA("reference"), String)                        Dim req2 As String "Select * From infoBiens Where RefBiens'" + r + "'"
                        sql.CommandText = req2
                        sql.CommandType = Data.CommandType.Text
                        sql.Connection = connexionAvRappel
                        Dim cu As OleDbDataReader = sql.ExecuteReader
                        While cu.Read()
                            MyDataRow.Item("Date de rappel") = CType(CType(cu("DateRappel"), Date), String)
                        End While

                        connexionAvRappel.Close()
                    Catch ex As Exception
                        MsgBox(ex.Message)
                    End Try
                Catch ex As Exception
                    'MsgBox(ex.Message)
                End Try
                'Après les champs
                Try

                    MyData.Rows.Add(MyDataRow)
                Catch ex As Exception
                    MsgBox(ex.Message)
                End Try
                'Après toutes les lignes

            End While
            MyData.AcceptChanges()
            dsAlarms.Tables.Add(MyData)
            Dim BDSBiens As New BindingSource

            ' alimentation binding source
            BDSBiens.DataSource = dsAlarms
            BDSBiens.DataMember = "Biens".ToString

            ' alimentation datagridview
            DGV.DataSource = BDSBiens

            ' MsgBox("youpi")
        Catch ex As Exception
            MsgBox(ex.Message)
        Finally
            Try
                'fermeture
                connexionAvRappel.Close()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End Try

Ce code va pas !
SI je laisse cette requête, cela me fait  aucune erreur, mais rien n'est renvoyé de cette requête (or, j'ai bien des enregistrements qui correspondent)

Si je remplace les * par des %, cela me donne la première ligne qui correspond, puis pour chacune des autres lignes, cela me dit l'erreur "Cette ligne est deja dans la table"

Je ne comprends rien du tout à cela...

J'ai besoin de votre aide.

2 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
25 sept. 2008 à 11:34
Il faut que tu fasse un MyDataRow = MyData.NewRow pour chacune des lignes que tu insere, sinon c'est toujours la même ligne que tu tente d'inserer, même si les données qu'elle contient sont différentes

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
3
thespybot Messages postés 5 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 5 novembre 2008
25 sept. 2008 à 11:42
Ha oui, je l'ai mis dans la mauvaise boucle, halala, merci, merci merci merci merci et merci ^^
0
Rejoignez-nous