Différence entre deux dates

joujma5 Messages postés 152 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 5 décembre 2014 - 25 mars 2011 à 16:27
joujma5 Messages postés 152 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 5 décembre 2014 - 29 mars 2011 à 12:55
bonjour,
je travail sur un petit programme et je veux garder la date du lot d'un produit la plus proche puis l'afficher.voici le bout de code:
Try
            cnx.Open()
            Dim cmd As New SqlCommand("select expedition,qtite from lot where id_produit=  '" & Form1.DataGridView1.SelectedRows(0).Cells(1).Value & "'", cnx)
            Dim reader As SqlDataReader
            reader = cmd.ExecuteReader()
            Dim var As Date
            While reader.Read()
                var = reader("expedition")
                If (DateDiff(DateInterval.Day, var, reader("expedition"))) < 0 Then
                    var = reader("expedition")
                End If
            End While
            MsgBox(var)


        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, "Erreur")
        End Try

Merci

14 réponses

4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
28 mars 2011 à 16:17
Oui! Mais là il faut nous dire (exactement) ou tu as des problèmes.
0
joujma5 Messages postés 152 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 5 décembre 2014
28 mars 2011 à 18:04
bonjour,
le problème est que la variable "var" ne prend pas la date inférieure.
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
29 mars 2011 à 09:44
Tu dis "le problème est que la variable "var" ne prend pas la date inférieure." Si tu veut que var aie la date de hière il faut utilisé Dadateadd() voici un exemple qui fait que v_i vaut la date de hière

Dim v_i As Date
v_i = Date 'v_i vaut la date d'aujourd'hui
v_i = DateAdd("d", -1, v_i)'v_i vaut un jour de moins
0
joujma5 Messages postés 152 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 5 décembre 2014
29 mars 2011 à 10:07
bonjour,
peut être que je me suis mal exprimer, je t'explique l'idée:
en faite il s'agit de gestion de lot de produit, un produit peut être présent dans un ou plusieurs lots, alors je cherche à ce que la variable "var" reçoit comme valeur la date inférieur parmi tous les dates des lots pour un produit donné.
Merci
0

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

Posez votre question
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
29 mars 2011 à 10:16
Après var = reader("expedition") fais msgbox var et dis moi ce qui s'affiche
0
joujma5 Messages postés 152 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 5 décembre 2014
29 mars 2011 à 10:20
je pense que le problème existe au niveau du code et non dans la fonction.
0
joujma5 Messages postés 152 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 5 décembre 2014
29 mars 2011 à 10:22
il m'affiche les dates des lots un par un
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
29 mars 2011 à 10:40
J'ai compris tu as un problème d'analyse.
reader("expedition") change à chaque tour donc DateDiff(DateInterval.Day, var, reader("expedition") vaut tjs 0.

Autrement dis.

Tu rentre das la boucle reader("expedition") vaut 01.01.2012 tu met la valeur dans var qui vaut aussi 01.01.2012 et après tu teste si DateDiff(DateInterval.Day, 01.01.2012, 01.01.2012)<0 ! Tu vois ou est l'erreur .

2 solutions

1) tu remet une boucle par dessus genre
Dim var As Date

while v_var na pas pris tout les valeur
var = reader("expedition")
While reader.Read()
If (DateDiff(DateInterval.Day, var, reader("expedition"))) < 0 Then
var = reader("expedition")
End Ir
End While
end while ficitf

le but es que var ne change que si il a était comparé avec tout les autres

2) Si ton champs expedition et un champs date change ta requête pour inclure un beetwen (un truc du genre)

Suis-je assez claire ?
0
joujma5 Messages postés 152 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 5 décembre 2014
29 mars 2011 à 11:18
Merci bien, j'ai utilisé ce code est ça marche aussi, dis moi ton avis:

Try
cnx.Open()
Dim cmd As New SqlCommand("select expedition,qtite from lot where id_produit= '" & Form1.DataGridView1.SelectedRows(0).Cells(1).Value & "'", cnx)
Dim reader As SqlDataReader
reader = cmd.ExecuteReader()
Dim var As Date
reader.Read()
var = reader("expedition")
reader.Close()
reader = cmd.ExecuteReader()
While reader.Read()
If (DateDiff(DateInterval.Day, var, reader("expedition"))) < 0 Then
var = reader("expedition")
End If
End While

MsgBox(var)
0
joujma5 Messages postés 152 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 5 décembre 2014
29 mars 2011 à 11:24
mmmm dsl le code que j'ai posté ne marche pas je le retire.
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
29 mars 2011 à 12:06
E non cela ne peut pas marcher!!!
Il te manque une boucle.

peux-tu mettre des indexe ce qui donnerait un code comme celui qui suit

dim v_i as singel
dim v_j as singel
v_i=1
v_j=2
While not reader(v_i).eof
If (DateDiff(DateInterval.Day, reader(v_i).("expedition"), reader(v_j).("expedition"))) < 0 Then
'*************Fait ce que tu veux*************
End If
v_j=v_j+1
if reader(v_j).eof then
v_i=v_i+1
v_j=v_i+1
end if
end while

Ce code est faut (ou alor j'ai du bole) mais te donne une idée de ce que tu dois avoir.

Encore une chose ton champ c du texte ou une date ?
0
joujma5 Messages postés 152 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 5 décembre 2014
29 mars 2011 à 12:26
Merci cher ami pour ton aide,j'ai changer le programme par l'affichage d'un simple form contenant tous les dates et donner le choix à l'utilisateur pour cocher celle qu'il veut.
Merci bien
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
29 mars 2011 à 12:30
Bien Comme ça var est une constante et tu n'as plus besoin de changer ça valeur. Futé . Bonne journée est bon code !!!
0
joujma5 Messages postés 152 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 5 décembre 2014
29 mars 2011 à 12:55
merci amigo ;)
0
Rejoignez-nous