Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3229 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  fonction qui retourne nb jours entre 2 dates

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

fonction qui retourne nb jours entre 2 dates

n°1219544
uxam
Posté le 10-10-2005 à 14:15:36  profilanswer
 

j'ai besoins de faire une fonction qui me retourne le nombre de jours entre 2 dates d'un objet... je nage... j'ai écrit ca  

Code :
  1. public int getNbJours(Abonnement abt) {
  2.     String requete =
  3.         "SELECT DATEDIFF(abt_dateFin,abt_dateDebut) FROM t_abonnement WHERE abt_id =" +
  4.         abt.getAbt_id();
  5.     nbJours = ?????
  6.     return nbJours;
  7.   }

mood
Publicité
Posté le 10-10-2005 à 14:15:36  profilanswer
 

n°1219554
sircam
I Like Trains
Posté le 10-10-2005 à 14:19:20  profilanswer
 

Oui, et ?
 
C'est du Java ou du SQL ?
 
Que se passe-t-il ? Msg d'erreur ? Résultat incorrect ?
 
[:pingouino]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1219555
nerisson
Pic-pic
Posté le 10-10-2005 à 14:19:39  profilanswer
 

Et si tu récupérais tes dates de début et de fin via une requete SQL, et que tu calculais la différence en Java via des objets GgregorianCalendar ?
Je dis ca, on est dans la cat Java la  :o


---------------
Light is right
n°1219567
uxam
Posté le 10-10-2005 à 14:28:59  profilanswer
 

j'utilise jcalendar pour récupérer mes dates

n°1219568
sircam
I Like Trains
Posté le 10-10-2005 à 14:29:06  profilanswer
 

Faire une recherche sur "JDBC", "tutorial JDBC" sur le site de Sun pour découvrir comment se connecter à la DB et exécuter des queries.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1219577
uxam
Posté le 10-10-2005 à 14:32:08  profilanswer
 

sircam a écrit :

Faire une recherche sur "JDBC", "tutorial JDBC" sur le site de Sun pour découvrir comment se connecter à la DB et exécuter des queries.


ca je sais c'est pas le problème, le truc c'est que mon abt.getAbt_id(); est tjrs à -1, je n'arrive pas à l'initialiser avec l'id que j'ai récupéré

Code :
  1. void jButtonisPaye_actionPerformed(ActionEvent e) {
  2.     if (jTableAbonnements.getSelectedRow() != -1) {
  3.       int id = ( (Integer) jTableAbonnements.getValueAt(jTableAbonnements.
  4.           getSelectedRow(), 0)).intValue();
  5.      
  6.       abonnement = new Abonnement(id);
  7.       int nbJours = requetesAbonnement.getNbJours(abonnement);
  8.       System.out.println(nbJours);
  9.     }

n°1219583
sircam
I Like Trains
Posté le 10-10-2005 à 14:37:58  profilanswer
 

[:kiki]
 
Les deux codes que tu viens de poster n'ont RIEN A VOIR l'un avec l'autre.
 
Si ta question est une question DB, enlèves le code AWT/SWING avant de poster.
 
Et inversément.
 
C'est normal que tu n'y arrives pas : tu mélanges tout sans maîtriser aucune des parties qui composent l'ensemble !


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1219589
uxam
Posté le 10-10-2005 à 14:42:09  profilanswer
 

bon voila l'erreur

Citation :

Error in execute SQL
 
sql: SELECT DATEDIFF(abt_dateFin,abt_dateDebut) FROM t_abonnement WHERE abt_id =-1
 
No row count was produced, code: 0, State: null

n°1219626
nerisson
Pic-pic
Posté le 10-10-2005 à 15:24:34  profilanswer
 

Bon voila ou est le problème:

Code :
  1. int id = ( (Integer) jTableAbonnements.getValueAt(jTableAbonnements.
  2.           getSelectedRow(), 0)).intValue();


---------------
Light is right
n°1219635
uxam
Posté le 10-10-2005 à 15:35:08  profilanswer
 

bon le problème du -1 venait de mon constructeur abonnement. Mais j'ai toujours cette erreur

Citation :

Error in execute SQL
 
sql: SELECT DATEDIFF(abt_dateFin,abt_dateDebut) FROM t_abonnement WHERE abt_id = 39
 
No row count was produced, code: 0, State: null

mood
Publicité
Posté le 10-10-2005 à 15:35:08  profilanswer
 

n°1219637
uxam
Posté le 10-10-2005 à 15:35:26  profilanswer
 

nerisson a écrit :

Bon voila ou est le problème:

Code :
  1. int id = ( (Integer) jTableAbonnements.getValueAt(jTableAbonnements.
  2.           getSelectedRow(), 0)).intValue();



non ca ca marche

n°1219660
sircam
I Like Trains
Posté le 10-10-2005 à 16:00:17  profilanswer
 

uxam a écrit :

non ca ca marche


Pour la 2è fois : tu peux être plus précis et plus rigoureux ?   [:pingouino]  


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1219745
nerisson
Pic-pic
Posté le 10-10-2005 à 17:15:58  profilanswer
 

uxam a écrit :

bon le problème du -1 venait de mon constructeur abonnement. Mais j'ai toujours cette erreur

Citation :

Error in execute SQL
 
sql: SELECT DATEDIFF(abt_dateFin,abt_dateDebut) FROM t_abonnement WHERE abt_id = 39
 
No row count was produced, code: 0, State: null



Faire voir le contenu de la ligne par un

Code :
  1. SELECT * FROM t_abonnement WHERE abt_id = 39


---------------
Light is right
n°1219843
uxam
Posté le 10-10-2005 à 18:53:57  profilanswer
 

nerisson a écrit :

Faire voir le contenu de la ligne par un

Code :
  1. SELECT * FROM t_abonnement WHERE abt_id = 39



euh ben ca sort les info de l'abonnement 39

n°1219845
uxam
Posté le 10-10-2005 à 18:54:40  profilanswer
 

sircam a écrit :

Pour la 2è fois : tu peux être plus précis et plus rigoureux ?   [:pingouino]


le problème c'est cette erreur

Citation :


Error in execute SQL
 
sql: SELECT DATEDIFF(abt_dateFin,abt_dateDebut) FROM t_abonnement WHERE abt_id = 39
 
No row count was produced, code: 0, State: null

je ne comprends pas d'ou elle provient, je vois pas quel code mettre...

n°1220145
nerisson
Pic-pic
Posté le 11-10-2005 à 09:21:15  profilanswer
 

uxam a écrit :

euh ben ca sort les info de l'abonnement 39


Eh bien si tu les mettais ici ? On y verrais plus clair nan ?


---------------
Light is right
n°1220160
sircam
I Like Trains
Posté le 11-10-2005 à 10:03:17  profilanswer
 

Roh la laaaa ! [:kiki]
 
Help us help you ! [:pingouino]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1220186
uxam
Posté le 11-10-2005 à 10:17:51  profilanswer
 

un abonnement contient ces champs

Code :
  1. private Date abt_dateDebut = null;
  2.   private Date abt_dateFin = null;
  3.   private int abt_enCours = -1;
  4.   private double abt_Depot = -1;
  5.   private double abt_prix = -1;
  6.   private int abt_id = -1;
  7.   private int tat_id = -1 ;
  8.   private int rem_id = -1 ;
  9.   private int ca_id = -1 ;
  10.   private int abe_id = -1 ;

n°1220197
souk
Tourist
Posté le 11-10-2005 à 10:23:38  profilanswer
 

uxam a écrit :

un abonnement contient ces champs

Code :
  1. private Date abt_dateDebut = null;
  2.   private Date abt_dateFin = null;
  3.   private int abt_enCours = -1;
  4.   private double abt_Depot = -1;
  5.   private double abt_prix = -1;
  6.   private int abt_id = -1;
  7.   private int tat_id = -1 ;
  8.   private int rem_id = -1 ;
  9.   private int ca_id = -1 ;
  10.   private int abe_id = -1 ;



 
toi t'es du genre à comprendre vite nan ? [:dawa]

n°1220198
uxam
Posté le 11-10-2005 à 10:24:11  profilanswer
 

souk a écrit :

toi t'es du genre à comprendre vite nan ? [:dawa]


ca sert à quoi que je copie les résultats de la requete ? je marque le nom des colonnes [:itm]

n°1220205
souk
Tourist
Posté le 11-10-2005 à 10:30:27  profilanswer
 

et tu veux pas nous donner les dates du resultset que tu recuperes ? [:itm]
et tu utilises quel SGBD ? quelle version ? [:itm]
as-tu essayé de faire marcher ton DATEDIFF en dehors de tout code java ?
si tu es sous MySQL, est-ce que c'est une version superieure a la 4.1.1 ?
 
si tu veux qu'on t'aide, il faut nous donner plus d'information [:itm]
le nom des colonnes ne nous aident pas des masse, les données nous aideront plus en effet [:pingouino]

n°1220218
uxam
Posté le 11-10-2005 à 10:35:15  profilanswer
 

souk a écrit :

et tu veux pas nous donner les dates du resultset que tu recuperes ? [:itm]
et tu utilises quel SGBD ? quelle version ? [:itm]
as-tu essayé de faire marcher ton DATEDIFF en dehors de tout code java ?
si tu es sous MySQL, est-ce que c'est une version superieure a la 4.1.1 ?
 
si tu veux qu'on t'aide, il faut nous donner plus d'information [:itm]
le nom des colonnes ne nous aident pas des masse, les données nous aideront plus en effet [:pingouino]


oui la requete marche nikel si je la tappe dans le sgbd... L'erreur vient du java pas du sql...

n°1220225
sircam
I Like Trains
Posté le 11-10-2005 à 10:42:35  profilanswer
 

uxam a écrit :

oui la requete marche nikel si je la tappe dans le sgbd... L'erreur vient du java pas du sql...


C'est très bien ! [:dawa]
 
Maintenant, donne-nous les réponses nos autres questions, s.t.p. [:itm]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1220230
souk
Tourist
Posté le 11-10-2005 à 10:45:55  profilanswer
 

uxam a écrit :

oui la requete marche nikel si je la tappe dans le sgbd... L'erreur vient du java pas du sql...


et l'erreur se produit quand ? au moment de l'exécution de la requète ou quand tu parcours ton resultSet ? [:dawa]
et si c'est quand tu parcours ton resultSet, comment parcours tu ton resultSet (hint: on veut du code [:dawa] ) ?

n°1220238
uxam
Posté le 11-10-2005 à 10:50:23  profilanswer
 

sircam a écrit :

C'est très bien ! [:dawa]
 
Maintenant, donne-nous les réponses nos autres questions, s.t.p. [:itm]


j'utilise mysql  [:uxam] et les colonnes dates me retournent une date  :ouch: au format 2005-10-10 00:00:00... ma fonction :

Code :
  1. public int getNbJours(Abonnement abt) {
  2.     String requete =
  3.         "SELECT DATEDIFF(abt_dateFin,abt_dateDebut) FROM t_abonnement WHERE abt_id = " +
  4.         abt.getAbt_id();
  5.     int nbJours = dbc.executeSQL(requete);
  6.     return nbJours;
  7.   }


 
l'endroit ou je l'appelle

Code :
  1. void jButtonAbonnementAdd_actionPerformed(ActionEvent e) {
  2.     typeAbonnement = (TypeAbonnement) jCmbxType.getSelectedItem();
  3.     int nbJours = requetesAbonnement.getNbJours(abonnement);
  4.     double prix = typeAbonnement.getTat_prix() * nbJours / 30;
  5.    
  6.     abonnement = new Abonnement(jdatechooser.getDate(),
  7.                                 jdatechooser2.getDate(),0,
  8.                                 1, Double.parseDouble(jTxtFieldDepot.getText()),
  9.                                 nbJours,
  10.                                 typeAbonnement.getTat_id(),
  11.                                 2,
  12.                                 2, idAbonne);
  13.    
  14.     requetesAbonnement.insertAbonnement(abonnement);
  15.    
  16.   }

n°1220244
souk
Tourist
Posté le 11-10-2005 à 10:56:54  profilanswer
 

uxam a écrit :

j'utilise mysql  [:uxam] et les colonnes dates me retournent une date  :ouch: au format 2005-10-10 00:00:00... ma fonction :

Code :
  1. public int getNbJours(Abonnement abt) {
  2.     String requete =
  3.         "SELECT DATEDIFF(abt_dateFin,abt_dateDebut) FROM t_abonnement WHERE abt_id = " +
  4.         abt.getAbt_id();
  5.     int nbJours = dbc.executeSQL(requete);
  6.     return nbJours;
  7.   }


 
l'endroit ou je l'appelle

Code :
  1. void jButtonAbonnementAdd_actionPerformed(ActionEvent e) {
  2.     typeAbonnement = (TypeAbonnement) jCmbxType.getSelectedItem();
  3.     int nbJours = requetesAbonnement.getNbJours(abonnement);
  4.     double prix = typeAbonnement.getTat_prix() * nbJours / 30;
  5.    
  6.     abonnement = new Abonnement(jdatechooser.getDate(),
  7.                                 jdatechooser2.getDate(),0,
  8.                                 1, Double.parseDouble(jTxtFieldDepot.getText()),
  9.                                 nbJours,
  10.                                 typeAbonnement.getTat_id(),
  11.                                 2,
  12.                                 2, idAbonne);
  13.    
  14.     requetesAbonnement.insertAbonnement(abonnement);
  15.    
  16.   }



 
au lieu de faire ton malin, tu peux nous dire ce qu'est dbc ? parce que je suppose que c'est un objet à toi dont tu ne nous parles pas parce qu' "il marche" ? (si tu veux qu'on continue à t'aider va falloir etre mois arrogant et repondre à nos questions, si on te les pose, c'est pas pour t'embeter, c'est pour localiser le probleme etant donné que tu ne donnes RIEN comme information intéressante)

n°1220256
uxam
Posté le 11-10-2005 à 11:04:27  profilanswer
 

Code :
  1. public int executeSQL(String rsql)
  2.   {
  3.     int rec = 0 ;
  4.     Statement statmt = createStatement(connect) ;
  5.     try
  6.     {
  7.       rec = statmt.executeUpdate(rsql) ;
  8.     }
  9.     catch (SQLException se)
  10.     {
  11.       System.err.println("Error in execute SQL" ) ;
  12.       System.err.println("sql: " + rsql) ;
  13.       DBConnection.showListSqlExceptions(se) ;
  14.     }
  15.     return rec ;
  16.   }

n°1220263
souk
Tourist
Posté le 11-10-2005 à 11:13:45  profilanswer
 

uxam a écrit :

Code :
  1. public int executeSQL(String rsql)
  2.   {
  3.     int rec = 0 ;
  4.     Statement statmt = createStatement(connect) ;
  5.     try
  6.     {
  7.       rec = statmt.executeUpdate(rsql) ;
  8.     }
  9.     catch (SQLException se)
  10.     {
  11.       System.err.println("Error in execute SQL" ) ;
  12.       System.err.println("sql: " + rsql) ;
  13.       DBConnection.showListSqlExceptions(se) ;
  14.     }
  15.     return rec ;
  16.   }



 
