cs_cybercorp
Messages postés44Date d'inscriptionlundi 1 avril 2002StatutMembreDernière intervention16 août 2009
-
23 sept. 2007 à 00:44
belsuncette
Messages postés2Date d'inscriptionjeudi 4 octobre 2007StatutMembreDernière intervention 5 octobre 2007
-
5 oct. 2007 à 12:12
Bonjour
Je travaille avec VB 2005 et une base Access
J'utilise une grille pour des enregistrements journaliers.
Les enregistrement sont chargés par une instruction:
Me.PointageTableAdapter1.FillByJour(Me.P_DataSet.Pointage)
SELECT Num, Jour, H1, Nom, Prenom, Qt , H2
FROM Pointage
WHERE (Jour = ?)
ORDER BY H1
Jusque là tout va bien.
La sauvegarde des données est faite avec:
Try
Me.Validate()
Me.PSetBindingSource.EndEdit()
Me.PointageTableAdapter1.Update(Me.P_DataSet.Pointage)
Catch ex As Exception
MsgBox("Une erreur à été détectée durant la mise à jour de la base de données")
End Try
En débutant une journée, l'instruction FillBy jour ne charge aucun élément, ce qui est normal.
Lorsque je crée le premier enregistrement et que je l'enregistre, ça se passe bien.
Par contre, si je veux modifier la ligne j'ai une erreur d'accès concurentiel au moment de l'enregistrement.
Je ferme ma feuille, je l'ouvre de nouveau et là toutes les modifications s'enregistrent sans problème.
Je n'arrive pas à comprendre cette erreur.
Pouvez-vous m'aider?
Merci
<!-- / message -->
Celui qui ajoute de nouvelles connaissances aux anciennes est le véritable professeur.(Confucius)
cs_cybercorp
Messages postés44Date d'inscriptionlundi 1 avril 2002StatutMembreDernière intervention16 août 2009 5 oct. 2007 à 01:14
J'ai enfin trouvé pourquoi j'avas l'erreur:
- Lors du remplissage du TableAdapter1 en début de journée, je n'ai aucun enregistrement. Lors de la création le premier enregistrement prend automatiquement le N° 0.
En réalité, cet enregistrement ne doit pas avoir ce numéro puisqu'il s'agit du dernier de la base de données.
Donc lors de l'enregistrement dans TableAdapter1 il n'y a pas d'erreur. Par contre lors de la modification ma base se retouve avec 2 enregistrements 0 et provoque une violation d'accès concurentiel.
Pour résoudre le problème, lors du premier enregistrement d'une journée, je rappel la méthode FillByJour et je récupère ainsi le bon numéro d'enregistrement.
ThoT49
Messages postés153Date d'inscriptiondimanche 4 mars 2007StatutMembreDernière intervention24 avril 20112 23 sept. 2007 à 10:29
En faite dans les débuts, cela m'es déja arrivé, tu ne peux pas modifier ce que tu viens tout juste d'ajouter, pour cela, il faut bien départager la modification avec l'ajout...
Donc en faite ce qu'il faudrait, je pense, c'est gérer diférement les deux actions. D'une part tu ajoute, tu coupe la connection a ta base de donnée. Puis, tu modifi en te reconnectant a la base de donnée afin de pouvoir voir en temps réel la modification faite.
Je ne sais pas si tu me comprend mais je pense que pour ton problème c'est cela.
Si ce n'est pas le cas, c'est que il y a un problème dans ton code, et je ne fais pas de la meme façon que toi pour gérer une base access, mais j'ai regardé ce que tu as mis, je pense que cela revient au mème...
Donc bah éssai, puis bah dit nous si cela fonctionne ;)
belsuncette
Messages postés2Date d'inscriptionjeudi 4 octobre 2007StatutMembreDernière intervention 5 octobre 2007 4 oct. 2007 à 15:50
Si tu as toujours ce problème, essaie de faire un AcceptChanges() sur ton TableAdapter, comme ça il récupère tes nouvelles entrées et tu peux travailler dessus.
Vous n’avez pas trouvé la réponse que vous recherchez ?