Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: vbis am 09.06.09 - 14:59:34

Titel: Zugriff auf Excel Datei
Beitrag 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
Titel: Re: Zugriff auf Excel Datei
Beitrag von: Ozan am 09.06.09 - 15:13:49
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
Titel: Re: Zugriff auf Excel Datei
Beitrag von: ascabg am 09.06.09 - 15:21:15
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
Titel: Re: Zugriff auf Excel Datei
Beitrag von: Ozan am 09.06.09 - 15:27:58
über die Feldnummerierung:
doc.Name=field(1)
doc.Vorname=field(n)
Titel: Re: Zugriff auf Excel Datei
Beitrag von: ascabg am 09.06.09 - 15:31:18
Strasse, PLZ, Ort, ... ???
Titel: Re: Zugriff auf Excel Datei
Beitrag von: Ozan am 09.06.09 - 15:34:29
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.
Titel: Re: Zugriff auf Excel Datei
Beitrag von: ascabg am 09.06.09 - 15:37:47
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
Titel: Re: Zugriff auf Excel Datei
Beitrag von: vbis am 09.06.09 - 15:44:20
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 ?
Titel: Re: Zugriff auf Excel Datei
Beitrag von: ascabg am 09.06.09 - 15:49:11
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
Titel: Re: Zugriff auf Excel Datei
Beitrag von: ascabg am 09.06.09 - 15:57:11
@vbis

Eventuell hilft Dir dieses hier schon ein wenig weiter.

Excel-Import (http://atnotes.de/index.php/topic,26088.0.html)

Andreas
Titel: Re: Zugriff auf Excel Datei
Beitrag von: Ozan am 09.06.09 - 15:57:31
@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.
Titel: Re: Zugriff auf Excel Datei
Beitrag von: vbis am 09.06.09 - 15:59:01
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 =)
Titel: Re: Zugriff auf Excel Datei
Beitrag von: ascabg am 09.06.09 - 16:13:07
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
Titel: Re: Zugriff auf Excel Datei
Beitrag von: Axel am 09.06.09 - 18:39:10
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
Titel: Re: Zugriff auf Excel Datei
Beitrag von: vbis am 11.06.09 - 11:53:59
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.
Titel: Re: Zugriff auf Excel Datei
Beitrag von: Gandhi am 16.06.09 - 16:13:13
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.
Titel: Re: Zugriff auf Excel Datei
Beitrag von: Thomas Schulte am 16.06.09 - 16:26:28
DBF ist doch eigentlich kein Excel Format, sondern Dbase?

Was steckt da jetzt wirklich dahinter?
Titel: Re: Zugriff auf Excel Datei
Beitrag von: pram am 19.06.09 - 22:52:53
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