La connexion entre la fenêtre de saisie et la base des données [Résolu]

- - Dernière réponse :  joelbelone - 4 avril 2013 à 15:45
Bonjours les amis,
Je n'arrive pas à réussir l'ajout des données, saisies à partir des zones de texte, sur la table de la base des données.
La base des données est crée sur acces. Elle est identifiée par BDCompagnie.mdb. La table est identifiée par TableauInfo

Mes codes sont comme suit :

Sur le module :

Général Déclaration

Public DB As New ADODB.Connection
Public RS As New ADODB.Recordset
Public Rss As New ADODB.Recordset

Public SQLs As String
------------------------------------------------
Sub PoolConnection()

If DB.State = adStateOpen Then DB.Close
DB.Provider = "Microsoft.Jet.OLEDB.4.0;"
DB.Open App.Path & "\BDCompagnie.mdb"

End Sub

-----------------------------------------------------------

Sur la feuille de saisie

Private Sub Form_Load()

'Au chargement de cette feuille, pour se connecte à la base des données

PoolConnection


SQLs = "select * from TableauInfo"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

End Sub

-----------------------------------------------------------

Sur le bouton ajouter

Private Sub cmdAjouter_Click()


If Text1 = "" Then
MsgBox "Veuillez saisir le Nom", vbCritical + vbMsgBoxRight, "Erreur de saisie"
Text1.SetFocus
Exit Sub
End If

If Text2 = "" Then
MsgBox "Veuillez saisir le Prénom", vbCritical + vbMsgBoxRight, "Erreur de saisie"
Text2.SetFocus
Exit Sub
End If


If Text3 = "" Then
MsgBox "Veuillez saisir le numéro de la C.I.N", vbCritical + vbMsgBoxRight, "Erreur de saisie"
Text3.SetFocus
Exit Sub
End If


If Text4 = "" Then
MsgBox "Veuillez saisir le numéro de la C.N.S.S", vbCritical + vbMsgBoxRight, "Erreur de saisie"
Text4.SetFocus
Exit Sub
End If


SQLs = " SELECT * FROM TableauInfo where CIN='" & Text3 & "'"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

If RS.EOF Then
GoTo OkAddNew:
Else
MsgBox "Attention, ce numéro existe déjà", vbCritical + vbMsgBoxRight, "Erreur de saisie"
Exit Sub
Text1.SetFocus
End If

OkAddNew:
MsgBox "Etes vous sûr de vouloir ajouter ces nouvelles données ?", vbQuestion + vbYesNo + vbMsgBoxRight, "Alors, que décidez vous ?"
If vbYes = True Then

RS.AddNew

If Not Text1 "" Then RS![NOM] Text1
If Not Text2 "" Then RS![PRENOM] Text2
If Not Text3 "" Then RS![CIN] Text3
If Not Text4 "" Then RS![CNSS] Text4

RS.Update
MsgBox "Ces données sont ajoutées", vbInformation + vbMsgBoxRight, "Données enregistrées"
End If

Text1 = ""
Text2 = ""
Text3 = ""
Text4 = ""

Text1.SetFocus

End Sub

------------------------------------------------------
Merci de m'aider à remplir ma table à partir de la feuille de saisie.
Afficher la suite 

12 réponses

Meilleure réponse
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
27 août 2013
3
3
Merci
Bonjour,

Je n'arrive pas à réussir l'ajout des données

C'est à dire?tu n'as pas de message d'erreur?

Tu travailles avec quelle version d'access?le moteur peut être différent pour les versions plus récentes (2007 et 2007)


L'expérience, c'est une connerie par jour, mais jamais la même..

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Commenter la réponse de lolokun
0
Merci
salut, juste une précision quel version de vb?


int mindongo
Commenter la réponse de MINDONGO
0
Merci
ou soit tu n'as pas fais quelque chose de ce genre?
Sub Source()
Rs.CursorType = adOpenKeyset
Rs.LockType = adLockOptimistic
Rs.Open SQLs, DB, , , adCmdText
End Sub



int mindongo
Commenter la réponse de MINDONGO
0
Merci
Je vous remercie pour votre attention, je travaille avec la version de microsoft office access 2003.
Commenter la réponse de mohalesage2013
0
Merci
Concernant la version de VB est n° 6
Commenter la réponse de mohalesage2013
0
Merci
Salut,
je veux savoir avec tes codes:
SQLs = " SELECT * FROM TableauInfo where CIN='" & Text3 & "'"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

If RS.EOF Then
GoTo OkAddNew:
Else
MsgBox "Attention, ce numéro existe déjà", vbCritical + vbMsgBoxRight, "Erreur de saisie"
Exit Sub
Text1.SetFocus
End If 


arrange : avec le Text3.text car partout je te vois oublié le .text
SQLs = " SELECT * FROM TableauInfo where CIN='" & Text3.text & "'"


Soyons Toujours à la disposition des autres
Commenter la réponse de MINDONGO
0
Merci
Merci pour votre tentative, seulement le problème persiste encore même en ajoutant .Text.
Je vous explique mon cas. en créant le TableauInfo, j'ai saisi les données de deux personnes; question de vérifier si, en fermant le tableau puis en l'ouvrant, les données sont toujours là.
Au démarrage de l'application, quant je saisie les données déjà portées sur le TableauInfo ( BD ), le message :"Attention, ce numéro existe déjà" saute au devant de l'écran.
Mais quant je saisie de nouvelles données, et pour vérifier, je les re-saisie, l'application ne réagit pas. Voilà mon problème
Commenter la réponse de mohalesage2013
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
27 août 2013
3
0
Merci
Bonjour,

