Ausgabe eines Reports in Excel

Hallo zusammen,

ich will eine SQL Abfrage aufbereitet in einen Report rein packen.
Die reinen Java Sourcen laufen suuuupa… naja… fast… :wink:

Ich joine zwei Tabellen (Bundesland und Person) deren Ausgabewert 37 Datensätze beinhaltet. (lass ich mitschneiden bzw mitzählen und ausgeben)
und jetzt habe ich das Prob, dass ich, wenn ich dem Bundesland die 2 bis 3 Leute zuordne und untereinander ausgeben will in Excel so a la

Bundesland Rang Einwohner
Nordrhein-Westfalen 1 0

Person 
Name Vorname Alter
test1 a 0

bekomm ich 37 mal alles ausgegeben, obwohl das Bundesland ja nur 16 mal mit den dazugehörigen Personen ausgegeben werden soll.

hier noch der Code an dem das hängt…

Statement stmt = con.createStatement();
// stmt.execute("select count(\*) from bndlaender;");
 ResultSet rs = stmt
 .executeQuery("select b.B\_ID, b.Rang, b.Name as bname, b.Einwohner, b.P\_ID, " +
 "p.P\_ID, p.Name as pname, p.Vname, p.Alter" +
 " from Bundesland b," +
 " Person p" +
 " where b.B\_ID=p.B\_ID" +
 " order by b.B\_ID");


 while (rs.next()) {
 land = new Laender(rs.getInt("B\_ID"), rs
 .getInt("Rang"), rs.getString("bname"), rs
 .getInt("Einwohner") );

 pers1= new Person(rs.getString("pname"), rs
 .getString("Vname"), rs.getInt("Alter"), rs
 .getInt("P\_ID"));

 land.addPerson(pers1);//

weiß jemand, was ich da machen kann, dass das Prob nicht mehr auftritt…?

Ach ja… Laender hat ne ArrayList und ne getter und Setter für Person.
Läuft aber vollständig…

Vielen Dank schonmal…

LG

Micha

Hallo nochmal,

ich wollte schnell mal für alle, die einen ähnlichen Fehler haben die Lösung posten, damit die Zeilen richtig angezeigt werden…

Statement stmt = con.createStatement();
 Statement stmt2 = con.createStatement();
 // stmt.execute("select count(\*) from bndlaender;");
 ResultSet rs = stmt
 .executeQuery("select B\_ID, Rang, Name , Einwohner "
 + " from Bundesland"
 + " order by B\_ID");

 while (rs.next()) {

 int zahl1 = rs.getInt("B\_ID");

 land = new Laender(zahl1, rs.getInt("Rang"), rs
 .getString("Name"), rs.getInt("Einwohner"));
 // Neues Resultset für die Abarbeitung der Daten
 ResultSet rs2 = stmt2
 .executeQuery("select B\_ID, Name , Vname, Alter "
 + "From Person "
 + "where B\_ID =" + zahl1
 + " order by Name");
 //l++;
 // int zahl2 = rs2.getInt("B\_ID");
 while (rs2.next()) {

 pers1 = new Person( rs2
 .getString("Name"), rs2.getString("Vname"),
 rs2.getInt("Alter"));
 land.addPerson(pers1);
 p++;
 System.out.println(l +", " + p);

Hier noch der Code fürs Excel…

${person.pname} 
${person.vname}
${person.alter}

Liebe Grüße an alle mit einem ähnlichen Prob…
hoffe Ihr könnt was mit meiner Lösung anfangen… :smile:

Gruß Micha

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]