[VB] Ajouter un Enregistrement en ADO

Signaler
Messages postés
114
Date d'inscription
mardi 17 décembre 2002
Statut
Membre
Dernière intervention
2 juin 2004
-
Messages postés
1
Date d'inscription
samedi 4 novembre 2000
Statut
Membre
Dernière intervention
21 janvier 2005
-
Bonjour,
j'aimerai savoir comment est-il possible de rajouter un enregistrement d'un champ dans des textbox sur une table spécifique en ADO?
Quel est le code idéal pour cela?

Moi j'utilise ce code:
Private Sub cmdajouter_Click()
Adodc1.Recordset.AddNew
Adodc1.Refresh

Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\MICHAEL\Mes Fichiers\PROJETS\Projet Qualif (Michael)\contrat_qualif2000.mdb;Persist Security Info=False"
cn.Open

rs.Open "select max(numentreprise) as derniernum from entreprise"
Text1 = rs("derniernum") + 1
rs.Close

End Sub


Mais ça ne me rajoute pas après avoir cliqué sur le bouton Valider.
Comment faut-il faire exactement? si vous aviez une idée, ça serait sympa pour les débutants!
Merci d'avance!

8 réponses

Messages postés
310
Date d'inscription
jeudi 4 septembre 2003
Statut
Membre
Dernière intervention
9 juin 2005

je ne comprend pas tout a ton code pourkoi un adodc et un connection code

Pour ajouter une donnée de ton textbox dans ta table cela depent comment tu a declarer des champ si il sont lit ou delier

dans le cas ou tes champs sont lier

'Ouvre un nouvelle enregistrement
Adodc1.Recordset.AddNew
'Met a jour la table
Adodc1.update


si je peux me permettre j'ai fait deux tutorial sur ado sur mon site va les voir
http://www.hackeinfo.net

Dionysos

www.hackeinfo.net
Messages postés
114
Date d'inscription
mardi 17 décembre 2002
Statut
Membre
Dernière intervention
2 juin 2004

Merci pour ta réponse, je vais vérifier ce que tu as fourni comme Tuto e tester sur mon programme ce que ça donne!
Messages postés
114
Date d'inscription
mardi 17 décembre 2002
Statut
Membre
Dernière intervention
2 juin 2004

Voici mon code pr le boutonAJOUTER:
Private Sub cmdajouter_Click()
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\MICHAEL\Mes Fichiers\Projets\Projet Qualif (Michael)\contrat_qualif2000.mdb;Persist Security Info=False"
cn.Open

rs.Open "select max(numentreprise) as derniernum from entreprise", cn, adOpenDynamic, adLockOptimistic
Text1 = rs("derniernum") + 1
rs.Close

cmdajouter.Enabled = False
cmdsupprimer.Enabled = False
cmdannuler.Enabled = True
cmdmodifier.Enabled = False
cmdvalider.Enabled = True
Text2 = ""
Text3 = ""
Text4 = ""
Text5 = ""
Text6 = ""
Text2.Enabled = True
Text3.Enabled = True
Text4.Enabled = True
Text5.Enabled = True
Text6.Enabled = True
Text2.SetFocus

End Sub


En clair ce code me fait un raffraichissement des textbox, et que malgré que dans ma base de donnée, il y a 7 enregistrements dans la table OPCA, ça m'affiche:
au lieu du 8e!
Quelqu'un peut m'expliquer svp?

Merci d'avance
Messages postés
114
Date d'inscription
mardi 17 décembre 2002
Statut
Membre
Dernière intervention
2 juin 2004

Ok, j'ai pu résoudre ce problème lié à la clé primaire de la table, donc du numéro de l'entreprise.

D'autre part, comment Valider cet ajout? J'ai un problème de validation du nouvel enregistrement....
Voici mon code:
Private Sub cmdvalider_Click()
If Text2 "" And Text3 "" And Text4 = "" And Text5 = "" And Text6 = "" And Text7 = "" And Text8 = "" Then
rep = MsgBox("VOUS N'AVEZ SAISI AUCUNE INFORMATION SUR LE LIBELLE DE FORMATION" & vbCrLf & "OU UN MANQUE DE SAISIE!" & vbInformation + vbOKOnly, "Erreur de saisie")