et executeUpdate, t'as été voir ce que ca fait dans la doc ? [:itm]

n°1220264
uxam
Posté le 11-10-2005 à 11:16:05  profilanswer
 

souk a écrit :

et executeUpdate, t'as été voir ce que ca fait dans la doc ? [:itm]


un update ?   [:prodigy]

n°1220265
uxam
Posté le 11-10-2005 à 11:17:50  profilanswer
 

faut que je remplace par quio alors ? :/

n°1220269
frabill
Posté le 11-10-2005 à 11:25:12  profilanswer
 
n°1220270
uxam
Posté le 11-10-2005 à 11:25:28  profilanswer
 

j'ai crée dans ma table une colonne durée, je pourrais faire un update de la colonne avec le SELECT datediff... ?

n°1220272
sircam
I Like Trains
Posté le 11-10-2005 à 11:25:45  profilanswer
 

sircam has left the topic to fetch his LART.
 
[:pingouino]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1220273
souk
Tourist
Posté le 11-10-2005 à 11:30:49  profilanswer
 

uxam a écrit :

un update ?   [:prodigy]


Citation :


executeUpdate
 
public int executeUpdate(String sql)
                  throws SQLException
 
    Executes the given SQL statement, which may be an INSERT, UPDATE, or DELETE statement or an SQL statement that returns nothing, such as an SQL DDL statement.
 
    Parameters:
        sql - an SQL INSERT, UPDATE or DELETE statement or an SQL statement that returns nothing  
    Returns:
        either the row count for INSERT, UPDATE or DELETE statements, or 0 for SQL statements that return nothing  
    Throws:
        SQLException - if a database access error occurs or the given SQL statement produces a ResultSet object
 
 


 
un select est-il un update/insert/delete ? [:itm]
 
