VB.Net Requete SQL et date ??? [Résolu]

Messages postés
532
Date d'inscription
lundi 5 juin 2006
Dernière intervention
6 octobre 2012
- 17 nov. 2009 à 02:46 - Dernière réponse :
Messages postés
58
Date d'inscription
lundi 22 juin 2009
Dernière intervention
10 juin 2011
- 18 nov. 2009 à 17:58
Bonjour à tous

Je cherche un moyen pour enregistrer un nouvel enregistrement dans ma BD avec une requête SQL. J'ai une date dans cette reqête et je crois que le bobo est relié à cette date.

Voici ma requête SQL qui ne fonctionne pas.
RequeteSQL = "INSERT INTO Paiements (Date,Prix,Carte,Description) VALUES (#" & _
txtDateAchat.Text & "#," & Me.txtPrixAchat.Text & ",'" & _
Me.cbxCarteAchat.Text & "','" & Me.txtDescriptionAchat.Text & "')"


J'ai toujours l'erreur me disant que j'ai un bug dans ma requête INSERT INTO.


Mon txtDateAchat = 2009-11-16

Dans ma BD Acces ma colonne date est en format date Date/Heure avec un format Date, abrégé (2007-06-19 exemple d'Access).

Quelqu'un peut me dire qu'est ce que je ne fait pas de correct.

Ma Colonne Prix est de type monétaire
Ma colonne Carte et Description sont de type texte.

merci de votre aide
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
17 nov. 2009 à 08:06
3
Merci
Salut
Quel type de base de données (Access, SQL Server ...) ?
Que donne ta chaine RequeteSQL après préparation ?
Tes champs textes comportent-ils des ' ?
Ton champ numérique possède t-il une virgule ou un point en guise de séparateur décimal ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Dernière intervention
6 octobre 2012
17 nov. 2009 à 13:57
0
Merci
Bonjour alors voici les réponses:

Quel type de base de données (Access, SQL Server ...) ?
Dans ma BD Acces ma colonne date est en format date Date/Heure avec un format Date, abrégé (2007-06-19 exemple d'Access).


Que donne ta chaine RequeteSQL après préparation ? Ici je ne suis pas certain de ta question...
INSERT INTO Paiements (Date,Prix,Carte,Description) VALUES (#2009-11-17#,100.00,'American Express','test')


Tes champs textes comportent-ils des ' ? Oui

Ton champ numérique possède t-il une virgule ou un point en guise de séparateur décimal ? C'est le point qui est utilisé mais mon Windows gère les virgules. Le bug peut-il venir de là ?
Commenter la réponse de cs_MagDix
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Dernière intervention
6 octobre 2012
17 nov. 2009 à 19:31
0
Merci
Rebonjour

J'avais un erreur dans la liste de mes colonnes

"INSERT INTO Paiements (Date,Prix,Carte,Description) VALUES ...


merci
Commenter la réponse de cs_MagDix
Messages postés
57
Date d'inscription
mardi 25 février 2003
Dernière intervention
27 janvier 2011
17 nov. 2009 à 20:13
0
Merci
probablement, ton probleme reside dans la date. en effet Sql ne considere que les dates au format americain c'est a dire mois-jours-annee. bien sur il faut adjoindre les dieses.


vblover
Commenter la réponse de vblover
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
17 nov. 2009 à 21:11
0
Merci
Re
Access : ce n'était pas évident à découvrir.

Ok pour la chaine résultat avant soumission.
A part le format date qui n'est surement pas reconnu par Access, je ne vois pas d'ambigüité.

Champs texte avec ' : Je voulais dire que, si à l'intérieur de ton texte tu as des ', cela posera problème, exemple avec ce texte "rue d'
Iena".
Avec ce dernier exemple, la chaine de la requète deviendrait :
  INSERT INTO Paiements (Date,Prix,Carte,Description) 
  VALUES (#2009-11-17#,100.00,'American Express','rue d'Iena')
Ici, bug garanti puisqu'il y a un nombre impair de '.
Il faut doubler les ' à l'intérieur de la chaine, si c'est le cas.

Point/Virgule : Oui, ça arrive. Faut tester.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Commenter la réponse de cs_Jack
Messages postés
57
Date d'inscription
mardi 25 février 2003
Dernière intervention
27 janvier 2011
17 nov. 2009 à 21:27
0
Merci
Je persiste et signe 2 problemes:
1) le format de la date
2) le nombre impair d'apostrophes


vblover
Commenter la réponse de vblover
Messages postés
58
Date d'inscription
lundi 22 juin 2009
Dernière intervention
10 juin 2011
18 nov. 2009 à 16:35
0
Merci
c'est ce que tu fait :
RequeteSQL = "INSERT INTO Paiements (Date,Prix,Carte,Description) VALUES (#" & _
txtDateAchat.Text & "#," & Me.txtPrixAchat.Text & ",'" & _
Me.cbxCarteAchat.Text & "','" & Me.txtDescriptionAchat.Text & "')"


essaie plutot ainsi : requetesql = "INSERT INTO Paiements (Date,Prix,Carte,Description) VALUES (#" & _
"" & txtDateAchat.Text & "#," & Me.txtPrixAchat.Text & ",'" & _
"" & Me.cbxCarteAchat.Text & "','" & Me.txtDescriptionAchat.Text & "')"

beaucoup de courage
Commenter la réponse de gillestang
Messages postés
57
Date d'inscription
mardi 25 février 2003
Dernière intervention
27 janvier 2011
18 nov. 2009 à 17:27
0
Merci
A moins que l'utilisateur saisisse la date au format americain dans txtdateachat, ce qui serait bizare, il faudrait passer par une conversion.
voici une fonction qui fait la conversion:
+++++++++++++++++++++++++++++++++++++++++++
Public Function dateformatamericain(ByVal str_Date As String) As String
Dim str_mois As String, str_jour As String, str_an As String

str_jour = Left(str_Date, 2)
str_mois = Mid(str_Date, 4, 2)
str_an = Right(str_Date, 2)
dateformatamericain = (str_mois + "-" + str_jour + "-" + str_an)

End Function
++++++++++++++++++++++++++++++++++++++++++++++
Dans ta requete sql remplace txtdateachat.text par dateformatamericain(txtdateachat.text).
ca devrait marcher a merveuille.
vblover
Commenter la réponse de vblover
Messages postés
58
Date d'inscription
lundi 22 juin 2009
Dernière intervention
10 juin 2011
18 nov. 2009 à 17:58
0
Merci
Voici la fonction que moi j'ai trouvé sur le net et qui marché bien

Function ConvertDateFormat(ByVal DateAConvertir As String) As String
Dim str() As String = Split(DateAConvertir, "/")
ConvertDateFormat = str(0) + "/" + str(1) + "/" + str(2)
End Function


et dans ton code tu fais

txtdateachat.text = ConvertDateFormat(txtdateachat.text.ToString)
Commenter la réponse de gillestang

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.