Problème de code(Date)

Résolu
sancho12345 Messages postés 131 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 18 mars 2012 - 1 juil. 2009 à 14:00
sancho12345 Messages postés 131 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 18 mars 2012 - 2 juil. 2009 à 01:36
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

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
1 juil. 2009 à 15:51
DtPicker
accessible via
Menu Projet > Composants (Ctrl+T) > Microsoft Windows Common Controls 2
3
hellangel777 Messages postés 267 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 novembre 2013 1
1 juil. 2009 à 14:16
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
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
1 juil. 2009 à 15:30
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
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
1 juil. 2009 à 15:46
Et pourquoi ne pas utiliser le contrôle calendrier. Cela simplifierait la saisie aux utilisateurs.

Calade
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sancho12345 Messages postés 131 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 18 mars 2012
2 juil. 2009 à 01:36
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+   
0
Rejoignez-nous