Autor Thema: Text aus Datei importieren  (Gelesen 1686 mal)

Offline HelpMartin

  • Frischling
  • *
  • Beiträge: 9
Text aus Datei importieren
« am: 07.09.06 - 10:41:15 »
Hallo,

ich habe folgenden Sachverhalt.

Ich möchte aus einer txt.datei bestimmte Angaben/Werte auslesen und diese dann in Notesfelder importieren.

Speicherort und Dateiname wechseln, also muss das der User selbst eingeben.


Die txt.datei sieht folgendermaßen aus:


A_1009                    1250 A_1019                    1000 A_1021                     500 A_1022                      00 K_8601                    1600 A_1029                     500 A_1039                    2750 ........


Die Bezeichner, also mit denen ich den Feldinhalt zuordnen kann, sind immer gleich:
A_1009, A_1019, etc.,
der zu lesende Wert steht dann 24 Zeichen rechtsbündung.

Laienhaft geschildert müsste also ein Script jeweils den Bezeichner suchen, wenn er den dann gefunden hat 24 Zeilen nach rechts springen und dann den Wert rechtsbündig auslesen, diesen Wert dann anschließend in ein Notesfeld schreiben.

Wie ich text.dateien auslese weiss ich soweit, aber das ist mir etwas zu schwer.

Vielleicht weiss hier jemand Rat?

Vielen Dank schon mal.

Martin

Offline ZaLudtske

  • Senior Mitglied
  • ****
  • Beiträge: 319
  • Geschlecht: Männlich
  • carpe diem
Re: Text aus Datei importieren
« Antwort #1 am: 07.09.06 - 10:44:26 »
Wie ist die Datei aufgebaut?

Entspricht eine Zeile einem Dokument oder eine Datei?

Haben die Felder eine feste Breite?

Bitte mehr Infos zur Datei posten.

Rainer
Rainer Zaske

MCSD - C#

Offline HelpMartin

  • Frischling
  • *
  • Beiträge: 9
Re: Text aus Datei importieren
« Antwort #2 am: 07.09.06 - 11:19:30 »
Folgender Hintergrund, ich habe ein Programm in das Kundendaten aus diversen anderen Programmen und teilweise manuell eingegeben werden.
Nun sollen nur ganz bestimmte Werte aus diesem Programm bzw. aus einer Kundenakte in Notes dargestellt bzw. dort weiterverarbeitet werden.

Ein direkter Zugriff auf das Programm bzw. auf die Daten ist nicht möglich.

Es besteht aber die Möglichkeit einen Datenéxport durchzuführen.

Die Datei heisst z.B. export.txt, öffne ich sie über einen editor sieht der Inhalt so aus:

A_1009                    1250 A_1019                    1000 A_1021                     500 A_1022                      00 K_8601                    1600 A_1029                     500 A_1039                    2750 A_1132                      00 P_2189                      00 A_1069                      00 A_1051                      00 P_2049_X                  4500 P_2066                      00 P_2019_X                  4500 P_2107                     100 A_1079                    2750 A_1101                     200 A_1102                    1000 A_1103                    3000 A_1104                      00 P_2089_X                  6300 A_1109                    4200 G_3139                      00 A_1135                     200 K_8201                     338 A_1140                      00 G_3149_X                   600 A_1139                     950 G_3200_X                   600 K_8202                     720 A_1133                      00 A_1134                      00 K_8203                      10 A_1179                    5250 A_1131                     750  usw. ..............


In der Datei sind einmal die Bezeichner und wie beschrieben die Werte dargestellt.

Der Bezeichner A_1103 und der dazugehörige Wert 3000 gibt z.B. an,
dass der Kunde einen Mindestumsatz von 3000.- getätigt hat.

In Notes hätte ich dann ein Feld -Mindestumsatz-.

Offline Untitled

  • Senior Mitglied
  • ****
  • Beiträge: 364
    • Musiker24.ch - Musiker und Bands finden
Re: Text aus Datei importieren
« Antwort #3 am: 07.09.06 - 12:01:57 »
Folgender Vorschlag:

Mit "while eof(deinedateinummer)  = false" und "Line Input" jeweils die ganze Datei Zeilenweise einlesen.

Dann würde ich die Bezeichner mit "Bezeichner = Trim(Left())" aus der Zeile raushauen und vergleichen, obs der Gesuchte ist. Wenn ja, musst du die ganze Zeile aufsplitten. Hier ist mir jedoch der Aufbau der Zeile zu wenig genau beschrieben. Feste Breite? Mind. durch ein Space getrennt?

Ich empfehle dir, die Werte beim Export durch ein Zeichen (zum Beispiel "|") zu trennen. Dann kannst du danach beim Import nur noch einen Split nach "|" zu machen und hast die Werte wieder schön getrennt.

Falls du eine Feste Breite hast, wirst du die Funktion "Mid" benötigen. Schau dir in der Designer Hilfe die Details an.

Grüsse
Moritz

Offline HelpMartin

  • Frischling
  • *
  • Beiträge: 9
Re: Text aus Datei importieren
« Antwort #4 am: 07.09.06 - 12:14:55 »
Der Zeilenaufbau ist immer gleich.
Bezeichner danach folgt nach 24 Zeichen rechtsbündig der Wert, danach Space, Bezeichner 24 Zeichen rechtsbündig der Wert , Space usw.

Offline Untitled

  • Senior Mitglied
  • ****
  • Beiträge: 364
    • Musiker24.ch - Musiker und Bands finden
Re: Text aus Datei importieren
« Antwort #5 am: 07.09.06 - 12:18:41 »
Ok. Dann ist Mid() dein freund.

Sag an, wenn du Probleme hast.

Grüsse

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Text aus Datei importieren
« Antwort #6 am: 07.09.06 - 15:11:26 »
wenn du nicht allzu viele Zeilen hast, dann hilft dir eventuell die folgende Funktion:

Es liefert den Inhalt einer Textdatei als Array zurück. Die einzelnen Zeilen kabnnst du dann mit Explode und einem Trennzeichen, wie z.B. Chr(9) für Tab-Sprung in die einzelnen Bestandteile zerlegen...

Code
Function ImportFromFile( sFile As String ) As Variant 
    REM Eine Import-Funktion für die Praxis... 
    ' # ... Rückgabewert = Array 
	On Error Goto ErrHandle 
	ImportFromFile = "" 
	If sFile <> "" Then 
		Dim sRow() As String 
		Dim sTxt As String 
		Dim fileNum As Integer 
		Dim counter As Integer 
		fileNum = Freefile() 
		counter = -1 
            ' # ... die Datei zum Lesen öffnen... 
		Open sFile For Input As fileNum 
		Do While Not Eof( fileNum )  
			Line Input #fileNum, sTxt 
			counter = counter + 1 
			Redim Preserve sRow( 0 To counter ) 
			sRow( counter ) = sTxt 
		Loop 
		Close fileNum' # ... schließen 
            ' # ... Array zurückgeben... 
		ImportFromFile = sRow  
		Print "Der Import ist abgeschlossen" 
	End If 
	Exit Function 
ErrHandle: 
	Close fileNum 
	Print "Abbruch - es konnte keine Datei geöffnet werden" 
	Exit Function 
End Function
Grüßle Toni :)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz