oliverell62
Messages postés13Date d'inscriptionmercredi 5 août 2009StatutMembreDernière intervention 3 septembre 2010
-
2 oct. 2009 à 10:41
kefir1998
Messages postés38Date d'inscriptionmercredi 11 mars 2009StatutMembreDerniè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 ...