Das Notes Forum
Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: machineslave am 26.06.07 - 11:08:56
-
<sorry ... hab's grad selber herausgefunden.... wer lesen kann :)
Hallo,
ich habe mir ein kleines Javaprogramm geschrieben, welches mit Parametern aufgerufen wird und dann ein neues Dokument erstellen soll und die Werte entsprechend in die Felder schreiben soll.
Nun würde ich gerne das Feld "Date" mit einem Datum, "Time" mit einer Uhrzeit und die anderen Felder mit einem numerischen Wert füllen. Ich weiss jedoch leider nicht, wie ich das hinbekomme, dass die Werte schon im entsprechenden Format geschrieben werden.
Hat jemand einen Rat?
Gruß
Stefan
import lotus.domino.*;
public class UpdateSpamRecord {
public static void main(String[] args) {
Session s = null;
try {
s = NotesFactory.createSession(
"<servername>",
"<username>", "<password>");
} catch (NotesException e) {
e.printStackTrace();
}
Database db;
try {
db = s.getDatabase("", "test.nsf");
Document doc = db.createDocument();
doc.replaceItemValue("Form", "SpamReportEntry");
doc.replaceItemValue("Date", args[0]);
doc.replaceItemValue("Time", args[1]);
doc.replaceItemValue("TotalMails", args[2]);
doc.replaceItemValue("InboundSpam", args[3]);
doc.replaceItemValue("InboundHam", args[4]);
doc.replaceItemValue("Outbound", args[5]);
doc.computeWithForm(true, false);
doc.save(true, false);
} catch (NotesException e1) {
e1.printStackTrace();
}
}
}
-
Ergänzen würde ich auf jeden Fall zum Schluss noch ein s.recycle() um auch aufzuräumen. Du kannst dir sonst schwer zu erkennende Fehler einhandeln, die erst nach vielen Aufrufen des Programms auftreten.
Grüße
Ralf
P.S. Weiters ohne es jetzt probiert zu haben glaube ich nicht dass dein gepostetes Programm das macht was du willst, oder?
-
Hallo,
das mit dem s.recycle() ist ein guter Tip. Ansonsten macht das Programm genau das, was ich möchte :-)
-
Nein das glaube ich nicht. Du schreibst, du möchtest dass Datei ein Datum ist, Time eine Zeit und der Rest numerische Feler sind.
Wenn du aber an replaceItemValue einen String übergibst, wird das ein Text. du müsstest die Strings zuerst in die entsprechnden javatypen konvertieren, bevor du es an replaceItemValue übergibst.
Grüße
Ralf
P.S. Ah ich sehe was ich übersehen habe. Das Computewithform soll die Felder übersetzen. Ich würde es zwar nicht so machen, aber wenn es funktioniert. :-P
-
Jou, stimmt. Ich vergass, den aktualisierten Code nochmal zu posten.
Hier ist er:
public class UpdateSpamRecord {
public static void main(String[] args) {
Session s = null;
DateTime date = null;
DateTime time = null;
Integer totalMails = new Integer(args[2]);
Integer inboundSpam = new Integer(args[3]);
Integer inboundHam = new Integer(args[4]);
Integer outbound = new Integer(args[5]);
try {
s = NotesFactory.createSession(
"<servername>",
"<username>", "<password>");
System.out.println("Connecting to server");
} catch (NotesException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
date = s.createDateTime(args[0]);
time = s.createDateTime(args[1]);
} catch (NotesException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
Database db;
try {
db = s.getDatabase("", "test.nsf");
System.out.println("Connecting to database");
Document doc = db.createDocument();
System.out.println("Creating document");
doc.replaceItemValue("Form", "SpamReportEntry");
doc.replaceItemValue("Date", date);
doc.replaceItemValue("Time", time.getTimeOnly());
doc.replaceItemValue("TotalMails", totalMails);
doc.replaceItemValue("InboundSpam", inboundSpam);
doc.replaceItemValue("InboundHam", inboundHam);
doc.replaceItemValue("Outbound", outbound);
System.out.println("Saving document");
doc.computeWithForm(true, false);
doc.save(true, false);
} catch (NotesException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}