Alors déjà ne cliques pas sur réponse acceptée tant que ton problème n'est pas résolu.

Ensuite quand tu postes un code, indentes-le et utilises l'outil de coloration syntaxique (3eme icone en partant de la droite)

Ton champ S.I.N est de quel type?

Je pense qu'il y a un souci d'organisation de ton programme, tu fais 2 fois la meme vérification à savoir si tes champs textes ne sont pas vides, faire un goto, ouivrir et fermer sans cesse ton recordset..
Penses à renommer tes controles avec des noms parlants, laisser text1, text2 etc etc si tu veux reprendre ton programme plus tard tu seras perdu..

L'expérience, c'est une connerie par jour, mais jamais la même..
Commenter la réponse de lolokun
0
Merci
salut,
regarde bien ici:
OkAddNew:
MsgBox "Etes vous sûr de vouloir ajouter ces nouvelles données ?", vbQuestion + vbYesNo + vbMsgBoxRight, "Alors, que décidez vous ?"
If vbYes = True Then

RS.AddNew

If Not Text1 "" Then RS![NOM] Text1
If Not Text2 "" Then RS![PRENOM] Text2
If Not Text3 "" Then RS![CIN] Text3
If Not Text4 "" Then RS![CNSS] Text4

RS.Update
MsgBox "Ces données sont ajoutées", vbInformation + vbMsgBoxRight, "Données enregistrées"
End If 


maintenant je te pose la question: ou est-ce que tu appel ta ligne de connexion?

normalement tu pourra tenter:
Call PoolConnection
sql "select * from  where   '" & TextMATR.Text & "'"


Soyons Toujours à la disposition des autres
Commenter la réponse de MINDONGO
0
Merci
Salut les amis,
Déjà sur la feuille ( Form_Load ), il y a la phrase d'appel de connexion à la
base des données, à savoir :

SQLs = " SELECT * FROM TableauInfo"

puis, dans la procédure écrite en cliquant sur le bouton Ajouter

il y'a cette phrase d'appel à la connexion avec cette condition pour éviter le double emploi, à savoir :

SQLs="SELECT * FROM TableauInfo where CIN=' " & Text3 & " ' "
Commenter la réponse de mohalesage2013
0
Merci
Bonjour les amis,
enfin un ami que je remercie comme je vous remercie vous aussi, a pu me guider dans le bon sens, et mon code a fonctionné comme il a été prévu.
Le code corrigé est comme suit :

Sur le module

Sub PoolConnection()

If DB.State = adStateOpen Then DB.Close
DB.Provider = "Microsoft.Jet.OLEDB.4.0"
DB.Open "Data Source =" & App.Path & "\BDAgafruit.mdb"

End Sub


Private Sub cmdAjouter_Click()

Dim Reponse As String

If Text1.Text = "" Then
MsgBox "Veuillez saisir le Nom", vbCritical + vbMsgBoxRight, "Erreur de saisie"
Text1.SetFocus
Exit Sub
End If

If Text2.Text = "" Then
MsgBox "Veuillez saisir le Prénom", vbCritical + vbMsgBoxRight, "Erreur de saisie"
Text2.SetFocus
Exit Sub
End If


If Text3.Text = "" Then
MsgBox "Veuillez saisir le numéro de la C.I.N", vbCritical + vbMsgBoxRight, "Erreur de saisie"
Text3.SetFocus
Exit Sub
End If


If Text4.Text = "" Then
MsgBox "Veuillez saisir le numéro de la C.N.S.S", vbCritical + vbMsgBoxRight, "Erreur de saisie"
Text4.SetFocus
Exit Sub
End If


SQLs = " SELECT * FROM TableauInfo where CIN='" & Text3.Text & "'"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

If RS.EOF Then
GoTo OkAddNew:
Else
MsgBox "Attention, ce numéro existe déjà", vbCritical + vbMsgBoxRight, "Erreur de saisie"
Exit Sub
Text1.SetFocus
End If

OkAddNew:
Reponse = MsgBox("Etes vous sûr de vouloir ajouter ces nouvelles données ?", vbQuestion + vbYesNo + vbMsgBoxRight, "Alors, que décidez vous ?")
If Reponse = vbYes Then

RS.AddNew


RS![NOM] = Text1
RS![PRENOM] = Text2
RS![CIN] = Text3
RS![CNSS] = Text4



RS.Update
MsgBox "Ces données sont ajoutées", vbInformation + vbMsgBoxRight, "Données enregistrées"
End If

Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""

Text1.SetFocus

End Sub

Private Sub cmdNouveau_Click()

TNom(1) = ""
TPrénom(2) = ""
TCin(3) = ""
TCnss(4) = ""

TNom(1).SetFocus


End Sub
Commenter la réponse de mohalesage2013
0
Merci
monsieur, j' ai une autre méthode mais je te l'écrirai demain.
bonne compréhension à toi!!!
Commenter la réponse de joelbelone