ADO Update

cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 - 4 juil. 2005 à 18:39
zakimora Messages postés 1 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 14 août 2010 - 14 août 2010 à 15:25
Salut...

J'ai poser cette question la semaine dernière mais je n'ai pas érussi a régler mon problème.....


Je ne suis pas capable d'updaté ma table ACCESS....

J'utilise VB6, ADO et ACCESS Voici mon Code

MA FORM

Private Sub Form_Load()

'Set Connection = New ADODB.Connection

'Type de bases de donnée pour la connexion (Pour Acces 2000 (4.0), pour la version 95 et 97 (3.51)
Connection.Provider = "Microsoft.jet.OLEDB.4.0"
'Chemin de la base de donnée (APP.PATH permet de ce mettre dans le chemin
'courant la ou ce trouve le projet)- Paramettrage de la chaine de connection
Connection.ConnectionString = App.Path & "\LISTE_DE_JOBS.mdb"
'Ouverture de la connection
Connection.Open
'Ouverture de la requête sql dans le recordset
BD.Open "Select * from GES_TEMPS", Connection, adOpenDynamic, adLockOptimistic

'CODE POUR METTRE UNE DEUXIÈME TABLE
'BDDossier.Open "Select * from [TRAVAUX EN COURS 2005]", Connection, adOpenDynamic, adLockOptimistic


Me.Show

txtRecherche.SetFocus

cboEmployes.AddItem "Cynthia"
cboEmployes.AddItem "Guy"
cboEmployes.AddItem "Julien"
cboEmployes.AddItem "Pascal"
cboEmployes.AddItem "Stephane M."
cboTypeTravail.AddItem "OCTR"
cboTypeTravail.AddItem "Photogrammétrie"
cboTypeTravail.AddItem "Recherche BDP"
cboTypeTravail.AddItem "Relevé GPS"
cboTypeTravail.AddItem "Relevé Terrain"
ListTempsEmployesRecherche.AddItem "Cynthia"
ListTempsEmployesRecherche.AddItem "Guy"
ListTempsEmployesRecherche.AddItem "Julien"
ListTempsEmployesRecherche.AddItem "Pascal"
ListTempsEmployesRecherche.AddItem "Stephane M."

txtTempsDossier.Enabled = False
cboEmployes.Enabled = False
txtTempsTemps.Enabled = False
txtTempsDate.Enabled = False
cboTypeTravail.Enabled = False

End Sub


BOUTON RECHERCHE

Private Sub cmdRecherche_Click()

Set BD2 = New ADODB.Recordset

BD2.Open "SELECT * FROM [GES_TEMPS] WHERE [DOSSIER] like '%" & txtRecherche.Text & "%' AND [EMPLOYER] like '%" & ListTempsEmployesRecherche.Text & "%'", Connection, adOpenKeyset, adLockBatchOptimistic

If BD2.RecordCount <> 0 Then

txtTempsDossier.Text = BD2!DOSSIER & ""
txtTempsTemps.Text = BD2!TEMPS & ""
txtTempsDate.Text = BD2!Date & ""
cboEmployes.Text = BD2!EMPLOYER & ""
cboTypeTravail.Text = BD2!TYPE_TRAVAIL & ""

Else
Supression = MsgBox("Cette (Ces) donnée(s) n'existe(ent) que dans votre tête", vbOKOnly, "Non Disponible")

End If

txtTempsDossier.Enabled = True
cboEmployes.Enabled = True
txtTempsTemps.Enabled = True
txtTempsDate.Enabled = True
cboTypeTravail.Enabled = True



End Sub

FORM ACTIVATE

Private Sub Form_Activate()

Set cboEmployes.DataSource = BD
cboEmployes.DataField = "EMPLOYER"

txtTempsDossier.Text = ""
txtTempsTemps.Text = ""
txtTempsDate.Text = ""
cboEmployes.Text = ""

End Sub

BOUTON AJOUTER

Private Sub cmdAjout_Click()

txtTempsDossier.Enabled = True
cboEmployes.Enabled = True
txtTempsTemps.Enabled = True
txtTempsDate.Enabled = True
cboTypeTravail.Enabled = True

txtTempsDossier.SetFocus

'Permet d'aller après le dernier enregistrement qui correspond
'à la dernière ligne dans la base de donnée

Chargement

BD.AddNew

txtRecherche.Text = ""
ListTempsEmployesRecherche.Text = ""
txtTempsTemps.Text = ""

