Problème de code(Date) [Résolu]

Signaler
Messages postés
131
Date d'inscription
jeudi 21 mai 2009
Statut
Membre
Dernière intervention
18 mars 2012
-
Messages postés
131
Date d'inscription
jeudi 21 mai 2009
Statut
Membre
Dernière intervention
18 mars 2012
-
Bonjour à tous,


 <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>


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.


<ol style="MARGIN-TOP: 0cm" type="1">
<li class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt">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 .</li>
<li class ="MsoNormal" style= "MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt">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,  .</li>
</ol>
*************************************************


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

5 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
DtPicker
accessible via
Menu Projet > Composants (Ctrl+T) > Microsoft Windows Common Controls 2
Messages postés
267
Date d'inscription
jeudi 5 février 2009
Statut
Membre
Dernière intervention
26 novembre 2013
1
Bonjour,

Pas besoin de poster 2 fois
1. Regarde la fonction IsNumeric
2. Test le format

Ensuite donne ton code et le message d'erreur

HellAngel777
<hr />
Les machines ne font pas d'erreurs
Heureusement nous sommes humains
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
IsDate pour tester la vaidité d'une date, c'est plus simple.

un peu de lecture à ce sujet:

http://blogs.codes-sources.com/renfield/archive/2009/04/14/param-tres-r-gionnaux-en-g-n-ral-et-avec-vb6.aspx
Messages postés
1207
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
10
Et pourquoi ne pas utiliser le contrôle calendrier. Cela simplifierait la saisie aux utilisateurs.

Calade
Messages postés
131
Date d'inscription
jeudi 21 mai 2009
Statut
Membre
Dernière intervention
18 mars 2012

Merci à tous pour vos réponses mais c’est la solution de Renfieldque j’ai adopté.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>




 





Le DtPicker est un peu lourd pour la saisie de la date  mais par contre il n’y a plus de possibilité d’erreurs en sortie.



J’ai récupéré la valeur(value) pour afficher dans un textbox.





 





Encore merci à tous.





 





A+