alanort
Messages postés16Date d'inscriptionsamedi 10 avril 2010StatutMembreDernière intervention22 avril 2010
-
5 avril 2010 à 21:51
alanort
Messages postés16Date d'inscriptionsamedi 10 avril 2010StatutMembreDernière intervention22 avril 2010
-
6 avril 2010 à 00:20
Bonjour,
voila je suis sur un travail en VB.NET et j'utilise un fichier access 2003 qui a été creer a partir de ce programme que j'ai telechargé d'internet:
Portable MS Office 2003 usbtools.exe. Je dois rentrer des dates dans plusieurs tables de la BDD. Donc j'utilise l'objet ocCommande qui est instancié comme un OleDb.OleDbCommand.
Private ocCommand As New OleDb.OleDbCommand
seulement lorsque je rentre une date dans une comboBox genre 05/04/2010, ce qui se trouve enregistré dans la BDD est 04/05/2010. De plus lorsque je fais un select de la date 04/05/2010, le programme me dit que ca n'existe pas alors qu'elle est enregistré dans la db.
voici le code: ce code s'active lorsqu'on je clique sur une date de la combobox(dates qui sont chargées a partir d'une autre partie de mon code).
Private Sub cbDateConsult_SelectedValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbDateConsult.SelectedValueChanged
Dim id As Integer ' sert a recupere le plus grand id d'un Soin Normal(table de ma DB) ou d'un SDia dans la table consultation
' j'essaie la connection
Try
ocConnexion.Open()
Catch ex As OleDb.OleDbException
MessageBox.Show(ex.Message)
End Try
If CBSNorm.CheckState = CheckState.Checked Then
With ocCommand
.CommandType = CommandType.Text
.Connection = ocConnexion
.CommandText = "SELECT id_soin_normal FROM Consultation WHERE [dateConsult]=#" + cbDateConsult.Text + "#;"
lecteur = .ExecuteReader() 'Format(#5/31/1993#, "dddd, d MMM yyyy"))
End With
lecteur.Read()
id = lecteur.Item(0)
lecteur.Close()
With ocCommand
.CommandType = CommandType.Text
.Connection = ocConnexion
.CommandText "SELECT * FROM SoinNormal WHERE id_soin_normal " & id & ";"
lecteur = .ExecuteReader()
End With
lecteur.Read()
Try
tbNoSN.Text = lecteur.Item(0)
RTMedicSN.Text = lecteur.Item(1)
txtBPoulPed.Text = lecteur.Item(2)
txtBPoulsTib.Text = lecteur.Item(3)
RTSoinEtTraitSN.Text = lecteur.Item(4)
'cbDateMes.Text = lecteur.Item(5)
lecteur.Close()
Catch ex As Exception
MsgBox(ex.GetType.ToString, MsgBoxStyle.OkOnly, "aaaargh")
End Try
ElseIf CBSDia.CheckState = CheckState.Checked Then
With ocCommand
.CommandType = CommandType.Text
.Connection = ocConnexion
.CommandText = "SELECT id_soin_diabetique FROM Consultation WHERE [Date]=#" + cbDateConsult.Text + "#;"
lecteur = .ExecuteReader() 'Format(#5/31/1993#, "dddd, d MMM yyyy"))
End With 'STR_TO_DATE('03.10.2003 09.20', '%d.%m.%Y %H.%i')
lecteur.Read()
id = lecteur.Item(0)
lecteur.Close()
With ocCommand
.CommandType = CommandType.Text
.Connection = ocConnexion
.CommandText "SELECT * FROM Soindiabetique WHERE id_soin_diabetique " & id & ";"
lecteur = .ExecuteReader()
End With
lecteur.Read()
Try
TbNoSD.Text = lecteur.Item(0)
RTMedSD.Text = lecteur.Item(1)
TxtbPoulPedSD.Text = lecteur.Item(2)
TxtbPoulTibSD.Text = lecteur.Item(3)
RTMonoSD.Text = lecteur.Item(4)
RTcompliSD.Text = lecteur.Item(5)
RTsoinTraitPodoSD.Text = lecteur.Item(6)
RTRemSD.Text = lecteur.Item(7)
lecteur.Close()
Catch ex As Exception
MsgBox(ex.GetType.ToString, MsgBoxStyle.OkOnly, "aaaargh")
End Try
End If
ocConnexion.Close()
End Sub
Pour ma part je pense que le code est bon mais bon peut etre que je me trompe. je vous remercie d'avance pour vos réponse.
A voir également:
Jours et mois qui s'inverse lorsque j' INSERT INTO une date 01/04/2010
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 5 avril 2010 à 22:21
salut,
pas vraiment une erreur, c'est juste que c'est faux de croire "voir" la date...
les slash etc ne sont qu'une représentation, du coup c'est un format date qu'il faut fournir (en en même temps c'est bien une chaine à cet endroit...)
donc 2 possibilités
soit laisser VB convertir :
.CommandText String.Format("SELECT id_soin_normal FROM Consultation WHERE [dateConsult] #{0:d}#;", cbDateConsult.Text)
soit forcer le format universel :
.CommandText String.Format("SELECT id_soin_normal FROM Consultation WHERE [dateConsult] #{0:yyyy-mm-dd}#;", cbDateConsult.Text)
qu'est-ce que çà donne?
ps : le + ne sert pas à concaténer mais à additionner! &, ou string.format qui est bien pratique...
tu peux factoriser un peu de code (LECTURE à destination des zones)
alanort
Messages postés16Date d'inscriptionsamedi 10 avril 2010StatutMembreDernière intervention22 avril 2010 5 avril 2010 à 22:37
Non ca marche pas
ok je comprends. mais l'ennuie alors c'est que c'est pas au niveau de la demande d'affichage pour une date donnee que ca cloche mais au moment de l'ajout des nouvelles informations dans la BDD a une date donnée. je m'explique car j'ai pas bien expliqué dès le départ et je m'en excuse:
mon code pour ajouter c'est ca:
Dim sResponse As String = MsgBox("Confirmation de l'ajout", MsgBoxStyle.OkCancel, "Ajouter Soin Normal")
If sResponse = "1" Then
Try
ocConnexion.Open()
With ocCommand
.CommandType = CommandType.Text
.Connection = ocConnexion
.CommandText = "INSERT INTO SoinNormal (medication,poulsPedieux,poulsTibiale,SoinEtTraitPodo) VALUES ('" + RTMedicSN.Text + "','" + txtBPoulPed.Text + "','" + txtBPoulsTib.Text + "','" + RTSoinEtTraitSN.Text + "');"
.ExecuteNonQuery()
End With
With ocCommand
.CommandType = CommandType.Text
.Connection = ocConnexion
.CommandText = "SELECT MAX(id_soin_normal) FROM SoinNormal;"
lecteur = .ExecuteReader()
End With
lecteur.Read()
idSoinNormal = lecteur.Item(0)
lecteur.Close()
With ocCommand
.CommandType = CommandType.Text
.Connection = ocConnexion
.CommandText = "INSERT INTO Consultation (id_patient,dateConsult,Type_Consult,id_soin_normal) VALUES (" & CInt(tbNo.Text) & "," + cbDateConsult.Text + ",'SN'," & idSoinNormal & ");"
cbDateConsult.Items.Add(ocCommand.ExecuteNonQuery())
Me.afficher("SN")
End With
MsgBox("le soin normal a bien ete rajouté")
Catch ex As OleDb.OleDbException
MessageBox.Show(ex.Message)
MessageBox.Show("L'opération d'insertion a échouée", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End If
ocConnexion.Close()
le code que j'ai mis avant c'est simplement pour recherche les info correspondant a la date que j'ai selectionnée dans ma comboBox. Maintenant ce que j'aimerai faire c'est que lorsque je fait l'insert into dans ma table Consultation, il inverse pas mois et jour (comme je l'ai dit avant lorsque je tape 01/02/2010, ce qui se trouve dans la base de donne c'est 02/01/2010).
apres cela je pense que ma recherche devrait aller non?
Vous n’avez pas trouvé la réponse que vous recherchez ?
alanort
Messages postés16Date d'inscriptionsamedi 10 avril 2010StatutMembreDernière intervention22 avril 2010 5 avril 2010 à 23:43
oui voila merci ca marche nickel maintenant. seulement j'ai pas tres bien compris ton system de format si ca te derange pas stp. ca correspond a quoi en fait quand tu met ca?
{0}, '{1:d}', 'SN', {2}
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 6 avril 2010 à 00:16
depuis la partie gauche de l'expression, les éléments entre {X} seront remplacés dans l'ordre de numérotation par ceux de droite
donc
0 sera remplacé par tbNo.Text
1 sera remplacé par cbDateConsult.Text
2 sera remplacé par idSoinNormal
mais pour 1 on précise directement le format de conversion donc TOUT COMME dans ma première réponse (......), tu peux mettre {1:d} = > DATE SHORT, ou (et je te le conseille) le format universel donc {1:YYYY-MM-DD}