Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Bamberg am 03.09.06 - 14:14:59
-
Hallo Forum,
ich bin neu im Umgang als Entwickler in Lotus Notes.
Aber vielleicht findet sich hier doch jemand, der auch einem Neuling auf die richtige Spur setzen möchte.
Mein ZIEL:
Ziel soll es sein, via Button eine Textdatei in eine Tabelle zu importieren.
Wie ich eine Textdatei auslese, weis ich bereits. Nun stellt sich die Frage, wie steuere ich eine Tabelle im Dokument an (lesen ? / schreiben ?). Hierzu habe ich auch einen Code .... aber der will nicht so richtig. Er zeigt (msgbox) mir den Inhalt der Zeile nicht an, sondern bringt mir die Fehlermeldung: "Instance member GETITEMVALUE does not exist"
Sub Click(Source As Button)
Dim workspace As New NotesUIWorkspace
Set doc = workspace.CurrentDocument
A = doc.GetItemValue ( "$Table1", "1" )
Msgbox A(0)
End Sub
Die Tabelle habe ich "table1" genannt und die erste Zeile "1"
Ich benutze Lotus Script, da ich mit Visual Basic ganz gut umgehen kann.
Würde mich über Eure Unterstützung sehr freuen.
Gruß
Gerhard
-
doc soll wohl ein NotesDocument und kein NotesUIDocument sein.
Also
dim doc as NotesDocument
...
Set doc = workspace.CurrentDocument.Document
-
Hi Glombi,
vielen Dank für den Hinweis. Klar ... da hab ich wohl zwei Dinge durcheinander gebracht.
Hab den Code nun angepasst ....
Sub Click(Source As Button)
Dim workspaceUI As New NotesUIWorkspace
Dim doc As notesDocument
Set doc = workspaceUI.CurrentDocument.Document
A = doc.GetItemValue ( "$Table1", "1" )
Msgbox A(0)
End Sub
Nun hab ich folgende Fehlermeldung:
"Wrong number of arguments for GETITEMVALUE ?"
Bin ich da falsch ? .... Wie kann ich denn die Werte einer Tabelle auslesen, manipulieren und wieder schreiben ?
Gruß
Gerhard
-
Wie du deine Tabelle und deren erste Zeile nennst, ist ziemlich wurscht, wichtig ist, in welchen Feldern die Werte stehen, deren Inhalt du mit doc.Getitemvalue herausholen möchtest - sprich: wie Notes die Inhalte der Tabelle nennt bzw. kennt. Von der Verwendung von $-Zeichen in Feldnamen, die du selbst vergibst, kann ich nur dringend abraten.
Vielleicht hilft uns ein kleines Bild der Anwendung im Designer dort weiter.
-
Hast Du Dir denn in der DesignerHelp mal die Syntax für NotesDocument.GetItemValue angeschaut? Offensichtlich nicht ...
Dieser syntaktische Fehler ist aber nur ein "Nebenkriegsschauplatz": Du kannst nicht "einfach so" ein Textfile in eine Tabelle einlesen - Du müsstest dafür entweder in einer Tabelle entsprechende Felder für die Inhalte vorhalten oder die Tabelle komplett neu aufbauen. Welches Konzept hast Du bisher entwickelt? Genau darüber sollten wir erstmal debattieren, bevor es an das "Handwerk" geht.
Bernhard
-
Hallo Bernhard,
hallo LN4ever,
Danke für Eure Anregungen.
Ja, ich hab die Syntax in der Hilfe gelesen, umsomehr hat mich der Befehl aus den Forum hier "doc.GetItemValue ( "$Table1", "1" )" gewundert. Da hab ich bestimmt den Inhalt des Beitrages nicht richtig verstanden .... sorry.
Wie schon gesagt, ich möchte eine Textdatei mit variabler Größe, jedoch mit fester Anzahl von Spalten in eine Tabelle importieren. Beim Import soll der Inhalt der einzelnen Zellen mit dem Datensatz aus der *.txt verglichen werden. Ist das Ergebnis ungleich, soll der Datensatz im Notes korrigiert werden und farblich gekennzeichnet.
Ich hab mir nun vorgstellt, dass ich zunächst eine Maske generiere, welche 2 Inhalte hat:
1.) Ein Feld mit dem Namen der *.txt
2.) Eine dynamische Tabelle
Importieren wollte ich mit einem Button im Header per Klick.
Das Script hab ich angefangen mit dem Import. Hier mal die Kurzversion:
... fileNum1% = Freefile
Open "C:\ACCESS\Tabelle1.txt" For Input As fileNum1%
Input #fileNum1%, Wert1$, Wert2$, Wert3$, Wert4$
Ausdruck$ = Wert1$ & Wert2$ & Wert3$ & Wert4$
Close fileNum1% ...
Funktioniert zwar, bringt mich jedoch nicht weiter, da ich es noch nicht verstanden habe, den Zelleninhalt einer Notes-Tabelle zu manipulieren.
Da hackts ....
Ich arbeite viel mit Datenbanken, SQL, Access und wollte mein scheinbar laienhaftes Wissen auf eine Tabelle im Notes übertragen .... denkste .... is nicht.
Vielleicht habt Ihr einen Ansatz für mich ?
Gruß
Gerhard
-
Wenn Notes- und Access-Programmierer von "Tabellen" sprechen, kann man vortrefflich aneinander vorbeireden, weil in beiden Fällen etwas völlig unterschiedliches gemeint ist.
Wenn Word-Benutzer und Notes-Benutzer das Wort "Tabelle" in den Mund nehmen, meinen sie manchmal, aber nicht zwangsläufig dasselbe.
In einer Accesstabelle bezeichnest du das als Zeile, was in Notes einem Dokument entspricht. Eine Spalte ist dann eher ein Feld.
Oder hast du gar nicht mehrere Notes-Dokumente, sondern alles nur in einem Notes-Dokument und dort in einem einzigen Richtext-Item in einer (Word-ähnlichen) Tabelle ?
-
Hallo LN4ever,
ja, Letzteres ... genau so ist es.
Word-ähnliche Tabelle...
... in VBA für Word ist es kein Problem die Tabelleninhalte zu manipulieren ... gilt dies auch für Notes ?
Gruß
Gerhard
-
Eine Tabelle ist kein eigenes Gestaltungselement wie ein Textfeld oder eine Dropdown-Box, sondern nur ein spezieller Inhalt eines RichTextFeldes.
Die Manipulation dieser Tabellen im RichText-Feld werden in der Designer-Hilfe entsprechend beschrieben. Wenn Dir das zu komplex ist, bietet etwa Ben Langhinrichs das Midas Rich Text LSX (http://www.geniisoft.com/showcase.nsf/MidasLSX) an, welches die Arbeit mit Tabellen vereinfacht.
-
Hallo m3,
vielen Dank für Deinen Hinweis.
... ist also nicht möglich im Notes eine Tabelle zu manipulieren. Lediglich der RichText kann manipuliert werden. Der Aufwand lohnt jedoch nicht, da ich die Möglichkeit habe, die txt-Datei in fast x-beliebiger Form zur Verfügung zu stellen. (xls, doc, html, rtf, o.ä.) Auch kann ich den Abgleich der Datensätze extern vornehmen.
Ich denke, ich nehme xls. Oder habt Ihr einen besseren Vorschlag?
Kann man ein eingebettetes Excel-Arbeitsblatt via Lotus Script aktualisieren ? (Verweis auf eine Datei)
Für Eure Tipps wäre ich dankbar. Ich bin doch etwas vorsichtiger geworden, frag da lieber mal bei Euch nach .... ;)
Gruß
Gerhard
-
Ab Notes R6 kann man Tabellen bearbeiten: NotesRichTextTable....
In R5 wird es schwierig....
Man kann ein Excel-Dokument einbetten und aktualisieren, mit den "normalen" COM-Mitteln.
Solltet ihr einen R6 Server haben und nur R5 Clients, könnte man ggf. auch eine aktualisieren mit einem Hintergrund-Agenten (dieser läuft dann auf dem Server) vorstellen.
Gruss
Chirs
-
Hallo Chirs (?) oder Chris,
ok ... ich werd mich dann mal auf den Weg machen Excel-Sheets einzubetten.
Danke an alle für Eure Unterstützung.
Gruß
Gerhard