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"
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.
A voir également:
La connexion entre la fenêtre de saisie et la base des données
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 & "'"
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
lolokun
Messages postés1241Date d'inscriptionmardi 10 octobre 2006StatutMembreDernière intervention27 août 20137 20 févr. 2013 à 09:13
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..
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 & "'"
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