Pb de synchronisation ?

oliverell62 Messages postés 13 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 3 septembre 2010 - 2 oct. 2009 à 10:41
kefir1998 Messages postés 38 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 1 mars 2010 - 8 oct. 2009 à 16:16
bonjour

je travail sur un petit logiciel vb qui utilise access 2007

jer vous expose mon probleme

quand j envoi un une donnée sur ma bdd ( via l insert ), elle ne se repercute pas de suite . je m explique, juste apres je fais une requete qui va chercher l id de l insertion effectué et il ne me trouve rien.. ( alors que la donnee envoyé existe dans la bdd acces !!!!)
si jne met un point d arret que j attend et qu ensuite je lance la requête, ca marche il me trouve l id recherché

voila le code :




        For i = 1 To (tableau_donnees.Length - 2)
            Dim joueur As New joueur
            petitpotam.ProgressBar1.Value += 1 ' step de la progree bar

            Dim split_données = Split(tableau_donnees(i), "<||>")
            joueur.name = split_données(0)

            joueur.create_player(joueur.name) ' pas de doublon possible
            joueur.id_joueur = joueur.find_id_player(joueur.name, bdd) ' recup de l id
            j = i
            joueur = Nothing

        Next



'' du cote des fonction utilisées :


  Public Function create_player(ByVal joueur_ As String)
        Dim bdd_ As New access
        Dim id As Integer = 0


        Try
            bdd_ = connect()
            bdd_.sql = "insert into joueur ( name) values ('" & joueur_ & "')  "     'Création de la requête sql
            bdd_.cmd = New OleDbCommand(bdd_.sql)  'Création de la commande et on l'instancie (sql) 
            bdd_.cmd.Connection = bdd_.cnx
            bdd_.cmd.ExecuteNonQuery()
  



            bdd_ = end_connexion()

        Catch ex As Exception

        End Try

        Return True

    End Function

    Public Function find_id_player(ByVal joueur_ As String, ByVal bdd_ As access)

        Dim id As Integer = 0



        bdd_.sql "select joueur.id , joueur.name from joueur where name'" & joueur_ & "'"   '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, "joueur") 'On charge le dataset (dts) grace à la propriété fill du dataadapter (dta)
        bdd_.dtt = bdd_.dts.Tables("joueur") 'On charge la datatable (dtt) grace à la propriété tables du dataset (dts)    
        ' fin de la requete 
        
            id = bdd_.dtt.Rows(0).Item("id")
    

        bdd_ = end_connexion()
        Return id

    End Function






voila

pour info l erreur apparait la :

    id = bdd_.dtt.Rows(0).Item("id")

puisque la base na pas l aire au courant de l insertion ....

=> j ai pas mal cherche sur le fofo
( me suis arrete sur @@identity mais ca ne fera que contourner le pb qui finira par ressortir ailleurs)
=> y a t il une possibilite de force le " rafraichissement d access" sachant que quand je cree une nouvelle connexion a access c la meme chose ...


d avance merci

2 réponses

oliverell62 Messages postés 13 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 3 septembre 2010
2 oct. 2009 à 13:11
bon il semberai qu'en initialisant pour chaque fonction un objet access ( dim blabla as new access ) mon pb disparait

neanmoins, comment faire si on veut garder le meme objet de connection, pour reinitialiser ou regenerer la base ????
kefir1998 Messages postés 38 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 1 mars 2010
8 oct. 2009 à 16:16
bonjour

avec access il faut utiliser la fonction actualliser apres chaque entré pour mettre a jour la base


iblis
Rejoignez-nous