End Sub

BOUTON UPDATE

Private Sub cmdUpDate_Click()
'Permet d'enregistrer dans la base de donnée l'ajout que l'on souhaite faire

BD.Update
BD2.Update
txtRecherche.SetFocus

End Sub

CHARGEMENT

Private Sub Chargement()

Set txtTempsDossier.DataSource = BD
txtTempsDossier.DataField = "DOSSIER"
Set txtTempsDate.DataSource = BD
txtTempsDate.DataField = "DATE"
Set txtTempsTemps.DataSource = BD
txtTempsTemps.DataField = "TEMPS"
Set cboEmployes.DataSource = BD
cboEmployes.DataField = "EMPLOYER"
Set cboTypeTravail.DataSource = BD
cboTypeTravail.DataField = "TYPE_TRAVAIL"

End Sub


Et ca me sort comme ERREUR

Le Gestionnaire d'événements du consommateur a appelé une méthode réentrante du fournisseur.



Je capote...



Si quelqu'un peut m'aider.... SVP est-il possible d'utiliser mon code à titre d'exemple. Il arrive que je ne sais plus si c'est du code pour ADO ou bien si c'est des variable ou bien.... bref ca me mélange un peut et étant donné que je suis débutant en ADO, il m'arrive de ne pas tout saisir...


Donc j'attends de vos nouvelles...

Merci d'avance

10 réponses

Doro81079 Messages postés 380 Date d'inscription vendredi 22 avril 2005 Statut Membre Dernière intervention 24 février 2015 56
5 juil. 2005 à 00:32
bonsoir ,

je n'est pas tout regardais et je suis débutante aussi mais j'ai reussi a ajouter des donnees a ma bd donc je te donne le code que je mets en ADO pour faire un ajout:

(dans general déclaration)

Dim mabase As New ADODB.Connection
Dim matable As New ADODB.Recordset

(Dans le code de ton bouton ajouter)

mabase.Provider = "Microsoft.jet.OLEDB.4.0"
mabase.Open "Data source=C:\Bd compta.mdb"
matable.Open "matable", mabase, adOpenDynamic, adLockOptimistic
matable.AddNew
matable("nom du champ1") = txtRecherche.Text
matable("nom du champ2") = ListTempsEmployesRecherche.Text
matable("nom du champ3") = txtTempsTemps.text
matable.Update '.update doit toujours être précéder de .addnew ou .edit
mabase.Close
(Pour les explications:
-mabase nom de ma base que j'ai declarer dans declaration pour la connection
-matable nom de la table dans access et comme je l'ai declarer
-nom du champ1 par exemple le champ Nom,champ2 prénom...

pour ton code ci dessous il n'y a aucune liaison entre access et vb tu ne fais que changer la propriétés text de tes textbox ou j'ai peut être pas compris
BD.AddNew

txtRecherche.Text = ""
ListTempsEmployesRecherche.Text = ""
txtTempsTemps.Text = ""

je regarderais mieu ton code
mais tiens moi au courant voilà bonne soirée
0
Doro81079 Messages postés 380 Date d'inscription vendredi 22 avril 2005 Statut Membre Dernière intervention 24 février 2015 56
5 juil. 2005 à 02:54
rebonsoir ,
je viens de regarder ton code et je crois que tu t'es un peux embrouiller au niveau de tes BD et de tes tables .Est ce que tu peux me dire combien de BD tu veux ouvrir ,leur noms et le nom de leur table et me dire quelle table de ces bases tu veux ouvrir si possible ainsi que leur controles associés.Parce que j'ai essayais de rectifier ton code mais sans connaitre tes BD et leurs tables c'est impossible

voilà au pire j'essais quand même et je te le poste
salut
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
5 juil. 2005 à 10:22
Salut,



Le probleme d'apres moi vient des databindings de VB6.

txtTempsTemps.DataField = "TEMPS"

Set cboEmployes.DataSource = BD



Si la valeur chane la base est changée

si la base est changée la valuer change



mais le probleme est que si la valeur n'existe pas en base

Ca explose par exemple pour les recherches il faut exactement les bons noms et mettre à jour.



Je t'avais déja guidé pour ce problème ;-)





Moi, j'aime pas le databinding (en .net il est :mieux fait)

et dans VB6 je l'ai jamais utilisé.



Bon courage.
0
cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 4
5 juil. 2005 à 13:39
Salut c'est moi qui a un prob. avec les Update et ADO....


Hummmm Veux-tu que j et'envois mon code.. ??????


Enfin sinon...

P.S. Mon programme sera utilisé pour faire la gestion de temps des employés pour chaque Dossier

J'ouvre une Table nommé LISTE_DE_JOBS.mdb et j'ouvre la table nommmée Ges_TEMPS

Je me suis créé 2 recordset
Le premier (BD) je l'utilise pour navioguer dans la BD...
Donc pour faire suivant Next Ajout et Delete.

Le second (BD2) je l'utilise pour ma Recherche.

Par la suite j'utilise des textbox et des listbox et rien de plus....


Donc quand je fais un Update de ma BD (mon premier recordset) ca plante...

Donne moi des nouvelles si tu veux que je t'envois mon prog... ca pourrais peut-être être plus simple pour toi....


J'attends de tes nouvelles...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 4
5 juil. 2005 à 13:44
Salut "nhervagault"

Mon problème n'est pas relier à la recherche.....


Lorsque je dé.marre mon programme j'appuis sur ajout.... et je rentre de l'info... et j'appuis sur Update et ca plante....


Pour la Recherche..... pour le moment ca me dérange pas....


Et ce qui m'embête c'est que mon programme fonctionnais correctement et depuis 4-5 jours ca plante et je ne vois vraiment d'ou vient le problèmme.....

et mon boss commence à être un peu en "maudit" héhéhéh :(.......

Enfin.....


Je pourrais t'envoyer mon prog ???????

Sinon j'attends de tes nouvelles..... car ce que tu m'a expliquer dans le dernier message n'est pas clair clair... ca il me semble que ce code est ok
txtTempsTemps.DataField = "TEMPS"
Set cboEmployes.DataSource = BD


Mais bon il doit y avoir quelque chose que je ne sais pas....

A+
0
Doro81079 Messages postés 380 Date d'inscription vendredi 22 avril 2005 Statut Membre Dernière intervention 24 février 2015 56
5 juil. 2005 à 15:09
bonjour,
J'ouvre une Table nommé LISTE_DE_JOBS.mdb et j'ouvre la table nommmée Ges_TEMPS
dis moi si je me trompe
LISTE_DE_JOBS.mdb est une base de donnees et pas une table non?
et GES_TEMPS est une table de cette BD et TRAVAUX_EN_COURS_2005 est egalement une table de cette BD ?
et le mieux ,je pense, c'est que tu m'envois ton prog
sinon j'ai rectifier un peu ton code mais sans savoir combien de base tu utilise et quelle table tu utilise dans ces bases donc a mon avis ce n'est pas bon je te le poste quand meme afin que tu puisse voir un peu la syntaxe pour ouvrir une base et une table sous ado donc regarde bien le code de la form_load
tiens moi au courant
0
Doro81079 Messages postés 380 Date d'inscription vendredi 22 avril 2005 Statut Membre Dernière intervention 24 février 2015 56
5 juil. 2005 à 15:16
regarde surtout le form load et une fois que j'en saurais plus sur taBD et tes tables je pourrais t'aider pour tes boutons
Option explicit(Dans “déclaration” “générale”)


Dim BD1 as new adodb.connection


Dim BD2 as new adodb.connection


‘déclaration de la connection




dim GES_TEMP as new adodb.recordset


dim TRAVAUX_EN_COURS_2005 as new adodb.recordset


‘déclaration des recordset




(je suppose que travaux en cours 2005 est ta 2ème table dans ce cas il faut que tu la renomme à partir d’Access avec des _ à la place des espaces)




Private Sub Form_Load()
cboEmployes.AddItem "Cynthia"
cboEmployes.AddItem "Guy"
cboEmployes.AddItem "Julien"
cboEmployes.AddItem "Pascal"
cboEmployes.AddItem "Stephane M."
cboTypeTravail.AddItem "OCTR"
cboTypeTravail.AddItem "Photogrammétrie"
cboTypeTravail.AddItem "Recherche BDP"
cboTypeTravail.AddItem "Relevé GPS"
cboTypeTravail.AddItem "Relevé Terrain"
ListTempsEmployesRecherche.AddItem "Cynthia"
ListTempsEmployesRecherche.AddItem "Guy"
ListTempsEmployesRecherche.AddItem "Julien"


ListTempsEmployesRecherche.AddItem "Pascal"
ListTempsEmployesRecherche.AddItem "Stephane M."
txtTempsDossier.Enabled = False
cboEmployes.Enabled = False
txtTempsTemps.Enabled = False
txtTempsDate.Enabled = False
cboTypeTravail.Enabled = False
cboEmployes.DataSource = BD
cboEmployes.DataField = "EMPLOYER"
txtTempsDossier.Text = ""
txtTempsTemps.Text = ""
txtTempsDate.Text = ""
cboEmployes.Text = ""


txtRecherche.SetFocus


Set txtTempsDossier.DataSource = BD1
txtTempsDossier.DataField = "DOSSIER"
Set txtTempsDate.DataSource = BD1
txtTempsDate.DataField = "DATE"
Set txtTempsTemps.DataSource = BD1
txtTempsTemps.DataField = "TEMPS"
Set cboEmployes.DataSource = BD1
cboEmployes.DataField = "EMPLOYER"
Set cboTypeTravail.DataSource = BD1
cboTypeTravail.DataField = "TYPE_TRAVAIL


‘initialisation des contrôles




Set BD1 = New ADODB.Connection
BD1.Provider = "Microsoft.jet.OLEDB.4.0"


BD1.Open « data source = App.Path &"\LISTE_DE_JOBS.mdb"
’ouverture de laBD1(LISTE_DE_JOBS.mdb)


GES_TEMPS.Open "Select * from GES_TEMPS", BD1, adOpenDynamic,


adLockOptimistic



TRAVAUX_EN_COURS_2005.Open "Select * from TRAVAUX_EN COURS_2005",
BD1, adOpenDynamic, adLockOptimistic
'Ouverture des 2 tables (GES_TEMP et TRAVAUX_EN_COURS_2005) etsélection de tousles champs(*) provenant (from) des tables
end sub






Private Sub cmdRecherche_Click()


Dim suppression as string

Set BD2 = New ADODB.Recordset


BD2.open « data source = chemin de BD2 » ‘?
BD2.Open "SELECT * FROM [GES_TEMPS] WHERE [DOSSIER] like '%" & txtRecherche.Text & "%' AND [EMPLOYER] like '%" & ListTempsEmployesRecherche.Text & "%'", BD2, adOpenKeyset, adLockBatchOptimistic

If BD2.RecordCount <> 0 Then

txtTempsDossier.Text = BD2!DOSSIER & ""
txtTempsTemps.Text = BD2!TEMPS & ""
txtTempsDate.Text = BD2!Date & ""
cboEmployes.Text = BD2!EMPLOYER & ""
cboTypeTravail.Text = BD2!TYPE_TRAVAIL & ""

Else



Suppression = MsgBox("Cette (Ces) donnée(s) n'existe(ent) que dans votre tête", vbOKOnly, "Non Disponible")

End If

txtTempsDossier.Enabled = True
cboEmployes.Enabled = True
txtTempsTemps.Enabled = True
txtTempsDate.Enabled = True
cboTypeTravail.Enabled = True
End Sub

Private Sub cmdAjout_Click()

txtTempsDossier.Enabled = True
txtTempsTemps.Enabled = True
txtTempsDate.Enabled = True
txtTempsDossier.SetFocus
cboTypeTravail.Enabled = True
cboEmployes.Enabled = True


GES_TEMP.AddNew
GES_TEMP(« nom du champ »)= nom du contrôle associé au champ


(EX :champ Nom associé à text1.text ou label 1.caption)
GES_TEMP.update


‘mise à jour de la table GES_TEMP donc de la BD


TRAVAUX_EN_COURS_2005.addnew


TRAVAUX_EN_COURS_2005(« nom du champ »)= nom du contrôle associé au champ
TRAVAUX_EN_COURS_2005.update

End Sub
0
Doro81079 Messages postés 380 Date d'inscription vendredi 22 avril 2005 Statut Membre Dernière intervention 24 février 2015 56
5 juil. 2005 à 15:20
ne te fis surtout pas au bouton recherche
0
Doro81079 Messages postés 380 Date d'inscription vendredi 22 avril 2005 Statut Membre Dernière intervention 24 février 2015 56
5 juil. 2005 à 16:55
toujours pas recu ton projet
0
zakimora Messages postés 1 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 14 août 2010
14 août 2010 à 15:25
salut
voilà moi aussi j'ai le meme problème , ce ptin de msg me dérange tellement
0
Rejoignez-nous