pour commencer, tu vas aller faire le tuto de sun sur le jdbc, ensuite tu verras que tu fais un select, c'est a dire une REQUETE, donc tu utilises la methode bien nommée "executeQuery" tu récupèreras un ResultSet, et le résultat de ta requète sera dans ce ResultSet.... je peux pas faire plus là.... il faut que tu apprennes l'API JDBC ( http://java.sun.com/docs/books/tut [...] index.html (merci frabill pour l'url :jap: )
 
edit: j'ai mis en rouge ce qui est important [:souk]


Message édité par souk le 11-10-2005 à 11:32:26
n°1220275
uxam
Posté le 11-10-2005 à 11:32:34  profilanswer
 

c'est bon je crios que j'ai trouvé

Code :
  1. public int getNbJours(Abonnement abt) {
  2.     int nbJours = 0;
  3.     String requete =
  4.         "SELECT DATEDIFF(abt_dateFin,abt_dateDebut) FROM t_abonnement WHERE abt_id = " +
  5.         abt.getAbt_id();
  6.     ResultSet rs = dbc.createResultSet(requete);
  7.     try {
  8.       if (rs != null) {
  9.         if (rs.next()) {
  10.           nbJours = rs.getInt(1);
  11.         }
  12.       }
  13.     }
  14.     catch (SQLException se) {
  15.       dbc.showListSqlExceptions(se);
  16.     }
  17.     try {
  18.       if (rs != null) {
  19.         rs.close();
  20.       }
  21.     }
  22.     catch (SQLException se) {
  23.       dbc.showListSqlExceptions(se);
  24.     }
  25.     return nbJours;
  26.   }

n°1220278
souk
Tourist
Posté le 11-10-2005 à 11:33:58  profilanswer
 

[:ciler]
j'abandonne .... tant mieux si ca marche, bonne continuation

n°1220280
uxam
Posté le 11-10-2005 à 11:34:48  profilanswer
 

souk a écrit :

[:ciler]
j'abandonne .... tant mieux si ca marche, bonne continuation


y a quoi de faux ?

n°1220283
souk
Tourist
Posté le 11-10-2005 à 11:41:25  profilanswer
 

uxam a écrit :

y a quoi de faux ?


j'en sais rien, on ne connait pas la fonction dbc.createResultSet(...) ... on peut rien dire, le code que tu as posté ne nous sert à rien  [:souk]  
 
je pense qu'il faut vraiment que tu fasse un tuto JDBC, gestion d'exception et gestion de resources (Connection, etc.)  :sweat:

n°1220284
uxam
Posté le 11-10-2005 à 11:43:24  profilanswer
 

Code :
  1. public ResultSet createResultSet(String rsql)
  2.   {
  3.     Statement statmt = createStatement(connect) ;
  4.     return createResultSet(statmt, rsql) ;
  5.   }


Code :
  1. public static Statement createStatement(Connection cnl)
  2.   {
  3.     Statement stmt = null ;
  4.     try
  5.     {
  6.       if (cnl != null)
  7.       {
  8.         stmt = cnl.createStatement() ;
  9.       }
  10.     }
  11.     catch (SQLException e)
  12.     {
  13.       System.err.println("Error in createStatement" ) ;
  14.       showListSqlExceptions(e) ;
  15.     }
  16.     finally
  17.     {
  18.       return stmt ;
  19.     }
  20.   }

Message cité 1 fois
Message édité par uxam le 11-10-2005 à 11:45:23
n°1220287
souk
Tourist
Posté le 11-10-2005 à 11:45:14  profilanswer
 

uxam a écrit :

Code :
  1. public ResultSet createResultSet(String rsql)
  2.   {
  3.     Statement statmt = createStatement(connect) ;
  4.     return createResultSet(statmt, rsql) ;
  5.   }



 
tu te fous de nous ou quoi ? [:pingouino]

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  fonction qui retourne nb jours entre 2 dates

 

Sujets relatifs
fonction mail ?fonction "trier par" dans une liste
Problème envoi mail avec fonction mail() [Résolu]fonction pour recuperer un chiffre d'une chaine [Résolu]
Lancer une fonction php en cliquant sur un boutonprobleme minute: fonction chaine en php
fonction imagerotate()Problème eval sur un nom de fonction
ActionScript -> Problème d'envoi de fonction sur évenementAppel à une fonction WMI
Plus de sujets relatifs à : fonction qui retourne nb jours entre 2 dates


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR