Listenwerte aus eiener Datei laden

the_zero

Grünschnabel
hi, ich habe folgende einträge in einer textdatei

zahl|kommentar

1436583|Anfangswert
349|Umsatzsteuer
....

ich würde gerne jetzt jede zeile in 2 listen in vb laden, wobei in der einen liste die zahl steht in der anderen der kommentar.

wenn man z.b. auf de zahl klickt, dann wird auch das dazugehörige kommentar automatisch ausgewählt, wenn man auf einen kommentar klickt, dann wird automatisch die dazugehörige zahl ausgewählt und wenn man auf einen knopf klickt soll dann die zahl in ein textfeld übertragen werden.

bitte helft mir

danke
 
Einlesen und aufteilen:

Code:
Private Sub SplitInput(ByVal Delim as String, ByVal sFile as String)
 Dim FF
 Dim Buffer As String
 Dim SplitInfo() As String
 FF = FreeFile
 Open sFile For Input As #FF
  Do While Not EOF(FF)
   Line Input #FF, Buffer
   'Jetzt kommt die Split-Funktion zum Einsatz:
   SplitInfo = Split(Buffer, Delim)
   'In den einzelnen Elementen von SplitInfo steht jetzt immer ein Wert
   'und den packen wir in die Listboxen:
   List1.AddItem SplitInfo(0)
   List2.AddItem SplitInfo(1)
 Loop
Close #FF
End Sub

So, damit sollten alle Elemente eingelesen sein.
Da die entsprechenden Werte vom Index her die gleichen sind, kannst du es wie folgt machen, dass immer die richtigen Elemente markiert werden:

Code:
Private Sub List1_Click()
 List2.ListIndex = List1.ListIndex
End Sub

allerdings ist das keine schöne Lösung, da du hier keine Umstrukturierung der Listen vornehmen kannst. Eine andere habe ich leider momentan nicht parat.
Such bei ActiveVB.de in den Tipps oder Tutorials, da wirst du 100%ig fündig.

Ich würde dabei aber das ListView-Steuerelement nehmen!
Das musst du manuell hinzufügen -> Strg + T --> Microsoft Windows Common Controls 6 (glaub ich).
Das fügst du deinem Formular hinzu und gibst ihm folgende Eigenschaften:

Code:
View = 3 - lvwReport

Dann musst du noch die Spaltenköpfe hinzufügen (die dann List1 und List2 entsprechen):

Code:
Private Sub Form_Load()
 ListView1.ColumnHeaders.Add 1, , "List1"
 ListView1.ColumnHeaders.Add 2, , "List2"
End Sub

So, dann musst du leider noch die Prozedur oben anpassen:
(hier wurde gleich noch Code zum Fehlerabfangen eingefügt)
Code:
Private Sub SplitInput(ByVal Delim as String, ByVal sFile as String)
 Dim FF
 Dim Buffer As String
 Dim SplitInfo() As String
 FF = FreeFile
On Error Goto E404
 Open sFile For Input As #FF
  Do While Not EOF(FF)
   Line Input #FF, Buffer
   'Jetzt kommt die Split-Funktion zum Einsatz:
   On Error Goto ESplit
   SplitInfo = Split(Buffer, Delim)
   'In den einzelnen Elementen von SplitInfo steht jetzt immer ein Wert
   'und den packen wir in die Listboxen:
   ListView1.ListItems.Add , , SplitInfo(0)
   ListView1.ListItems(ListView1.ListItems.Count).SubItems(1) = SplitInfo(1)
 Loop
Close #FF

Exit Sub
E404:
 MsgBox "Datei '" & sFile & "' nicht gefunden!",vbCritical + vbOKOnly, "Fehler!"

ESplit:
 MsgBox "Trennzeichen ungültig!",vbCritical + vbOKOnly, "Fehler!"
End Sub

So, danach solltest du die einzelnen Einträge nebeneinander haben.
Um jetzt dein Problem mit der Textbox zu lösen:

Entweder (wenn das, was vorher in "List1" stand, in die Textbox zu schreiben):
Code:
Private Sub Command1_Click()
 Text1.Text = ListView1.SelectedItem.Text
End Sub

Oder, wenn du das, was in "List2" stand, in die Textbox schreiben willst:
Code:
Private Sub Command1_Click()
 Text1.Text = ListView1.SelectedItem.SubItems(1)
End Sub

Mal angenommen, du willst die Prozedur jetzt aufrufen, wenn ein Button (Command2) geklickt wurde:

Code:
Private Sub Command2_Click()
 'Der erste Parameter (hier "|") gibt an, wo die Einträge getrennt werden sollen.
 'Der zweite Parameter (hier App.Path & "\data.txt") gibt den Pfad zur Datei an.
 SplitInput("|", App.Path & "\data.txt")
End Sub

Denke mal, das sollte weiterhelfen, oder?

Greets - Schattenkanzler
 
Zuletzt bearbeitet:
1. danke für die rasche antwort, nur leider hat sie mir nicht so weitergeholfen, also ich habe das script kopiert und eingefügt aber es hat nicht funktioniert.

"argument ist nicht optional", oder so ne fehlermeldung.

das mit den listen hat auch nicht so funktioniert, aber egal, kann ja sein dass du dich im script irgenwo verschrieben hast, und ich leider zu ig bin um den fehler zu finden.

however ich habe mal die vb-dateien in ein zip gepackt, könnt's euch mal anschauen.
 

Anhänge

  • calc.zip
    12,8 KB · Aufrufe: 33
Zurück