L
Louis2
Gast
Hallo,
ich hole aus einer DB Kundendaten (CustomerNo, CustomerName, Email, AuftragNr....) und sie werden in einer JTable dargestellt z.B.
Nun kann ich in der JTable Spalten selektieren. Gehe dann Zeile pro Zeile die selektierten Spalten durch, pack Zeile pro Zeile die Werte in eine Email und verschicke sie. Ich verschicke mit dieser Methode 1 Email pro Zeile.
Nun möchte ich aber 1 Email pro Kunden versendet wo alle Zeilen des Kundens drin sind. D.h im falle von oben:
Mail1: an Kunde 1600
1600 | Test | test@test.de | 10
1600 | Test | test@test.de | 11
1600 | Test | test@test.de | 12
Mail2: an Kunde 1650
1650 | Test1 | test1@test1.de | 20
1650 | Test1 | test1@test1.de | 21
So ich habe es schon probiert indem ich die aktuelle CustomerNo mit der nächsten vergleichen aber irgendwie funzt es nicht richtig... (ausserdem habe ich gehört, dass es leichter wäre wenn ich es in Oracle mit Packages und Stored Procedures..., wie man sowas macht k.A. ist da was dran, dass es leichter ist?)
Mein code: (nur Code wo die Methode zum versenden angegeben wird, denn da muss ja die Überprüfung passieren)
Es werden immer noch einzelne mails verschickt, ausserdem klappt die Überprüfung nicht richtig (k+1 mit k zu vergleichen geht nicht 100%, im Beispiel von oben würden dann nur die ersten 2 1600 Firmen genommen...) und ist wohl am falschen Ort (sollte nachdem alles in eine mail gepackt wird ab der nächsten Zeile anfangen und nicht in der for-Schleife ab dem nächsten k). Hat jemand eine Idee?
[EDIT] Code wurde geändert!
[EDIT]Aktueller Code!!!
ich hole aus einer DB Kundendaten (CustomerNo, CustomerName, Email, AuftragNr....) und sie werden in einer JTable dargestellt z.B.
Code:
CustomerNo | CustomerName | Email | AuftragNr
1600 | Test | [email]test@test.de[/email] | 10
1600 | Test | [email]test@test.de[/email] | 11
1600 | Test | [email]test@test.de[/email] | 12
1650 | Test1 | [email]test1@test1.de[/email] | 20
1650 | Test1 | [email]test1@test1.de[/email] | 21
Nun kann ich in der JTable Spalten selektieren. Gehe dann Zeile pro Zeile die selektierten Spalten durch, pack Zeile pro Zeile die Werte in eine Email und verschicke sie. Ich verschicke mit dieser Methode 1 Email pro Zeile.
Nun möchte ich aber 1 Email pro Kunden versendet wo alle Zeilen des Kundens drin sind. D.h im falle von oben:
Mail1: an Kunde 1600
1600 | Test | test@test.de | 10
1600 | Test | test@test.de | 11
1600 | Test | test@test.de | 12
Mail2: an Kunde 1650
1650 | Test1 | test1@test1.de | 20
1650 | Test1 | test1@test1.de | 21
So ich habe es schon probiert indem ich die aktuelle CustomerNo mit der nächsten vergleichen aber irgendwie funzt es nicht richtig... (ausserdem habe ich gehört, dass es leichter wäre wenn ich es in Oracle mit Packages und Stored Procedures..., wie man sowas macht k.A. ist da was dran, dass es leichter ist?)
Mein code: (nur Code wo die Methode zum versenden angegeben wird, denn da muss ja die Überprüfung passieren)
Es werden immer noch einzelne mails verschickt, ausserdem klappt die Überprüfung nicht richtig (k+1 mit k zu vergleichen geht nicht 100%, im Beispiel von oben würden dann nur die ersten 2 1600 Firmen genommen...) und ist wohl am falschen Ort (sollte nachdem alles in eine mail gepackt wird ab der nächsten Zeile anfangen und nicht in der for-Schleife ab dem nächsten k). Hat jemand eine Idee?
[EDIT] Code wurde geändert!
Code:
public void writeMail_Log() // Write in Email body and log
{
try
{
cancelButton.setEnabled(true);
sendButton.setEnabled(false);
t = new Thread(new Runnable()
{
public void run()
{
props=new Properties();
if (main.INIHost != null)
{
props.put("mail.smtp.host", main.INIHost);
props.put("mail.smtp.auth", "true");
}
mailConnection=Session.getDefaultInstance(props,null);
try
{
tr = (SMTPTransport)mailConnection.getTransport("smtp");
tr.connect(main.INIHost, main.hostUser, main.hostPassword);
dateiStream = new FileWriter(logname);
ausgabe = new PrintWriter(dateiStream);
for (k=start; k<leng && state == true; k++)
{
Object customerNo = table.getModel().getValueAt(k,0);
try
{
dateiStream1 = new FileWriter(filename);
csvdata = new PrintWriter(dateiStream1);
htmltable="<html><body><table border='1' cellpadding='0' cellspacing='0'>";
htmltable=htmltable + "<tr>";
for (int y=0; y<=selectedColumns.length-1;y++)
{
htmltable=htmltable + "<td width='175px'><div align='left'>[b]" + table.getColumnName(selectedColumns[y]) + "[/b]</div></td>";
csvdata.print(table.getColumnName(selectedColumns[y]) + ";");
}
htmltable=htmltable + "</tr>";
csvdata.println(System.getProperty("line.separator"));
for (;k < leng; k++)
{
System.out.println("outer for k = "+k);
System.out.println("inner for k = "+k);
htmltable=htmltable + "<tr>";
for (int y=0; y<=selectedColumns.length-1;y++)
{
main.appendSubject(ans);
yourValue = table.getModel().getValueAt(k, selectedColumns[y]);
if (yourValue == null)
htmltable=htmltable+ "<td width='175px'><div align='left'>" + "" + "</div></td>";
else
htmltable=htmltable+ "<td width='175px'><div align='left'>" + yourValue + "</div></td>";
main.appendText(table.getColumnName(selectedColumns[y]) + ": " + yourValue + System.getProperty("line.separator"));
Object CSVValue = table.getModel().getValueAt(k, selectedColumns[y]);
if (CSVValue == null)
csvdata.print("" + ";");
else
csvdata.print(CSVValue + ";");
}
htmltable=htmltable + "</tr>";
csvdata.println();
if (k+1 < leng && !customerNo.equals(table.getModel().getValueAt(k+1,0)))
break;
}
csvdata.close();
htmltable=htmltable + "</table></body></html>";
main.appendToEmail(getWert(k));
sendMail_Log();
}
catch (Exception e6)
{
JOptionPane.showMessageDialog(null, "Error: " + "\n" + e6.getMessage(), "Message", JOptionPane.ERROR_MESSAGE);
}
main.setVisible(false);
}
ausgabe.close();
}
catch (Exception e10)
{
JOptionPane.showMessageDialog(null, "Error: " + e10.getMessage() + "\n" + "Could not connect to Email Server, please check Host-, User- and Password name",
"Message", JOptionPane.ERROR_MESSAGE);
state=false;
sendButton.setEnabled(true);
}
try
{
tr.close();
}
catch (Exception e11)
{
JOptionPane.showMessageDialog(null, "Error: " + "\n" +
e11.getMessage(), "Message", JOptionPane.ERROR_MESSAGE);
}
if (k == leng)
{
if (error > 0)
JOptionPane.showMessageDialog(null, error +
" error(s) in test mode, a log file has been produced (please check it).", "Message", JOptionPane.ERROR_MESSAGE);
else
JOptionPane.showMessageDialog(null, "The process has been completed without errors, Emails have been sended and a log file produced.");
cancelButton.setEnabled(false);
state=false;
}
}
});
t.start();
}
catch (Exception e7)
{
JOptionPane.showMessageDialog(null, "Error: Could not create file",
"Message", JOptionPane.ERROR_MESSAGE);
}
}
[EDIT]Aktueller Code!!!