Bonjour à tous,
Voilà j'ai un problème sur mon code.
L'extrait du code correspond à un bouton de validation pour enregistrer des données dans une base ACCESS.
- Lorsque l'on valide par cmd_ajouter_prodan_Click()si la date n'est pas valide il enregistre quand même dans la base ACCCESS mais sans la date, après avoir valider le MsgBox .
- Si dans le texte box txt_date_prodan on écrit un texte nom numérique il accepte quand même et enregistre dans la base ACCCESS mais sans mettre de date, après avoir valider le MsgBox, .
*************************************************
Private Sub cmd_ajouter_prodan_Click()
' connexion à la base de données
'objet de connexion
Set cnx = New ADODB.Connection
Set rst = New ADODB.Recordset
'Définition du pilote de connexion
cnx.Provider = "Microsoft.Jet.Oledb.4.0"
'Définition de la chaîne de connexion
cnx.ConnectionString = "baseproduits.mdb"
'Ouverture de la base de données
cnx.Open
Dim requete As String
requete = " SELECT nom_pdt FROM prodan"
rst.Open requete, cnx
'affichage des enregistrements
If rst.EOF = True Then
Else
'test si le produit existe déja dans la base ( si oui aller à fin: )
rst.MoveFirst
While Not (rst.EOF)
If txt_nom_produit_prodan.Text = rst("nom_pdt") Then
MsgBox "Ce produit existe déja dans la liste , pour ajouter une quantité de ce produit au stock , utiliser l'option Ajouter Quantité au menu principal .", vbInformation + vbOKOnly, "Produit existant"
GoTo fin
End If
rst.MoveNext
Wend
rst.Close
cnx.Close
End If
' verification des champs
If form_ajout_produit_prodan.txt_nom_produit_prodan = "" Or form_ajout_produit_prodan.txt_quantite_prodan = "" Or form_ajout_produit_prodan.txt_date_prodan = "" Then
MsgBox "Les champs que vous avez laissé vides sont obligatoires ", vbOKCancel + vbInformation, "Erreur"
Else
' verification du format de la date ( limiter les erreurs seulement )
For i = 1 To 10
If i = 3 Or i = 6 Then
Else
a = Mid(txt_date_prodan.Text, i, 1)
If a = "0" Or a = "1" Or a = "2" Or a = "3" Or a = "4" Or a = "5" Or a = "6" Or a = "7" Or a = "8" Or a = "9" Then
' requete d'ajout de données
valide = True ' si la date est bonne
' si erreur dans la date
Else
MsgBox " Attention , une date s'écrit de la forme : 01/01/2000 ", vbOKOnly + vbInformation, "Erreur"
i = 11
'txt_date_prodan = "" 'si on rajoute cette ligne cela insert dans le stock sans date
End If
End If
Next i
date_mnt = Date
date_choisie = txt_date_prodan
If valide = True Then
sql_insert_prodan = "INSERT INTO prodan(nom_pdt,quantite,date_expiration,date_entree) values(""" & txt_nom_produit_prodan & """ , """ & txt_quantite_prodan & """ , """ & date_choisie & """ , """ & date_mnt & """ ) "
' appel de la fonction qui va ajouter le produit
Call Form1.supprimer_modifier_produit_ajouter_prodan(sql_insert_prodan)
' si on veut quitter ou ajouter un autre produit
choix = MsgBox("Opération effectuée , voulez vous ajoutez un autre produit ?", vbQuestion + vbYesNo, "Confirmation")
If choix = vbYes Then
txt_nom_produit_prodan = ""
txt_quantite_prodan = ""
Else
Unload Me
End If
' fin choix
End If
End If
fin:
End Sub
Questions :
Auriez-vous une solution en modifiant ce code pour justement :
1. Ne pas accepter autre chose que des valeurs numériques dans le txt_date_prodan.
2. Contrôler si la date et valide, si oui l'enregistrer sinon revenir et la retaper
Merci par avance à tous