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 ????
0
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
0
Rejoignez-nous