Savoir si une date est dans moins de 30j

mattpeufpeuf Messages postés 33 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 18 décembre 2008 - 18 déc. 2008 à 10:46
cs_bellak Messages postés 136 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 5 mai 2011 - 18 déc. 2008 à 15:32
bjr, j'ai un petit problème d'algo.
J'ai une datagridview avec mes données et dedans il y a une date de fin, et je veux que si cette date est dans moins de 30j (par rapport à aujourd'hui), il y est une colone de type checkbox qui se coche dans ce cas.


voici ma partie de code


string sq = "SELECT RaisonSociale,Adresse,DateFin FROM ABONNEMENT,REVUE WHERE ABONNEMENT.CodeRevue=Revue.Code AND Revue.Titre = @Titre ";
OleDbDataAdapter DTA = new OleDbDataAdapter(sq, conn);
DTA.SelectCommand.Parameters.Add("@code",comboBox.Text);
try{ DTA.Fill(DTSet,"ABONNEMENT");
// on affiche les données dans la datagridview
dataGridView.DataSource = DTSet.Tables["ABONNEMENT"];

}catch { //bug }

11 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
18 déc. 2008 à 10:59
0
mattpeufpeuf Messages postés 33 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 18 décembre 2008
18 déc. 2008 à 11:11
euh merci
mais il y a pas un petit algo genre:
if datefin < datenow(+30)
checkbox<==vrai
je sais pas si c'est très facile à comprendre

http://mattpeufpeuf.online.fr/projet/Image%201.png
0
cedricperes Messages postés 38 Date d'inscription jeudi 3 mai 2007 Statut Membre Dernière intervention 18 décembre 2008
18 déc. 2008 à 14:29
Bonjour

Tu peux modifier ta source et rajouter
Il y a deux possibilites :

   - Soit tu rajoutes un booleen IsLessThan30Days a updater avant d'inserer les donnees dans ton grid, qui serait a true si c'est moins de 30 jours, et a ce moment tu recuperes directement la valeur dans un asp:CheckBoxField;
   
   - Soit tu utilises la methode OnRowDataBound pour checker ligne a ligne.

Cedric
0
mattpeufpeuf Messages postés 33 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 18 décembre 2008
18 déc. 2008 à 14:39
merci cedric
je pense que le plus simple est dans la boucle quand on affiche les données mais quel est le code qu'il faut vraiment?
0

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

Posez votre question
cs_bellak Messages postés 136 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 5 mai 2011
18 déc. 2008 à 14:51
Salut ,
vous pouvez ajouter apres le chargement des donnees dans DGV une DataGridViewCheckBoxColumn puis vous verifiez les cellules de la colonne date .mais qui est pas du tout propre puisqu'on a le .NET , et meme vous aurez de problemes si vous faites un tri .
0
cedricperes Messages postés 38 Date d'inscription jeudi 3 mai 2007 Statut Membre Dernière intervention 18 décembre 2008
18 déc. 2008 à 14:54
Ce serait un truc de ce genre la :

protected

void YourGrid_RowDataBound(
object sender,
GridViewRowEventArgs e){

if (e.Row.RowIndex >= 0)
// parce que la methode commence sur les en-tetes de colonne (index -1){

// tu recuperes la date dans la colonne de ton datagrid

int indexColDate = 1;
// par exemple

int indexColCheckBox = 2;
// par exemple

DateTime date =
Convert.ToDateTime(e.Row.Cells[indexColDate].Text);

if (date.CompareTo(
DateTime.Now.AddDays(-30)) == 1)((

CheckBox)e.Row.Cells[indexColCheckBox].Controls[1]).Checked =
true;}

}

Mais le plus performant serait de definir avant d'inserer les donnees dans le datagrid

Cedric
0
mattpeufpeuf Messages postés 33 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 18 décembre 2008
18 déc. 2008 à 15:01
et il faut l'inserer ou?
0
cedricperes Messages postés 38 Date d'inscription jeudi 3 mai 2007 Statut Membre Dernière intervention 18 décembre 2008
18 déc. 2008 à 15:13
Tu definis dans ton grid, dans ta page aspx, l'evenement "OnRowDataBound" et tu rajoutes la methode ci-dessus dans ta page aspx.cs

Cedric
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
18 déc. 2008 à 15:23
Le problème est quand windows form l'evenement
RowDataBound
N'est pas disponible sur le datagridview donc il pfaut passer par l'evenement

CellFormatting

Et recuperer l'item courant avec
Customer cust =
YourGrid.rows[e.rowindex].DataBoundItem as Customer;
0
mattpeufpeuf Messages postés 33 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 18 décembre 2008
18 déc. 2008 à 15:25
dans mes evenements il n'y a pas onrowdatabound :'(
0
cs_bellak Messages postés 136 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 5 mai 2011
18 déc. 2008 à 15:32
donc vous utilisez soit la methode "nhervagault" soit une boucle pour parcourir tout les elements de la colonne . mais comme j'ai dis il faut eviter le tri depuis le header
0
Rejoignez-nous