Autor Thema: datenabgleich zwischen notes und excel  (Gelesen 1409 mal)

Offline birdy

  • Frischling
  • *
  • Beiträge: 37
  • Geschlecht: Weiblich
  • Keep smiling!
datenabgleich zwischen notes und excel
« am: 20.08.03 - 14:42:28 »
Hallo,

bitte helft mir! bin verzweifelt und am ende.

in meiner excel-tabelle gibt es einige hundert datensätze.
in meiner notesview gibt es einige hundert doks.
in regelmäßigen abständen will ich nun die exceldaten mit den notesdaten vergleichen und bei bedarf in notes die doks neu erstellen oder löschen.
die excel-tabelle ist also aktuell und die notesdaten evtl. nicht mehr.

ich bin nun schon so weit, dass ich von notes aus über ole auf die exceltabelle zugreife und, falls es in excel einen datensatz gibt, den es in notes noch nicht gibt, ich dann ein neues dok anlege. der vergleich findet anhand einer eindeutigen id-nr. statt.

was ich leider nicht auf die reihe kriege ist, dass ich ein notesdok. löschen muss, das es in notes zwar noch gibt, das aber in der exceltabelle nicht mehr existiert.

ich will mir also mein notesdoc holen, diese id-nr. auslesen und in der exceltabelle nach dieser nr. suchen. wenn die nr. existiert ist alles ok, wenn nicht, muss das doc gelöscht werden.

hoffe, das ist einigermaßen verständlich beschrieben und irgendjemand hat ne idee bzw. vielleicht sogar schon ein script, mit dem ich das realisieren kann.

danke schonmal im voraus für jede anregung.

gruß,birdy

Offline MisterDa

  • Aktives Mitglied
  • ***
  • Beiträge: 163
  • Geschlecht: Männlich
  • Was zählen Schafe, wenn sie nicht schlafen können?
Re:datenabgleich zwischen notes und excel
« Antwort #1 am: 20.08.03 - 14:52:51 »
Hi!
Du kannst ja eine Variable als Flag nehmen. Danach vergleichst du, ob du in deinem Excel-Sheet die gleiche Nummer findest. Falls die Nummer da ist, setzt du das Flag auf True oder irgendeinen eindeutigen Wert. Falls es nicht vorhanden ist, läßt du die Variable auf False (oder dem Ursprungswert).
Nach deinem Vergleich entscheidest du dann anhand einer If-Abfrage (mit dieser Variable), ob das doc gelöscht wird oder nicht..
Habs zwar nicht ausprobiert, sollte aber gehen..
Dabei musst du allerdings für jedes doc alle Excel-Datensätze durchlaufen...da kann ich leider nicht sagen, wielange das dann dauert..

Gruß
MisterDa
« Letzte Änderung: 20.08.03 - 14:57:09 von MisterDa »
Win2k
Designer 5.08

Offline MartinG

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.802
  • Geschlecht: Männlich
Re:datenabgleich zwischen notes und excel
« Antwort #2 am: 20.08.03 - 17:42:38 »
sorry - aber ist das vielleicht nicht ein falscher Ansatz? So eine Bastel - selberstricklösung ist nicht unkritisch und sicherlich auch etwas fehleranfällig. Muss es eine Excelliste mit welcher Du abgleichst ? Wieso geht z.B. keine Notesreplik oder DECS oder ähnliches zum Abgleichen.

Oder bin ich völlig falsch - aber das riecht irgendwie nach einer Flickschusterei die schwerlich richtig funktionieren wird...
Martin
Wir leben zwar alle unter dem gleichen Himmel, aber wir haben nicht den gleichen Horizont.
KONRAD ADENAUER

Offline wflamme

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 690
  • Geschlecht: Männlich
  • Irgendwie geht das schon...
    • wflamme
Re:datenabgleich zwischen notes und excel
« Antwort #3 am: 21.08.03 - 01:50:12 »
Wenn Du die Notes-Dokumente nicht einfach löschen und neu anlegen kannst (wg. Referenzen), dann mach folgendes:

Type tyRow
col1 as integer
col2 as string
col3 as double
'... usw, je nach Inhalt der Excel-Spalten
End Type

Und dann:

Dim RAMSheet List as tyRow

Damit hast Du eine Liste von Tabellenzeilen-Inhalten definiert. Nun kannst Du Excel-Inhalte zuweisen.

Schleife über alle Excel-Zeilen:
ID$=Cstr( ...hier die Quelle der Excel-ZeilenID...)
RAMSheet(ID$).col1=CInt(... erste Excel-Daten-Spalte...)
RAMSheet(ID$).col2=CStr(... zweite Excel-Daten-Spalte...)
usw.

Nach Durchlauf über alle Excel-Zeilen hast Du alle Excel-Inhalte komplett im RAM und mit der Schlüssel-ID getagged.

Nun Durchlauf über alle Notes-Dokumente, dort die ID extrahieren ...

intSaveFlag=False
currentID$=doc.GetItemValue({ID})(0)

.. und prüfen, ob eine Excel-Zeile mit dieser ID existiert:

If IsElement(RAMSheet(currentID$))=True Then
 'gibt's in Notes und Excel, Inhalte vergleichen, ggfs. aktualisieren
 If RAMSheet(currentID$).col1<>doc.GetItemValue({col1})(0) Then
  'Item muß aktualisiert werden, Inhalte stimmen nicht mehr
  intSaveFlag=True
  doc.ReplaceItemValue({col1}, RAMSheet(currentID$).col1)
 End If '/Item muß aktualisiert werden, Inhalte stimmen nicht mehr

'hier noch weitere Inhalte Notes<>Excel vergleichen u. aktualisieren, falls erforderlich

 If intSaveFlag Then
  doc.Save(True, True)
 End If

Else 'gibt's noch in Notes aber nicht mehr in Excel
doc.Remove(True)
End If '/gibt's in Notes und Excel, Inhalte vergleichen, ggfs. aktualisieren

Ist wirklich viel schneller und eleganter so. Der Trick mit der Liste erspart Dir, die Excel-Tabelle immer wieder von vorne durchkauen zu müssen. Stattdessen fragst Du einfach den List-Tag ab, der mit dem ID-Schlüssel identisch ist.
« Letzte Änderung: 21.08.03 - 01:58:45 von wflamme »
Grüße,
Wolfgang

"I love deadlines. I love the whooshing sound they make as they pass by..."
DOUGLAS ADAMS

wflamme@mainz-online.de
http://www.sns1.de/partner/flamme/wflamme.nsf

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz