Gegevens uit tekstbestand lezen en op form zetten

Status
Niet open voor verdere reacties.

Jan92

Gebruiker
Lid geworden
17 feb 2010
Berichten
111
Dag allemaal,

Enkele dagen geleden heb ik de vraag gesteld "hoe je de ingevulde gegevens op een form weg kan schrijven naar een tekstbestandje"

Nogmaals foto toegevoegd voor de duidelijkheid.

Het antwoord hierop heb ik gekregen van SuperABC, waarvoor nogmaals mijn dank.

Ik heb nu een tweede form gemaakt die de opgeslagen gegevens moet weergeven

én er moet dus ook "gebladerd" kunnen worden, beginnende bij het eerste (record ?)

uit het tekstbestand. De logische vraag is dus nu :

Hoe lees ik de tekstregels in en plaats deze op de juiste locaties op het form ?

Het tekstbestand (C:\MijnFile.txt) ziet er als volgt uit :

Jantje Huppelpup;13-03-1991;Jongen;Bruin (elk element gescheiden met puntkomma)
Sophie Sanders;03-11-1991;Meisje;Grijs
Karel Pampers;21-12-1990;Jongen;Grijs
enz....

Ik heb gisteren gans de dag zitten zoeken en proberen maar geraak er niet uit !
 

Bijlagen

  • VB-Leren-5.jpg
    VB-Leren-5.jpg
    22 KB · Weergaven: 38
Dit lijkt redelijk te werken voor het bladeren moet je Integer X wijzigen en de code opnieuw uit laten voeren:
Code:
    Private TextFile As String
    Private x As Integer
    Private TextLines()

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TextFile = My.Computer.FileSystem.ReadAllText("G:\Overige\test.txt")

        TextLines = TextFile.Split(Environment.NewLine.ToCharArray, StringSplitOptions.None)
    End Sub

    Private Sub Show()
        Dim Information() As String = TextLines(x).Split(";")

        TextBox_Naam.Text = Information(0)
        TextBox_GeboorteDatum.Text = Information(1)

        If Information(2) = "Jongen" Then
            RadioButton_Jongen.Checked = True
            RadioButton_Meisje.Checked = False
        Else
            If Information(2) = "Meisje" Then
                RadioButton_Jongen.Checked = False
                RadioButton_Meisje.Checked = True
            End If
        End If

        ComboBox_OogKleur.Text = Information(3)
    End Sub
 
Hallo, SuperABC

Ik laat vandaag mijn "grijze massa" eventjes rusten (geen programeerwerk)
maar zal morgen de code zeker uitproberen.
Alvast bedankt voor reactie.
groetjes, Jan
 
@ SuperABC

Goedeavond,

Ik heb het uitgetest en het werkt uiteraard zoals het hoort. :thumb:

Het aangepaste Form (met de extra Buttons) kan je op de foto zien.

Ik begrijp echter niet "hoe" ik nu de waarde x moet aanpassen om het volgende

record (regel tekst) te lezen. Voor zover ik de code begrijp staat de x hier om het

aantal elementen uit één record te lezen. (elk gescheiden met punt-komma)

Dus zou er een tweede teller moeten komen om het aantal regels te lezen.

Of begrijp ik er niets van ? :(

groetjes, Jan
 

Bijlagen

  • VB-Leren-6.jpg
    VB-Leren-6.jpg
    54,6 KB · Weergaven: 41
X geeft het regel nummer aan, dus de personen.
Met zoiets ga je naar de volgende persoon:
Code:
X += 1
Show()
Eventueel met een If kijken of X wel een geldige waarde heeft.
 
En nog begrijp ik het niet :o

Dit is alle code van de Form (zie blauwe tekst)


Public Class Form24

'Dit is een TEST-form

Private TextFile As String
Private x As Integer
Private TextLines()

Private Sub Form24_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'De knop "Vorige"
x -= 1
Show()

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'De knop "Volgende"
x += 1
Show()

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'De knop "Bewaren"

Dim Info As String = TextBox1.Text & ";" & TextBox2.Text & ";" 'Naam & Geboortedatum

If RadioButton1.Checked Then
Info += "Jongen;"
End If

If RadioButton2.Checked Then
Info += "Meisje;"
End If

Info += ComboBox1.SelectedItem 'Kleur Ogen

'Regeleinde
Info += vbCrLf

My.Computer.FileSystem.WriteAllText("D:\VB-Testmap\Form24.csv", Info, True)

'Melden dat gegevens weggeschreven zijn
MsgBox("Gegevens zijn weggeschreven", 48, "Info")

End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
'De knop "Laden"

TextFile = My.Computer.FileSystem.ReadAllText("D:\VB-Testmap\Form24.csv")

TextLines = TextFile.Split(Environment.NewLine.ToCharArray, StringSplitOptions.None)

Dim Information() As String = TextLines(x).Split(";")

TextBox1.Text = Information(0) 'Naam & Voornaam
TextBox2.Text = Information(1) 'Geboortedatum

If Information(2) = "Jongen" Then
RadioButton1.Checked = True
RadioButton2.Checked = False
Else
If Information(2) = "Meisje" Then
RadioButton1.Checked = False
RadioButton2.Checked = True
End If
End If

ComboBox1.Text = Information(3) 'Kleur Ogen

End Sub

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
'De knop "Afsluiten"
Form1.Show()
Me.Close()
End Sub
End Class
 
Je mist de Sub Show().
Plaats dit in je code:
Code:
    Private Sub Show()
        Dim Information() As String = TextLines(x).Split(";")

        TextBox_Naam.Text = Information(0)
        TextBox_GeboorteDatum.Text = Information(1)

        If Information(2) = "Jongen" Then
            RadioButton_Jongen.Checked = True
            RadioButton_Meisje.Checked = False
        Else
            If Information(2) = "Meisje" Then
                RadioButton_Jongen.Checked = False
                RadioButton_Meisje.Checked = True
            End If
        End If

        ComboBox_OogKleur.Text = Information(3)
    End Sub
En verwijder het rode, vervang het rode eventueel ook door Show()
Code:
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
'De knop "Laden"

TextFile = My.Computer.FileSystem.ReadAllText("D:\VB-Testmap\Form24.csv")

TextLines = TextFile.Split(Environment.NewLine.ToCharArray, StringSplitOptions.None)

[COLOR="Red"]Dim Information() As String = TextLines(x).Split(";")

TextBox1.Text = Information(0) 'Naam & Voornaam
TextBox2.Text = Information(1) 'Geboortedatum

If Information(2) = "Jongen" Then
RadioButton1.Checked = True
RadioButton2.Checked = False
Else
If Information(2) = "Meisje" Then
RadioButton1.Checked = False
RadioButton2.Checked = True
End If
End If
ComboBox1.Text = Information(3) 'Kleur Ogen
[/COLOR]
End Sub
 
Beste SuperABC,

Ik heb de sub (onderaan) mijn code toegevoegt en de (rode) coderegels verwijderd.

Maar nu krijg ik een foutmelding tijdens het debuggen ? (zie foutmelding op foto)

Ik zal wel weer iets verkeerd gedaan hebben zeker :o
 

Bijlagen

  • Fout-Show().jpg
    Fout-Show().jpg
    55 KB · Weergaven: 41
Wijzig Show van mijn part in Weergeven of zet ervoor Overloads. Omdat Show al een standard onderdeel is van een form kun je zelf niet zomaar nog zo een sub maken.:thumb:
 
OK. Ik snap het (eindelijk) :)

Nu kan ik wel weer eventjes voorts.

Super, Super bedankt om zo behulpzaam te zijn. :thumb:

Tot genoegen, Jan
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan