Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: vbis am 09.06.09 - 14:59:34
-
Hallo zusammen,
ich würde gerne aus Notes heraus auf eine Excel Datei (z.B. im csv-Format) zugreifen.
Leider weiß ich nicht genau, wie dies zu machen ist und was alles zu beachten ist.
Geht es evtl. mit der Funktion @DBColumn ?
Ich stelle mir dies als eine Art Live Zugriff auf diese Datei vor.
Anhand einer Kundennummer die eingegeben wird, werden andere Felder automatisch anhand der gefundenen Kundennummer aus der Tabelle ergänzt.
Es wäre schön wenn ich hier Tipps kriegen könnte, wie ich dies am besten Umsetzen kann, da ich soetwas noch nicht gemacht habe.
Vielen Dank für Eure Hilfe
thomas
-
Hallo,
hmm, das kann ich dir nicht sagen, aber ich könnte dir eine Agent anbieten der die Daten in die NSF importiert, dann kannst du problemlos mit @DBColumn arbeiten.
Sub Initialize
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim field(1 To 2) As String 'gesamt Anzahl der Felder in der csv angeben
Dim session As New NotesSession
Dim sentence As String
Set db = session.CurrentDatabase
Open "c:\input.csv" For Input As #1
While Not Eof(1)
Line Input #1, sentence
For i = 1 To 2 'gesamt Anzahl der Felder in der csv angeben
field(i) = ""
Next i
fieldnr = 1
For i = 1 To Len(sentence)
If Mid(sentence, i, 1) = ";" Then fieldnr = fieldnr + 1 Else field(fieldnr) = field(fieldnr) + Mid(sentence, i, 1)
Next i
For i = 1 To 2 'gesamt Anzahl der Felder in der csv angeben
field(i) = Replace(field(i),Chr(34),"")
Next i
Set doc = New NotesDocument( db )
doc.Form = "Person"
doc.Name=field(1)
'......
Call doc.Save(True,True)
Wend
Close #1
End Sub
-
Hallo,
Man kann auf die CSV-Datei zugreifen oder aber auch auf die Excel-Datei direkt.
Hierzu kannst Du die COM-Schnittstelle Verwenden. (vorausgesetzt Excel ist auf dem Rechner auch installiert).
@Ozan
Wie wuerde in Deinem Script eine CSV-Datei importiert, die folgenden Aufbau hat,
Wert1;Wert2;Wert3;Wert4;...;Wertx
Andreas
-
über die Feldnummerierung:
doc.Name=field(1)
doc.Vorname=field(n)
-
Strasse, PLZ, Ort, ... ???
-
verstehe nicht... in der csv sind doch alle spalten untereinander, somit ist z.b. field(5) immer Strasse, oder habe ich etwas falsch verstanden? Jenachdem wie die csv Aufbau ist muss man alle Felder die importiert werden mit angeben.
-
Eben nicht immer.
Excel-Tabelle
1. Spalte=Name
2. Spalte=Vorname
3. Spalte=eMail
4. Spalte=Strasse
5.Spalte=PLZ
...
Speicherst Du nun die Datei als CSV hast Du genau meinen beschriebenen Aufbau der Datei und Dein Script wuerde Probleme bekommen.
Andreas
-
Interessant wäre für mich wirklich ein Live Zugriff, da die Excel-Datei dann nur bei Aktualisierung ausgetauscht werden müsste (natürlich dann nach gleichem Aufbau der Datei nur mit aktuellen Datensätzen) und schon hätte man wieder aktuelle Daten.
@ascabg:
So ähnlich wie von dir beschrieben würde die Excel-Datei aussehen. Richtig.
Bisher ist Excel auf dem Server nicht installiert ...
Wie würde es denn dann theoretisch mit der COM-Schnittstelle funktionieren ?
-
Hi,
Willst Du den Zugriff (wie auch immer) manuell anstossen oder soll es automatisch (periodisch) erfolgen?
Wenn manuell, dass muss auf dem Rechner, auf dem Du dieses ausfuehren moechtest, Excel installiert sein.
@Ozan
Hier noch zwei kleine Screen-Shots.
Andreas
-
@vbis
Eventuell hilft Dir dieses hier schon ein wenig weiter.
Excel-Import (http://atnotes.de/index.php/topic,26088.0.html)
Andreas
-
@ascabg
diese Test Datei würde problemlos mit der Agent importiert, mach doch mal nen Text.nsf und importiere die doch einfach.
Das noch anpassen:
doc.name=field(1)
doc.vorname=field(2)
doc.email=field(3)
doc.strasse=field(4)
doc.plz=field(5)
doc.ort=field(6)
und
gesamt Anzahl der Felder in der csv angeben entsprechend anpassen in deinem Fall auf die 6.
Sorry eben plz übersehen.
-
Anhand der Eindeutigen Kundennummer, die man in der Notesdatenbank eingibt, sollen weitere Felder wie Name, Vorname, Telefonnummer etc. anhand der Daten aus der Excel Datei zu dieser Kundennummer (welcher Dateityp auch immer ... csv, xls ganz egal) gefüllt werden ....
Von daher sollte alles sowie der Zugriff komplett automatisch sein, sobald ein neues Dokument erstellt wird und die Kundennummer eingegeben wird.
Ich hoffe du verstehst wie ich das meine =)
-
Hi
Ich verstehe schon was Du meinst.
Jedoch wuerde ich in einem solchen Fall dazu tendieren, die Daten in einer zweiten Db zu lagern und mittels den Bordmitteln von Notes (@DbLookup; @DbColumn) die Daten aus dieser zweiten Db auszulesen (koennte auch dieselbe Db sein).
Die Daten der Kunden koennten dann in regelmaessigen Abstaenden mit den aktuellen Daten aus einer Excel/CSV-Datei abgeglichen werden. (Neu, Aktualisieren, Loeschen)
Andreas
-
Jedoch wuerde ich in einem solchen Fall dazu tendieren, die Daten in einer zweiten Db zu lagern und mittels den Bordmitteln von Notes (@DbLookup; @DbColumn) die Daten aus dieser zweiten Db auszulesen (koennte auch dieselbe Db sein).
Sehe ich genauso. Alles andere ist eine Krückenlösung, die irgendwann zu Problemen führen kann.
Woher kommt denn die csv-Datei? Eventuell kann die Pflege der Kundenstammdaten auch direkt in Notes erfolgen und stehen so für weitere Vorgänge, z.B. Mail schreiben, zur Verfügung.
Axel
-
Hi
Ich verstehe schon was Du meinst.
Jedoch wuerde ich in einem solchen Fall dazu tendieren, die Daten in einer zweiten Db zu lagern und mittels den Bordmitteln von Notes (@DbLookup; @DbColumn) die Daten aus dieser zweiten Db auszulesen (koennte auch dieselbe Db sein).
Andreas
Genauso machen wir es im Moment auch. Die Daten werden in gewissen Abständen aus einer *.dbf Datei in eine weitere NotesDatenbank importiert.
Der Gedanke war nur, diesen import nicht mehr zu benötigen und noch aktuellere Daten via LiveZugriff zu haben.
@Axel:
Die Daten für den Import kommen derzeit aus einem gesonderten Programm.
-
Wenn auf die DB live zugegriffen werden soll - und dann auch noch mit @DB... Methoden, gibt es noch die Möglichkeit die Excel Datei als DSN (File, User, ...) anzulegen und dann per ODBC darauf zuzugreifen.
Generell eignet sich Excel nach meinem Geschmack für sowas aber nicht.
-
DBF ist doch eigentlich kein Excel Format, sondern Dbase?
Was steckt da jetzt wirklich dahinter?
-
Wir verwenden für sowas ADO. Es gibt dafür auch einen Exceltreiber, welcher (meistens) funktioniert. Sind die Tabellen schlampig, dann klappt es nicht.
-> http://lemming.name/?p=504
Gruß
Roland