Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Lancelot am 07.12.06 - 17:31:09

Titel: Positionieren in einer Textdatei
Beitrag von: Lancelot am 07.12.06 - 17:31:09
Hy Leute,

ich habe ein Problem und hoffe Ihr habt vielleicht einen Lösungsansatz für mich.

Ich habe eine  txt- Datei mit 2 Mio. Sätze.
Satzaufbau:
123456;31122006;Mustermann;

Im Mail gibt es einen Knopf, der eine Dialogbox öffnet und dort soll man eine 6 stellige Zahl als Suchekritärium eingeben.
Notes sollte dann die anderen beiden Einträge in der Zeile der Datei wieder in die Dialogbox schreiben.

Wie stelle ich es in Notes an, dass ich gleich auf der 6 stelligen Zahl in der Datei positionieren kann.
Es gibt laut Hilfe einen Scriptbefehl "Seek", aber mit diesem haut das nicht hin.

Klar kann ich die Datei Schritt für Schritt durchlaufen, aber dann dauert alles zu lange.

Bin für alle Hilfen Dankbar.

Haben Notes 7.0.2 auf Server und Client.

Ach ja, Decs läuft bei uns nicht leider nicht und der EDV CHef möchte es auch nicht am laufen haben.
Titel: Re: Positionieren in einer Textdatei
Beitrag von: koehlerbv am 07.12.06 - 17:37:53
Eine Textdatei ist eine sequentielle Datei, also ohne Index etc. Du kannst dort tatsächlich nur Zeile für Zeile durchgehen wie bei einem Tonband.

Seek (siehe Hilfe) bewirkt eh etwas ganz anderes.

Bernhard
Titel: Re: Positionieren in einer Textdatei
Beitrag von: m3 am 07.12.06 - 17:45:41
Für seek müsstest Du wissen, wie groß der Datensatz ist.

Import in Notes-Dokumente und dann über den View suchen?
Titel: Re: Positionieren in einer Textdatei
Beitrag von: flaite am 07.12.06 - 17:55:37
In Notes 7 kannst du theoretisch Java NIO nutzen. Das benutzt bestimmte OS-spezifischen Möglichkeiten, so dass es wirklich schneller geht. Einfach ist es aber nicht.
Im übrigen verstehe ich nicht, warum diese Daten nicht in einer Datenbank stehen.
Dafür sprechen Gründe von Effizienz, Sicherheit, Portierbarkeit, Kontrolle, Backup und und und.
Für Datenbankzugriffe aus Notes braucht es auch kein DECS. Gerade auch für den Zugriff von solch echt einfachen Datentrukturen gibts da wesentlich einfachere Lösungen.


Titel: Re: Positionieren in einer Textdatei
Beitrag von: koehlerbv am 07.12.06 - 18:10:19
Ach ja, Decs läuft bei uns nicht leider nicht und der EDV CHef möchte es auch nicht am laufen haben.

DECS oder nicht - ich kann mir aber nicht vorstellen, dass ausgerechnet der IT-Chef auf die Schnapsidee mit der sequentiellen Datei aus mindestens 50 Millionen Zeichen für einen "schnellen ad-hoc-Datenzugriff" gekommen ist. Denn damit geht es nun garantiert nicht "schnell".

Axels Worten ist aus meiner Sicht nichts hinzuzufügen.

Bernhard
Titel: Re: Positionieren in einer Textdatei
Beitrag von: Lancelot am 08.12.06 - 07:09:21
Danke Euch Jungs.

Die Idee mit der Datei kam daher, weil es sich dabei um unsere Auftragstabel der AS 400 handelt und ich mit Notes sonst nicht an die Daten kommen würde.
Deswegen der Umweg über die Textdatei.

Nochmals Danke.
Titel: Re: Positionieren in einer Textdatei
Beitrag von: Thomas Schulte am 08.12.06 - 08:46:07
Tschuldigung aber das schreit ja förmlich nach einer JDBC/ODBC Verbindung.
Titel: Re: Positionieren in einer Textdatei
Beitrag von: flaite am 08.12.06 - 09:27:00
Ritter Lancelot,

sind die Daten nun
a) in einer Datenbank und wird daraus eine Textdatei generiert
b) in einer Textdatei.

Wenn sie in einer Datenbank sind:
für ODBC: Such nach LS:DO in der Designerhilfe
für JDBC: Würd ich präferieren, aber ich schreib eben auch die ganze Zeit Java. Vor allem mußt du dann erstmal in Erfahrung bringen, welchen JDBC Treiber du für die Datenbank verwenden kannst.

Das arbeiten mit Random Access Files ist jedoch imnsho spätestens seit den 80ern mega-out.
Titel: Re: Positionieren in einer Textdatei
Beitrag von: Otto am 08.12.06 - 13:38:05
sollten sich Notes7 und AS400 über DB2 nicht bestens verstehen?
wasauchimmerdasindemzusammenhangheißenmag  ;-)

Gruß
Otto
Titel: Re: Positionieren in einer Textdatei
Beitrag von: Thomas Schulte am 08.12.06 - 15:44:20
Die verstehen sich schon lange nur wenn ich keinen UserAccount für die Daten bekomme, dann schaut es mau aus.  ;D
Titel: Re: Positionieren in einer Textdatei
Beitrag von: Pyewacket am 12.12.06 - 10:20:05
Ganz so hoffnungslos ist der Fall nicht. Es müssen aber ein paar Bedingungen erfüllt sein.
- Die Exportdatei ist nach dieser Nummer die du suchst sortiert.
- jedes der drei Felder hat eine fixe Länge, ist der Inhalt kürzer muss mit Leerzeichen aufgefüllt werden.

Du kannst jetzt mit FileLen() die Grösse der Datei bestimmen.
Den Wert geteilt durch die Satzlänge ergibt die Anzahl Datensätze
Dieser Wert muss ein Vielfaches der festen Satzlänge sein, sonst stimmt was nicht.

Je nachdem wie du die Datei erzeugst musst du eventuell noch die Zeilenendekennung mit zur Satzlänge dazuzählen.

Open der Datei mit der Option Random und Angabe der Satzlänge

Mit der GET Anweisung kanns du nun unter Angabe der Satznummer direkt eine Zeile Lesen.
Das geht schon mal schneller als die Datei sequentiell durchzulesen.

Wenn du einen bestimmten Eintrag suchst, kannst du das mit binärem Suchen relativ schnell machen. Du liest den Satz in der Mitte der Datei. Je nachdem ob dein Suchbegriff grösser oder kleiner dem gefundenen ist musst du in der oberen oder unteren Hälfte weitersuchen bis du entweder den gewünschten Satz gefunden hast oder bis Unter- und Obergrenze des Suchbereichs gleich sind. Beschrieben ist das in der Wikipedia unter "Binäre Suche".
Bei 2 Mio Datensätzen müsstest du nach spätestens 21 Dateizugriffen den Datensatz haben oder wissen daß er nicht vorkommt.