Demande d'aide en c#

Résolu
mouradho4 Messages postés 4 Date d'inscription mardi 23 février 2010 Statut Membre Dernière intervention 2 mai 2012 - 30 avril 2012 à 16:50
mouradho4 Messages postés 4 Date d'inscription mardi 23 février 2010 Statut Membre Dernière intervention 2 mai 2012 - 2 mai 2012 à 01:47
Salut tt le monde, j'aimerai avoir de l'aide dans un projet
Pour commencer j'ai une BD sous Sqlserver qui contient 2 tables (Personne(ID,NOM,PRENOM) / Absence(IDA,DATE_DEBUT,DATE_FIN,TYPE,INFO)) liées avec une cardinalité de 1.n des 2 cotés ce qui fais que je peut manipulé à l'aide de la relation AVOIR qui a 2 clé PK,FK (ID et IDA)
Ma question est la suivante : si je choisi une personne d'un control dropdownlist et une date d'un calendrier, comment savoir si cette personne est absente ou presente dans cette date avec le TYPE et INFO si elle est absente ?
et Merci d'avance

4 réponses

cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 9
2 mai 2012 à 01:17
Bonjour,

le Reader.NextResult() permet de selectionner un deuxieme lot de données et pas de passer à l'enregistrement suivant.

While(Reader.Read())
{
}


lit les enregistrements de ton select.

le select suivant te donne les infos que tu veux

SELECT p.ID,p.NOM,p.PRENOM,a.TYPE,a.INFO
FROM Personne p LEFT JOIN Absence a ON p.ID = a.IDPersonne
WHERE p.ID = @IDPersonne
AND p.ID in (select IDPersonne from Absence where @DateChoisie BETWEEN a.DATE_DEBUT AND a.DATE_FIN)


il suffit ensuite de tester si Type et info sont null ou pas.

Attention
null en sql
et
null en c#
sont différents.

voir : http://msdn.microsoft.com/fr-fr/library/system.convert.isdbnull.aspx

pas testé mais cela doit fonctionner.






Faites simple, aussi simple que possible, mais pas simpliste.
A. Einstein.
3
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
30 avril 2012 à 18:56
Bonjour

Première chose : merci de mettre un titre plus explicite la prochaine fois.

Déjà, il manque un champ IDPersonne dans ta table absence.
Ensuite, tu as juste à faire une requête du style :
SELECT *
FROM Personne p INNER JOIN Absence a ON p.ID = a.IDPersonne
WHERE p.ID = @IDPersonne
AND @DateChoisie BETWEEN a.DATE_DEBUT AND a.DATE_FIN


Après, si reader.Read() renvoie true, c'est qu'il y a une entrée, et tu peux récupérer reader["TYPE"] et reader["INFO"].
Sinon, c'est que tu n'as pas d'entrée.

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
0
mouradho4 Messages postés 4 Date d'inscription mardi 23 février 2010 Statut Membre Dernière intervention 2 mai 2012
30 avril 2012 à 19:28
Merci Mr krimog pour ta reponse , le code ke ta donné affiche la liste des personnes absence alors que je vx le contraire "affiché la liste des personnes presents" et j'ai essayé le DataReader avec While(Reader.Read()) mais Reader.NextResult() ne fonctionne pas il traite tjr que la 1ère personne .
je voulais precisé que le projet est sous ASP.net avec un traitement en code behind en c# et dsl pr le titre je savais pas koi ecrire
0
mouradho4 Messages postés 4 Date d'inscription mardi 23 février 2010 Statut Membre Dernière intervention 2 mai 2012
2 mai 2012 à 01:47
Merci cgandco, je vien de trouvé la solution klk part et ui ta raison t areponse est juste sauf ke ta oublié " NOT IN" pour affiché la liste des presents ke leur ID ne dois pas figuré parmi les absents entre les 2 dates
0
Rejoignez-nous