ElseIf Text2 "0" And Text3 "0" And Text4 = "0" And Text5 = "0" And Text6 = "0" And Text7 = "0" And Text8 = "0" Then
rep = MsgBox("VOUS NE POUVEZ SAISIR DU NUMERIQUE SUR UN LIBELLE DE FORMATION SUR QUELQUES CRITERES", vbExclamation + vbOKOnly, "Erreur de saisie")

Else
Adodc1.Recordset.Update
Adodc1.Refresh

cmdannuler.Enabled = True
cmdvalider.Enabled = False
cmdajouter.Enabled = True
cmdsupprimer.Enabled = True
cmdmodifier.Enabled = True
    End If
End If
Text2.Enabled = False
Text3.Enabled = False
Text4.Enabled = False
Text5.Enabled = False
Text6.Enabled = False
Text7.Enabled = False
Text8.Enabled = False
End Sub


Merci pour vos lumières!
Messages postés
310
Date d'inscription
jeudi 4 septembre 2003
Statut
Membre
Dernière intervention
9 juin 2005

bon deja sur ton premier code tu fait une connection code et sur le deuxieme une connection adodc .
mon exemple que je t'avais mit etais un simple exemple il n'est pas obliger de faire avec un adodc donc la garde ta connection code.
essaye de faire un simple ajout d' un champs pour voir si ca marche car perso je ne vois pas de pb sauf si tu a mal paramettrer ton adodc
Dionysos

www.hackeinfo.net
Messages postés
114
Date d'inscription
mardi 17 décembre 2002
Statut
Membre
Dernière intervention
2 juin 2004

Je valide l'enregistrement créé à partir des renseignements donnés par l'utilisateur. Le problème dans tout ça, c'est qu'en validant, les nouvelles données le dernier recordset, c'est à dire que si, dans ma table, il y a 6 enregistrements, alors le nouveau créé écrase le 6em et ça met à jour également sur Access!
Voici mon code pour cmdvalider:
Private Sub cmdvalider_Click()
Set rs =  New ADODB.Recordset
rs.Open "SELECT * FROM opca", cn, adOpenDynamic, adLockOptimistic
rs.Update


et celui du bouton cmdajouter à partir donc d'une connection code:
Private Sub cmdajouter_Click()

rs.Open "SELECT max(numopca) as derniernum FROM opca", cn, adOpenDynamic, adLockOptimistic
Text1.Text  = rs("derniernum") + 1
rs.Update
rs.Close


Avec tout ceci, je ne peux circuler avec le controle Adodc car il m'indique le message suivant:

Quelqu'un peut-il m'expliquer svp car ça me bloque la suite de mon programme?
Merci d'avance!
Messages postés
5
Date d'inscription
vendredi 17 décembre 2004
Statut
Membre
Dernière intervention
6 janvier 2005

Bonsoir !

Comment controler une zone de text pour q'elle ne soit pas vide avant de le en registrer dans un table

j'ai utilise

if form.text1.text="" then
mesgbox( le champ est vide)
else
adodc1.recorset.addew
end if

mais ce n'a pas marche.

Vous pouvez m'aider
Messages postés
1
Date d'inscription
samedi 4 novembre 2000
Statut
Membre
Dernière intervention
21 janvier 2005

yop

ton original t'as fait un c/c ??
if form.text1.text="" then
mesgbox( le champ est vide)
else
adodc1.recorset.addew
end if

parceque c'est :
msgbox "Le champ est vide"
essaye sinon 'text1.value' des fois ça marche ;)
adodc1 c'est le nom de ton recordset ??
adodc1.addnew
je ne crois pas que le 'recordset' soit obligatoire ;)
bon faudrait que je me remette à VB pr pouvoir mieux t'aider ;)
++

Qui BoitSansSoif VomiSansEfforts
http://www.NetTvPlayer.com