IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Problème de requête SQL


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Points : 34
    Points
    34
    Par défaut Problème de requête SQL
    Bonjour, désolé de vous déranger mais j'aurais besoin d'aide lol. Je m'explique, j'ai créé une table nommé films avec plusieurs champs, je voudrais que lorsque l'utilisateur saisisse une date dans un jFrame que j'ai créé, en cliquant sur OK celui-ci lui renvoie un fichier pdf. Mon problème vient de la date, j'arrive à générer un résultat, mais si un film est malheureusement sorti le même jour qu'un autre celui-ci ne s'affiche pas.. Je n'ai qu'un résultat du tableau de ma BDD qui s'affiche alors que plusieurs devraient s'afficher pourtant j'ai bien utilisé un rs.next() pour parcourir la table, je ne comprends pas. Si quelqu'un pouvait m'éclairer juste.. Ce serait très gentil !

    Voici un extrait de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
     
    if (jRadioButton2.isSelected()) {
            String date = jTextField1.getText();
            Paragraph paragraph = new Paragraph();
            Document document = new Document(PageSize.A4);
            try {
                PdfWriter.getInstance(document, new FileOutputStream("Test.pdf"));
     
                document.open();
     
                Chunk chunk = new Chunk("Synthèse",
                        FontFactory.getFont(FontFactory.COURIER, 18, Font.NORMAL, Color.WHITE));
                chunk.setBackground(Color.GRAY);
                document.add(chunk);
     
                //Tableau 1
                Table tableau = new Table(3, 2);
                tableau.setBorderColor(Color.white);
                tableau.setPadding(3);
                tableau.setWidth(100);
     
     
     
                try {
                    String sql = "SELECT No, Date, Obs, Lieu, Details, id_auteur FROM t_films WHERE Date = '" + date + "'";
                    stmt = (PreparedStatement) con.prepareStatement(sql);
                    rs = stmt.executeQuery(sql);
     
                    rs.next();
                    while (rs.next()) {
                        String id = rs.getString(6);
     
                        //JOUR
                        paragraph = new Paragraph(rs.getString(2),
                                new Font(Font.BOLD, 14, Font.BOLD, Color.BLACK));
                        paragraph.setIndentationLeft(210f);
                        document.add(paragraph);
     
                        //Tableau 1
                        Cell cell = new Cell(new Paragraph(rs.getString(3),
                                new Font(Font.BOLD, 12, Font.BOLD, Color.BLACK)));
                        cell.setBorderColor(Color.white);
                        cell.setHorizontalAlignment(Element.ALIGN_LEFT);
                        tableau.addCell(cell);
     
                        cell = new Cell("");
                        cell.setBorderColor(Color.white);
                        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                        tableau.addCell(cell);
     
                        cell = new Cell(new Paragraph("N° : " + rs.getString(1),
                                new Font(Font.BOLD, 12, Font.BOLD, Color.BLACK)));
                        cell.setBorderColor(Color.white);
                        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
                        tableau.addCell(cell);
     
                        cell = new Cell(new Paragraph(rs.getString(2),
                                new Font(Font.BOLD, 10, Font.BOLD, Color.BLACK)));
                        cell.setBorderColor(Color.black);
                        cell.setHorizontalAlignment(Element.ALIGN_LEFT);
                        tableau.addCell(cell);
     
                        cell = new Cell(new Paragraph(rs.getString(3),
                                new Font(Font.BOLD, 10, Font.BOLD, Color.BLACK)));
                        cell.setBorderColor(Color.black);
                        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                        tableau.addCell(cell);
     
                        cell = new Cell(new Paragraph(rs.getString(6),
                                new Font(Font.BOLD, 10, Font.BOLD, Color.BLACK)));
                        cell.setBorderColor(Color.black);
                        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
                        tableau.addCell(cell);
     
                        document.add(tableau);
                        document.add(Chunk.NEWLINE);
     
     
                        paragraph = new Paragraph(rs.getString(4),
                                new Font(Font.BOLD, 11, Font.BOLD, Color.BLACK));
                        paragraph.setIndentationRight(20f);
                        document.add(paragraph);
     
                        paragraph = new Paragraph(rs.getString(5),
                                new Font(Font.NORMAL, 11, Font.BOLD, Color.BLACK));
                        paragraph.setIndentationLeft(20f);
                        document.add(paragraph);
                        paragraph = new Paragraph(rs.getString(5),
                                new Font(Font.NORMAL, 11, Font.NORMAL, Color.BLACK));
                        paragraph.setIndentationRight(20f);
                        document.add(paragraph);
     
     
     
     
                            }
                        } catch (Exception e) {
                            System.out.println("Erreur");
                        }
                    }     
                } catch (Exception e) {
                    System.out.println("Erreur");
                }
     
            document.close();
     
     
            //Execute le PDF
            Runtime runtime = Runtime.getRuntime();
            try {
                runtime.exec(new String[] // 2 parametres pris dans un tableau, l'appli et le pdf
                        {
                            "C:\\Program Files\\Adobe\\Reader 9.0\\Reader\\AcroRd32.exe",
                            "F:\\Projet\\NetBeansProjects\\Films\\Test.pdf"});
            } catch (Exception e) {
                System.out.println("Erreur");
            }
     
        }
    Merci encore de votre future aide

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    3 choses :
    - tu as un rs.next() de trop (celui avant le while)
    - tu devrais utiliser un paramètre dans le preparedStatement et de préférence utiliser un objet Date
    - tu dois utiliser la forme stmt.executeQuery() sans paramètre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    stmt = (PreparedStatement) con.prepareStatement("SELECT No, Date, Obs, Lieu, Details, id_auteur FROM t_films WHERE Date = ?");
    stmt.setString(1, date); <-- devrais être stmt.setDate(1, date) avec un objet Date
    rs = stmt.executeQuery();
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Points : 34
    Points
    34
    Par défaut
    Je tiens tout d'abord à vous remercier de votre réponse
    Je viens de modifier le code tel que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                   stmt = (PreparedStatement) con.prepareStatement("SELECT No, Date, Obs, Lieu, Details, id_auteur FROM t_films WHERE Date = ?");
                    stmt.setDate(1, date);// <-- devrais être stmt.setDate(1, date) avec un objet Date
                    rs = stmt.executeQuery();
    J'ai aussi modifier le String Date en Object Date, mais NetBeans me génère une erreur au niveau de la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     stmt.setDate(1, date);// <-- devrais être stmt.setDate(1, date) avec un objet Date
    Encore désolé du dérangement

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    C'est pas très intéressant de savoir que Netbeans indique une erreur.
    C'est bien plus intéressant de savoir quelle erreur indique Netbeans.

    (Note : et cela est toujours le cas. Dans la vie, ça ne sert à rien de dire qu'il y a un problème. Mais ça peut servir de dire quel est le problème ou comment on sait qu'il y a un problème.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Parce que date est String, il faut transformer ta chaine de caractères en Date, tu peux utiliser un SimpleDateFormat pour ça.
    Si par exemple la date est au format jour/mois/année, tu le ferais comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    java.util.Date utilDate = sdf.parse(date);
    comme le setDate(...) attend une java.sql.Date il va falloir convertir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
    c'est un peu chiant, je te l'accorde, ce serait plus simple si on pouvait lui passer une java.util.Date...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Points : 34
    Points
    34
    Par défaut
    Excusez-moi thelvin ! Et merci de votre aide encore, je vous suit très reconnaissant.
    Je viens de modifier mon code tel que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
     
    if (jRadioButton2.isSelected()) {
            Object date = jTextField1.getText();
            Paragraph paragraph = new Paragraph();
            Document document = new Document(PageSize.A4);
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    java.util.Date utilDate = sdf.parse(date);
    java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
     
            try {
                PdfWriter.getInstance(document, new FileOutputStream("Test.pdf"));
     
                document.open();
     
                Chunk chunk = new Chunk("Synthèse",
                        FontFactory.getFont(FontFactory.COURIER, 18, Font.NORMAL, Color.WHITE));
                chunk.setBackground(Color.GRAY);
                document.add(chunk);
     
                //Tableau 1
                Table tableau = new Table(3, 2);
                tableau.setBorderColor(Color.white);
                tableau.setPadding(3);
                tableau.setWidth(100);
     
     
     
                try {
     
    stmt = (PreparedStatement) con.prepareStatement("SELECT No, Date, Obs, Lieu, Details, id_auteur FROM t_films WHERE Date = '" + date + "'");
                    stmt.setDate(1, date);avec un objet Date
                    rs = stmt.executeQuery();
     
                    while (rs.next()) {
                        String id = rs.getString(6);
     
                        //JOUR
                        paragraph = new Paragraph(rs.getString(2),
                                new Font(Font.BOLD, 14, Font.BOLD, Color.BLACK));
                        paragraph.setIndentationLeft(210f);
                        document.add(paragraph);
     
                        //Tableau 1
                        Cell cell = new Cell(new Paragraph(rs.getString(3),
                                new Font(Font.BOLD, 12, Font.BOLD, Color.BLACK)));
                        cell.setBorderColor(Color.white);
                        cell.setHorizontalAlignment(Element.ALIGN_LEFT);
                        tableau.addCell(cell);
     
                        cell = new Cell("");
                        cell.setBorderColor(Color.white);
                        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                        tableau.addCell(cell);
     
                        cell = new Cell(new Paragraph("N° : " + rs.getString(1),
                                new Font(Font.BOLD, 12, Font.BOLD, Color.BLACK)));
                        cell.setBorderColor(Color.white);
                        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
                        tableau.addCell(cell);
     
                        cell = new Cell(new Paragraph(rs.getString(2),
                                new Font(Font.BOLD, 10, Font.BOLD, Color.BLACK)));
                        cell.setBorderColor(Color.black);
                        cell.setHorizontalAlignment(Element.ALIGN_LEFT);
                        tableau.addCell(cell);
     
                        cell = new Cell(new Paragraph(rs.getString(3),
                                new Font(Font.BOLD, 10, Font.BOLD, Color.BLACK)));
                        cell.setBorderColor(Color.black);
                        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                        tableau.addCell(cell);
     
                        cell = new Cell(new Paragraph(rs.getString(6),
                                new Font(Font.BOLD, 10, Font.BOLD, Color.BLACK)));
                        cell.setBorderColor(Color.black);
                        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
                        tableau.addCell(cell);
     
                        document.add(tableau);
                        document.add(Chunk.NEWLINE);
     
     
                        paragraph = new Paragraph(rs.getString(4),
                                new Font(Font.BOLD, 11, Font.BOLD, Color.BLACK));
                        paragraph.setIndentationRight(20f);
                        document.add(paragraph);
     
                        paragraph = new Paragraph(rs.getString(5),
                                new Font(Font.NORMAL, 11, Font.BOLD, Color.BLACK));
                        paragraph.setIndentationLeft(20f);
                        document.add(paragraph);
                        paragraph = new Paragraph(rs.getString(5),
                                new Font(Font.NORMAL, 11, Font.NORMAL, Color.BLACK));
                        paragraph.setIndentationRight(20f);
                        document.add(paragraph);
     
     
     
     
                            }
                        } catch (Exception e) {
                            System.out.println("Erreur");
                        }
                    }     
                } catch (Exception e) {
                    System.out.println("Erreur");
                }
     
            document.close();
     
     
            //Execute le PDF
            Runtime runtime = Runtime.getRuntime();
            try {
                runtime.exec(new String[] // 2 parametres pris dans un tableau, l'appli et le pdf
                        {
                            "C:\\Program Files\\Adobe\\Reader 9.0\\Reader\\AcroRd32.exe",
                            "F:\\Projet\\NetBeansProjects\\Films\\Test.pdf"});
            } catch (Exception e) {
                System.out.println("Erreur");
            }
     
        }
    Cela ne marche toujours pas j'ai une erreur à la ligne :
    java.util.Date utilDate = sdf.parse(date);
    Ils veulent que j'effectue un try catch mais quand je l'effectue ca ne marche pas..

    Cordialement et merci encore !

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Déplace les 3 lignes dans le bloc try catch
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Points : 34
    Points
    34
    Par défaut
    Merci, je viens de le faire mais lorsque je déplace ces lignes dans le bloc try catch elles ne sont plus soulignés, mais stmt.setDate(1, date); est souligné. Et lorsque je change le String date en Object date, java.util.Date utilDate = sdf.parse(date); cette ligne est souligné avec comme erreur : no suitable method found for parse..

    Merci

  9. #9
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par Ercan67000 Voir le message
    Et lorsque je change le String date en Object date, java.util.Date utilDate = sdf.parse(date); cette ligne est souligné avec comme erreur : no suitable method found for parse..
    J'ai pas trop compris pourquoi tu as remplacé String par Object.
    Laisse-le en String, et ça ira très bien...

    Un DateFormat peut parser des String, mais pas des Object.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Il serait préférable de mettre date en String plutôt qu'Object à mon sens.
    un JTextField.getText() renvoie un String
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Points : 34
    Points
    34
    Par défaut
    Merci de votre aide, mais j'ai toujours une erreur à la ligne : stmt.setDate(1, date);. L'erreur est : no suitable method found for setDate. Et lorsque je change la ligne en stmt.setDate(1, sqlDate); cela marche mais le résultat s'affichant dans le pdf n'est pas ce que j'attend.. Savez-vous pourquoi ?

    Cordialement et encore merci de votre aide !

  12. #12
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    ça veut dire quoi le résultat n'est pas celui que j'attends ?
    il faut être plus précis
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Points : 34
    Points
    34
    Par défaut
    Le résultat attendu est l'affichage dans un fichier pdf de tous les films ayant ici été créé un jour précis. Auparavant, avant ces modifications, j'arrivais à afficher un résultat de la table qui ciblé cette date mais pas les autres, alors que je parcours bien la table avec rs.next() donc je ne comprenais pas pourquoi..

    Cordialement

  14. #14
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    dans ta base, quel est le type de ton champ représentant la date ?
    une java.sql.Date n'utilise que la partie date, si la base utilise un format date/heure, ça va poser problème...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Points : 34
    Points
    34
    Par défaut
    Au début j'avais mis la Date sous le format Varchar(10) dans la BDD juste pour tester la requete avec un WHERE date="08/01/2011" par exemple et cette date correspondait à plusieurs films donc je pensais qu'en faisant SELECT nom FROM t_films WHERE date="08/01/2011"; par exemple le résultat allait me donner tous les noms de films datant du 08/01/2011 mais nan le résultat me donne qu'un film datant du 08/01/2011. Comment cela se fait-il ? Vu que la méthode rs.next() a été utilisé pour parcourir les lignes du tableau ?

    Cordialement et merci de votre aide encore !

  16. #16
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par Ercan67000 Voir le message
    Au début j'avais mis la Date sous le format Varchar(10) dans la BDD
    Si le champ Date est de type VARCHAR, ce n'est pas une si bonne idée de transformer ta String en java.sql.Date. Il vaut mieux utiliser juste la String.

    Bien sûr, un champ nommé Date, en principe ça devrait être de type DATE, on avait pas pensé que tu aurais autre chose.

    Citation Envoyé par Ercan67000 Voir le message
    Vu que la méthode rs.next() a été utilisé pour parcourir les lignes du tableau ?
    Je remarque un truc, c'est que cette méthode est appelée une fois de trop. Elle est appelée une fois avant la boucle. Pourquoi ?

    Autrement dit, tu ne traites pas toutes les lignes du tableau. Tu les traites toutes, sauf la première.
    Et donc, si par le plus grand des hasards, tu as deux films à la date indiquée, le premier n'est pas traité, et donc tu n'en traites qu'un.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Points : 34
    Points
    34
    Par défaut
    Oui, désolé je ne l'avais pas précisé.. Je suis revenu au code précédent tel que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
    if (jRadioButton2.isSelected()) {
            String date = jTextField1.getText();
            Paragraph paragraph = new Paragraph();
            Document document = new Document(PageSize.A4);
            try {
                PdfWriter.getInstance(document, new FileOutputStream("Test.pdf"));
     
                document.open();
     
                Chunk chunk = new Chunk("Synthèse",
                        FontFactory.getFont(FontFactory.COURIER, 18, Font.NORMAL, Color.WHITE));
                chunk.setBackground(Color.GRAY);
                document.add(chunk);
     
                //Tableau 1
                Table tableau = new Table(3, 2);
                tableau.setBorderColor(Color.white);
                tableau.setPadding(3);
                tableau.setWidth(100);
     
     
     
                try {
                    String sql = "SELECT No, Date, Obs, Lieu, Details, id_auteur FROM t_films WHERE Date = '" + date + "'";
                    stmt = (PreparedStatement) con.prepareStatement(sql);
                    rs = stmt.executeQuery(sql);
                    while (rs.next()) {
                        String id = rs.getString(6);
     
                        //JOUR
                        paragraph = new Paragraph(rs.getString(2),
                                new Font(Font.BOLD, 14, Font.BOLD, Color.BLACK));
                        paragraph.setIndentationLeft(210f);
                        document.add(paragraph);
     
                        //Tableau 1
                        Cell cell = new Cell(new Paragraph(rs.getString(3),
                                new Font(Font.BOLD, 12, Font.BOLD, Color.BLACK)));
                        cell.setBorderColor(Color.white);
                        cell.setHorizontalAlignment(Element.ALIGN_LEFT);
                        tableau.addCell(cell);
     
                        cell = new Cell("");
                        cell.setBorderColor(Color.white);
                        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                        tableau.addCell(cell);
     
                        cell = new Cell(new Paragraph("N° : " + rs.getString(1),
                                new Font(Font.BOLD, 12, Font.BOLD, Color.BLACK)));
                        cell.setBorderColor(Color.white);
                        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
                        tableau.addCell(cell);
     
                        cell = new Cell(new Paragraph(rs.getString(2),
                                new Font(Font.BOLD, 10, Font.BOLD, Color.BLACK)));
                        cell.setBorderColor(Color.black);
                        cell.setHorizontalAlignment(Element.ALIGN_LEFT);
                        tableau.addCell(cell);
     
                        cell = new Cell(new Paragraph(rs.getString(3),
                                new Font(Font.BOLD, 10, Font.BOLD, Color.BLACK)));
                        cell.setBorderColor(Color.black);
                        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                        tableau.addCell(cell);
     
                        cell = new Cell(new Paragraph(rs.getString(6),
                                new Font(Font.BOLD, 10, Font.BOLD, Color.BLACK)));
                        cell.setBorderColor(Color.black);
                        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
                        tableau.addCell(cell);
     
                        document.add(tableau);
                        document.add(Chunk.NEWLINE);
     
     
                        paragraph = new Paragraph(rs.getString(4),
                                new Font(Font.BOLD, 11, Font.BOLD, Color.BLACK));
                        paragraph.setIndentationRight(20f);
                        document.add(paragraph);
     
                        paragraph = new Paragraph(rs.getString(5),
                                new Font(Font.NORMAL, 11, Font.BOLD, Color.BLACK));
                        paragraph.setIndentationLeft(20f);
                        document.add(paragraph);
                        paragraph = new Paragraph(rs.getString(5),
                                new Font(Font.NORMAL, 11, Font.NORMAL, Color.BLACK));
                        paragraph.setIndentationRight(20f);
                        document.add(paragraph);
     
     
     
     
                            }
                        } catch (Exception e) {
                            System.out.println("Erreur");
                        }
                    }     
                } catch (Exception e) {
                    System.out.println("Erreur");
                }
     
            document.close();
    Pouvez-vous me dire par rapport à ce code ou la date est en Varchar et est un String, pourquoi je n'ai qu'un film qui s'affiche et non deux par exemples ?
    Je ne vois pas d'autre next(), celle avant la boucle je l'ai supprimé précédemment déjà.. On dirait que la boucle s'arrete dès que la requête correspond à une ligne du tableau et ne continue pas.. bizarre

    Cordialement

  18. #18
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    je t'ai déjà dit que cette ligne n'était pas bonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stmt.executeQuery(sql);
    il faut faire
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Points : 34
    Points
    34
    Par défaut
    Je viens de modifier mais une erreur apparait toujours :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
    if (jRadioButton2.isSelected()) {
            String date = jTextField1.getText();
            Paragraph paragraph = new Paragraph();
            Document document = new Document(PageSize.A4);
            try {
                PdfWriter.getInstance(document, new FileOutputStream("Test.pdf"));
     
                document.open();
     
                Chunk chunk = new Chunk("Synthèse",
                        FontFactory.getFont(FontFactory.COURIER, 18, Font.NORMAL, Color.WHITE));
                chunk.setBackground(Color.GRAY);
                document.add(chunk);
     
                //Tableau 1
                Table tableau = new Table(3, 2);
                tableau.setBorderColor(Color.white);
                tableau.setPadding(3);
                tableau.setWidth(100);
     
                try {
                    stmt = (PreparedStatement) con.prepareStatement( "SELECT No, Date, Obs, Lieu, Details, id_auteur FROM t_films WHERE Date = ?");
                    stmt.setString(1, date);
                    rs = stmt.executeQuery();
     
                    while (rs.next()) {
                        String id = rs.getString(6);
     
                        //JOUR
                        paragraph = new Paragraph(rs.getString(2),
                                new Font(Font.BOLD, 14, Font.BOLD, Color.BLACK));
                        paragraph.setIndentationLeft(210f);
                        document.add(paragraph);
     
                        //Tableau 1
                        Cell cell = new Cell(new Paragraph(rs.getString(3),
                                new Font(Font.BOLD, 12, Font.BOLD, Color.BLACK)));
                        cell.setBorderColor(Color.white);
                        cell.setHorizontalAlignment(Element.ALIGN_LEFT);
                        tableau.addCell(cell);
     
                        cell = new Cell("");
                        cell.setBorderColor(Color.white);
                        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                        tableau.addCell(cell);
     
                        cell = new Cell(new Paragraph("N° : " + rs.getString(1),
                                new Font(Font.BOLD, 12, Font.BOLD, Color.BLACK)));
                        cell.setBorderColor(Color.white);
                        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
                        tableau.addCell(cell);
     
                        cell = new Cell(new Paragraph(rs.getString(2),
                                new Font(Font.BOLD, 10, Font.BOLD, Color.BLACK)));
                        cell.setBorderColor(Color.black);
                        cell.setHorizontalAlignment(Element.ALIGN_LEFT);
                        tableau.addCell(cell);
     
                        cell = new Cell(new Paragraph(rs.getString(3),
                                new Font(Font.BOLD, 10, Font.BOLD, Color.BLACK)));
                        cell.setBorderColor(Color.black);
                        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                        tableau.addCell(cell);
     
                        cell = new Cell(new Paragraph(rs.getString(6),
                                new Font(Font.BOLD, 10, Font.BOLD, Color.BLACK)));
                        cell.setBorderColor(Color.black);
                        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
                        tableau.addCell(cell);
     
                        document.add(tableau);
                        document.add(Chunk.NEWLINE);
     
     
                        paragraph = new Paragraph(rs.getString(4),
                                new Font(Font.BOLD, 11, Font.BOLD, Color.BLACK));
                        paragraph.setIndentationRight(20f);
                        document.add(paragraph);
     
                        paragraph = new Paragraph(rs.getString(5),
                                new Font(Font.NORMAL, 11, Font.BOLD, Color.BLACK));
                        paragraph.setIndentationLeft(20f);
                        document.add(paragraph);
                        paragraph = new Paragraph(rs.getString(5),
                                new Font(Font.NORMAL, 11, Font.NORMAL, Color.BLACK));
                        paragraph.setIndentationRight(20f);
                        document.add(paragraph);
                            }
                        } catch (Exception e) {
                            System.out.println("Erreur");
                        }
                    }     
                } catch (Exception e) {
                    System.out.println("Erreur");
                }
     
            document.close();
    La requête s'execute, mais je n'arrive toujours pas à afficher deux films qui ont la même date..

    Merci de voter aide encore ! et désolé de la gène occasionnée

  20. #20
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    remplace (ou ajoute derrière) le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("Erreur");
    par et colle la trace dans la réponse
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Problème de requête SQL avec instruction TRANSFORM
    Par Nosper dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/06/2005, 16h15
  2. problème de requète SQL pour formulaire
    Par en_stage dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 21/06/2005, 12h21
  3. [SQL] Problème de requête SQL de plus de 8060 caractères ?
    Par webtheque dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 06/04/2005, 15h07
  4. [SQLserver2000][SQLServer CE] problème de requête SQL
    Par JBernn dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 27/01/2005, 09h29
  5. Problème de requète SQL dans un Requery
    Par Keraccess dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 22/10/2004, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo