Insertion de donnees : plantage quand trop d ajout

oliverell62 Messages postés 13 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 3 septembre 2010 - 13 août 2009 à 11:33
oliverell62 Messages postés 13 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 3 septembre 2010 - 13 août 2009 à 12:40
bonjour

c 'est mon premier post ici, j espere que je ne vous ferais pas perdre votre temps

je suis en train de faire un petit soft en vb.net qui utilise access ( c une feuille format *.mdb access 2000 )

ca fonctionne quand pas trop d insertion , par contre l ajout bug quand bcp trop de ligne
je vous livre le code ( que je n ai pas encore transferer en fonction et methode )

(ps : je viens du php c mon premier en vb soyez indulgent ) :


 Private Sub Button_import_stats_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_import_stats.Click
        ' on active la demande que si maj de selectionne
        Dim dateurl As String = ""
        Dim _classement_brut As New classement_joueur
        Dim j As Integer
        Dim type As New ArrayList()
        type.Add("stat_a")
        type.Add("stat_b")
        type.Add("stat_c")





        If ListBox_rank.SelectedItem <> "" Then ' si rien de selectionne , on fait rien ....
            ' on se co a la bdd
            Dim bdd As New access
            Dim split_données() As String
            
        



            For j = 0 To 2 ' on update les trois type de stats a tour de role
                bdd.cnx = New OleDbConnection
                bdd.cnx.ConnectionString = bdd.cnxstr
                bdd.cnx.Open()

                dateurl = ListBox_rank.SelectedItem.ToString
                ogs.postDATA = ""
                ogs.action = "?action=statistique&date=" & dateurl & "&type=" & type.Item(j)
                ogs.requete(url, ogs.action, ogs.postDATA)
                  _classement_brut.datadate = dateurl
                _classement_brut.recup_splitresponse(_classement_brut.response)
                Dim tableau_donnees() = _classement_brut.split_response ' split des donnes recupere 

                Dim i As Integer
                For i = 1 To _classement_brut.split_response.Length - 2 , -2 car deriniere ligne est vide et la premiere commence a 0 et comme 0 ne m interesse pas je demarre a 1





                    split_données = Split(tableau_donnees(i), "<||>", , CompareMethod.Text)
                    ' on integre les valeurs


                    bdd.sql = "select rank_" & type.Item(j) & ".* from rank_" & type.Item(j)  'Création de la requête sql
                    bdd.cmd = New OleDbCommand(bdd.sql)  'Création de la commande et on l'instancie (sql) 
                    bdd.dta = New OleDbDataAdapter(bdd.cmd) 'Création du dataadapter (dta) et on l'instancie (cmd)
                    bdd.cmd.Connection() = bdd.cnx   'On instancie la commande (cmd) à la connection (cnx)
                    bdd.dta.Fill(bdd.dts, "rank_" & type.Item(j)) 'On charge le dataset (dts) grace à la propriété fill du dataadapter (dta)
                    bdd.dtt = bdd.dts.Tables("rank_" & type.Item(j)) 'On charge la datatable (dtt) grace à la propriété tables du dataset (dts)    



                    _classement_brut.datadate = dateurl
                    _classement_brut.rank = split_données(2)
                    _classement_brut.player = split_données(0)
                    _classement_brut.ally = split_données(1)
                    _classement_brut.points = split_données(3)
                    sender = split_données(4)

                    'crátion d'une nouvelle ligne avec les données des textbox
                    bdd.dtr = bdd.dts.Tables("rank_" & type.Item(j)).NewRow
                    bdd.dtr("datadate") = _classement_brut.datadate
                    bdd.dtr("rank") = _classement_brut.rank
                    bdd.dtr("player") = _classement_brut.player
                    bdd.dtr("ally") = _classement_brut.ally
                    bdd.dtr("points") = _classement_brut.points
                    bdd.dtr("sender_id") = sender

                    'ajout de la ligne dans le DataSet
                    bdd.dts.Tables("rank_" & type.Item(j)).Rows.Add(bdd.dtr)

                    'création et exécution du commandbuilder pour mettre à jour le DataAdapter
                    bdd.cmdb = New OleDbCommandBuilder(bdd.dta)

                    'mise à jour des données du dataadapter(dta)à partir du commandbuilder (cmdb)
                    bdd.dta.Update(bdd.dts, "rank_" & type.Item(j))

                    'on vide le dataset pour le recréer avec  les nouvelles données 
                    bdd.dts.Clear()
                    bdd.dta.Fill(bdd.dts, "rank_" & type.Item(j))
                    bdd.dtt = bdd.dts.Tables("rank_" & type.Item(j))





                    '_classement_brut.add_bdd(dateurl, _classement_brut.split_response, i)
                Next
                bdd = end_connexion()
                console_write = " importation de stats  "
                add_console_write(console_write, "<<>>")
                console_write = Nothing
            Next ' fin de j 0 to 2

        Else
            MsgBox("vous n avez pas selectionne de statistique")
        End If


    End Sub


si qqn sait pourquoi ca bugouille lamentablement quand on travaille sur plus de 1000 lignes
pour info ca reste sur j 0 ( donc le bug est a l interieur de la boucle j 0 to 2

d avance merci

1 réponse

oliverell62 Messages postés 13 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 3 septembre 2010
13 août 2009 à 12:40
bon, il s avere que le code fonctionne et ne bug pas :

apres divers test et debugage le soucis viens de la longeur de traitement du string recupere :

split_response = Split(valeur, "<|-|>", , CompareMethod.Text)

le temps s allonge enormement ...
du coup, ca marche mais faut que je trouve une alternative

merci qd meme
0
Rejoignez-nous