ich hab ne kleine Aufgabe zu bewältigen. Ich habe eine Textdatei
Zeilenweise einzulesen. Die Werte in dieser Textdatei können
kommagetrennt und Leerzeichengetrennt stehen.
Wenn ich nun in Access die Datei Zeilenweise einlesen möchte ala :
Open lcImportPath + "\Vehicles.txt" For Input As #1
Do Until EOF(1) 'Zeilen aus der Textdatei einlesen
Input #1, lcLine 'Input in Variable ausgeben
' MsgBox lcLine
Loop
Close #1 'Input schließen
Wenn ich hier die Messagebox ausgeben lasse, so liest er mir die Werte
Kommagetrennt ein. Nicht Zeilenweise!! Woran liegt das?
Ich brauche immer den ersten und den letzten Wert in der Liste. Wobei
ich keine feste Länge weiß. Wie kann ich den ermitteln?
Am Anfang und am Ende einer Textdatei steht ein ,,Beginn,,,,,, und ein
,,Close,,,, diese Zeilen brauch ich nicht berücksichtigen. Ich muß also
ne Methode finden diese Auszuschließen.
Bitte um Hilfe.
In Progress 4GL kann man solche Dinge einfach lösen indem man per LOOKUP
in einem String ein bestimmtes Wort sucht. Oder mit TRIM und ENTRY
arbeiten kann, wobei TRIM .... (",") die Anzahl der Kommas im String
zurückgibt. Und mit Entry kann ich wie in einem Array zu dem Punkt in
der Zeile springen wo ich möchte bsp. ab dem 4.ten Komma.
Sowas bräuchte ich auch in Access, gibt es das? Dann müßte Acces mir
aber die Datei wirklich Zeilenweise einlesen.
Gruß
Michi
Michael Hofmann schreibselte:
> Hallo Leute,
>
> ich hab ne kleine Aufgabe zu bewältigen. Ich habe eine Textdatei
> Zeilenweise einzulesen. Die Werte in dieser Textdatei können
> kommagetrennt und Leerzeichengetrennt stehen.
...
> Wenn ich hier die Messagebox ausgeben lasse, so liest er mir die Werte
> Kommagetrennt ein. Nicht Zeilenweise!! Woran liegt das?
verwende Line Input ...
> Ich brauche immer den ersten und den letzten Wert in der Liste. Wobei
> ich keine feste Länge weiß. Wie kann ich den ermitteln?
Für alle Arbeiten sollten Dir die div. String-Funktionen
helfen. siehe Instr, Left, Mid, Right, Replace, Join usw.
Gruß
Hey Danke LineInput war der entscheidende Hinweis. Man bin ich blöd.
Vielen Dank
Gruß
Michi
Hallo Jörg,
ich habe noch eine Frage. Ich komme mit dem Left, Mid und so nicht so
ganz zurecht. In Progress 4GL kann ich geziehlt irgendwelche Zeichen in
einem String zählen. Zum Beispiel die Anzahl der Kommas. Ich kann auch
geziehlt sagen gib mir den Wert links vorm ersten Komma oder rechts vorm
letzten Komma.
Worauf ich hinaus möchte, ich habe zwei Arten von Textdateien. Eine
Textdatei ist Kommagetrennt. Ich brauch jeweils den ersten und letzten
Wert einer Zeile. Alles dazwischen interesiert mich nicht. Die Zeile hat
auch keine Feste breite, so dass ich nicht sagen kann nimm das 14te.
Komma, weil es auch mal sein kann das das 15te oder 16te das letzte ist.
Welche Lösung gäbe es? Jeweils das erste Komma den linken Wert davon.
Und das letzte Komma den Rechten Wert davon.
Dann hab ich eine Textdatei ist die mit einem Leerzeichen getrennt. Es
gibt aber Zeilen in dieser Datei die sind Kommagetrent. Oder auch
Kommagetrent und Leerzeichengetrennt.
Ich hab auf das Format wie die Textdatei herkommt keinen Einfluss, muß
aber speziell auf diese Unterschiede reagieren. Die Zeilen die nur
Leerzeichen getrennt sind kommen in eine eigene Tabelle. Genauso die
Zeilen was Kommagetrennt sind, die Werte in eine Eigene Tabelle und die
Zeilen die Komma und Leerzeichengetrennt sind.
Ist nicht leicht oder?
Bitte um Hilfe
Vielen Dank
Gruß
Michi
Michael Hofmann schrieb:
> Jörg Ackermann schrieb:
> ich habe noch eine Frage. Ich komme mit dem Left, Mid und so nicht so
> ganz zurecht. In Progress 4GL kann ich geziehlt irgendwelche Zeichen
> in einem String zählen. Zum Beispiel die Anzahl der Kommas. Ich kann
> auch geziehlt sagen gib mir den Wert links vorm ersten Komma oder
> rechts vorm letzten Komma.
>
> Worauf ich hinaus möchte, ich habe zwei Arten von Textdateien. Eine
> Textdatei ist Kommagetrennt. Ich brauch jeweils den ersten und letzten
> Wert einer Zeile. Alles dazwischen interesiert mich nicht. Die Zeile
> hat auch keine Feste breite, so dass ich nicht sagen kann nimm das
> 14te. Komma, weil es auch mal sein kann das das 15te oder 16te das
> letzte ist.
Kommt bissel auf die Access-version an.
Verrätst Du die mal bitte?
Im Prinzip:
Array aus jeder Zeile erstellen
arr = Split(Zeile, ",")
oder
arr = Split(Zeile, " ")
dann ersten und letzten Array-Eintrag auslesen.
1.: arr(0) letzter: arr(ubound(arr())
Damit kannst Du dann auch rel. einfach die Zeilenwerte in Tabellen
abfüllen.
Wenn Access-Version < A2k , wird es bissel umfangreicher.
Gruß
Jörg Ackermann schrieb:
nochwas:
In den Zeilen, in denen Komma und Leerzeichen gemischt
vorkommt, ersetzt Du eine Art durch die andere
( Replace(Zeile, ",", " ") oder Replace(Zeile, " ", ",")
oder beide durch was Neues.
dann Split...
HTH
Gruß
Hallo Jörg,
ich habe Access Version 2000.
Hmm da hast Du mir aber ne menge neuer Methoden geschrieben muß ich doch
glatt mal ausprobieren.
Vielen Dank :-)
Welche Unterschiede gibt es bezüglich Access 2000 ?
Gruß
Michi
Michael Hofmann schreibselte:
> Welche Unterschiede gibt es bezüglich Access 2000 ?
In A97 gibt es kein replace u. split.
Gruß
Hallo Jörg,
ich wollte mich für all Deine Tips bedanken. Sie haben mir sehr
weitergeholfen ich konnte alles tun was ich vorhatte.
Komisch finde ich nur das Split und Replace nicht in der
OnlineDokumentation zu Access gefunden wird!!
Vielen Dank
Gruß
Michi
Michael Hofmann schreibselte:
> Komisch finde ich nur das Split und Replace nicht in der
> OnlineDokumentation zu Access gefunden wird!!
Im VBA-Editor 'split' markieren <F1>
da kommt nichts?
Gruß
Nein da kommt nichts, genauso wie bei Replace. Irgendwas stimmt mit
meiner Hilfe nicht, zu sehr vielen Themen gibt er mir keine Hilfe.
Manchmal ist ein Eintrag in der Liste wenn ich ihn anwähle kommt aber
kein Thema.
Aber gut anderes Problem :-)
Danke Dir für Deine Tips.
Gruß
Michi
Michael Hofmann schreibselte:
> Nein da kommt nichts, genauso wie bei Replace. Irgendwas stimmt mit
> meiner Hilfe nicht, zu sehr vielen Themen gibt er mir keine Hilfe.
> Manchmal ist ein Eintrag in der Liste wenn ich ihn anwähle kommt aber
> kein Thema.
VBA-Hilfe installiert?
Laß das Setup nochmal drüberlaufen und schau,
ob die aktiviert ist.
Gruß
Hallo Jörg, vielleicht darf ich Dich noch einmal stören.
Ich lese ja eine Textdatei ein, und möchte die Werte in verschiedene
Kombinationsfelder füllen.
Im moment bau ich mir eine Liste innerhalb der Do-Schleife zusammen :
lcDriverId = lcDriverId + ";" + arr2(0)
so nun steht natürlich in der Variable ganz vorne ein ";"
Nun initialisiere ich mein Kombinationsfeld :
cmbDriver.RowSourceType = "value list"
cmbDriver.RowSource = lcDriverId
Natürlich hab ich jetzt einen leeren Eintrag im Kombinationsfeld.
Wie kann ich aus der Liste das erste ";" löschen, oder das leere Feld im
Kombinationsfeld löschen? Ich find dazu nichts in der Hilfe.
Ich werde mir die Hilfe aber mal neu installieren, weil der
Antwortassistent mehr als bescheuert ist, der liefert mir nie das was
ich brauche.
Ich danke Dir.
Gruß
Michi
Hallo Jörg,
vergiss was ich geschrieben habe. Ich bin ja auch so bescheuert. Die
Werte die ich aus der Textdatei auslese also der erste und der letzte,
brauch ich ja zusammen. Sie in getrennte Kombinationsfelder zu geben ist
Unsinn Pur.
Ich hab mir jetzt ein zweispaltiges Listenelement definiert. Leider komm
ich mit dem Füllen der Daten nicht so zurecht.
Ein neu installieren von Office brachte nicht den Erfolg, aber mir
scheint die Premium Version hat eh weng an schuss. In der mageren Hilfe
was ich hab (Hilfeassistent, kein Index und so) bekomm ich keine
Resultate über das handhaben von Listenfeldern.
Danke Dir
Gruß
Michi
> Hilfe in Access 2000 fehlerhaft
du hast Access 2000, ach so ...
a) wenn du kannst, verwende lieber 2002 (XP) oder 2003, ist die bessere
Version
b) Zur Hilfe in Eccess 2000:
ich wiederhole hier mal ein altes Statement von Christian Nennewitz, das
schon
mehreren geholfen hat ...
=============
Wahrscheinlich habt Ihr schon bemerkt, daß bei der Installation
von Access 2000 häufig die Hilfe nicht vollständig installiert
wird. Dies betrifft insbesondere die Hilfethemen zu DAO, ADO,
Jet-SQL und Jet- und Replikationsobjekte (MSJRO).
Dazu habe ich vor einiger Zeit mal gepostet, daß man folgende
Dateien von der Off/Acc2000-CD kopieren muss, um das Problem
in den Griff zu kriegen:
1.) DAO360.chm
nach: Programme\Gemeinsame Dateien\Microsoft Shared\DAO\
2.) ADO210.chm
nach: Programme\Gemeinsame Dateien\System\ADO\
3.) JETSQL40.chm (und evtl. falls vorhanden JETDES40.chm)
nach: Programme\Microsoft Office\Office\1031\
4.) MSJRO.chm
nach: Programme\Gemeinsame Dateien\System\ADO\
Mittlerweile habe ich festgestellt, daß das einfache Kopieren
dieser Dateien auf manchen Systemen nichts bringt (insbesondere
bei Windows XP).
Wenn dies der Fall ist, muss man im Registrierungseditor folgenden
Pfad überprüfen:
HKey_LocalMachine => Software => Microsoft => Windows => HTML-Help
Hier sollte man die 4 o.g. Dateien als Textschlüssel wiederfinden.
Wenn welche fehlen, kann man Sie mit 'Bearbeiten => Neu => Zeichenfolge'
hinzufügen. Dabei ist bei 'Name' der Name der chm-Datei einzutragen und
bei 'Wert' der Pfad in dem Ihr die jeweilige Datei abgelegt habt.
Danach sollten die Hilfethemen zur Verfügung stehen.
Viele Grüße,
Christian Nennewitz
===========================================
mfg
Klaus Oberdalhoff