Inleiding Is dit boek het juiste boek voor jou?



Dovnload 281.91 Kb.
Pagina4/8
Datum20.08.2016
Grootte281.91 Kb.
1   2   3   4   5   6   7   8

DataBindings instellen


De volgende stap is het verbinden van een tekstvak aan de juiste gegevens in de dataset.


  1. Klik op Textbox1.

  2. Klik in het scherm Properties op de 3 puntjes naast Databindings Advanced.

  3. Klik in de dropdown lijst op Other Data SourcesProject DataSourcesprofielkeuzesDataSet nawgegevensid.



Je kunt van een tekstvak heel veel instellen, maar wanneer je niets anders kiest, stel je in dit scherm in waar de tekst die in het vak komt vandaan moet komen. In het volgende scherm kun je ook zien dat de eigenschap text is ingesteld. In het vak Property is voor Text het database symbool verschenen.

De tekst van textbox1 is dus nu gekoppeld aan de inhoud van het veld id in de dataset profielkeuzesDataSet. Deze dataverbinding (databinding) heeft ook een naam gekregen: NawgegevensBindingSource - id. Je ziet deze onder Binding.
Je kunt in dit scherm ook nog instellen in welke vorm de inhoud van het tekstvak getoond moet worden, maar dat is nu niet nodig.
Je bent klaar voor om te testen of het eerste tekstvak vastzit aan de juiste gegevens.


  1. Klik op OK.

  2. Klik op de het Start driehoekje.

Het project start in een Windows scherm. In de eerste tekstbox verschijnt het id-nummer van het eerste record: 1. Het werkt!!!!




  1. Sluit je project.




  1. Verbind nu op dezelfde manier alle tekstvakken met de juiste velden.

Als je alles goed gedaan hebt, staat nu in elk tekstvak het juiste gegeven van het eerste record. Je ziet nu alle gegevens van het eerste record in de dataset. Als je je met het koppelen hebt vergist, zie je dat nu en kun je nog verbeteringen aanbrengen. Zoals je in hoofdstuk 1 hebt gezien kun je in plaats van zelf een tekstvak maken en verbinden aan het juiste veld in de juiste tabel in de dataset natuurlijk ook het veld van uit het scherm data sources op het form slepen. Maar zelf alles kunnen instellen biedt toch meer mogelijkheden.




  1. Controleer of het ook allemaal goed werkt.

  2. Sluit nu je project.

Bladeren in de dataset


Maar je bent natuurlijk niet tevreden met alleen maar de inhoud van het eerste record. Je wilt meer! Je wilt door de records kunnen bladeren en ze kunnen bewerken.


  1. Voeg knoppen en een label aan je interface toe, zodat die overeenkomt met de afbeelding hieronder.





  1. Noem de objecten van links naar rechts en van boven naar onder als volgt:
    btnEerste, btnVorige, lblRecords, btnVolgende, btnLaatste
    btnAnnuleer, btnAnnuleerAlle
    btnVoegToe, btnVerwijder
    btnOpslaan



Naar het volgende record bladeren


Wil je dat er iets gebeurt wanneer je op zo’n knop klikt, dan moet er code achter. Als eerste de code voor de knop btnVolgende.


  1. Dubbelklik op de Volgende knop (met het > teken).

  2. Type de volgende regel code in de subroutine btnVolgende_Click.

NawgegevensBindingSource.MoveNext()


De subroutine ziet er dan als volgt uit.
Private Sub btnVolgende_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVolgende.Click

NawgegevensBindingSource.MoveNext()

End Sub
Maar wat betekent die code dan precies?
Om een object zoals een tekstvak aan een dataset te binden gebruikt VB een BindingSource object. Zo’n BindingSource object heeft VB automatisch aangemaakt toen je de tekstvakken aan de dataset koppelde via Databinding. Het object heet NawGegevensBindingSource.
Een BindingSource object houdt van de dataset die hij aan de objecten koppelt een aantal zaken bij. Onder andere welk record het huidige, oftewel actieve, record van die dataset is.
De code
NawgegevensBindingSource.MoveNext()
geeft NawgegevensBindingSource opdracht om in de dataset naar het record met het volgend hogere nummer te gaan. Dus bij voorbeeld van record 1 naar record 2.
Tijd om te testen.


  1. Klik op het Start driehoekje.

  2. Klik op de Volgende knop.

Het tweede record in profielkeuzesDataSet verschijnt.




  1. Sluit je project.

Het nummer van het huidige record tonen


Natuurlijk is het wel handig om te weten welk record van de database je ziet. Daarom gebruik je een stukje code dat in lblRecords de tekst zo instelt dat het label het nummer van het huidige record laat zien, gevolgd door het aantal records in de dataset. Dus als je het tweede record van de 3 records in de dataset ziet, is dat 2 van 3.
Bij het opstarten van je project en telkens wanneer er een ander record het huidige record wordt, moet de tekst van lblRecords worden aangepast. Dus bij het laden van het form en na het klikken op elke navigatieknop. Het is niet handig om dezelfde code op meerdere plekken te gebruiken. Teveel code, teveel kans op fouten, en als je de code een keer wilt aanpassen, wil je dat niet op meerdere plaatsen moeten doen. In plaats daarvan maak je een subroutine die je vanuit de code bij elke navigatieknop aanroept. Deze subroutine noem je NawgegevensBindingSourcePositionChanged. De naam geeft, weliswaar in het Engels, precies aan wanneer deze subroutine moet worden aangeroepen; namelijk wanneer in NawgegevensBindingSource de waarde van de eigenschap position van de huidige record verandert.
De code is als volgt:
lblRecords.Text = (NawgegevensBindingSource.Position + 1).ToString & " van " & NawgegevensBindingSource.Count.ToString
Je vraagt je af wat dat betekent? Een stukje uitleg is hier wel op zijn plaats.
De eigenschap text van het object lblRecords wordt ingesteld. Dat doe je door 3 stukjes tekst aan elkaar te plakken met & en het resultaat toe te wijzen aan lblRecords.text.
Eerst haal je het nummer van het huidige record op. Dit wordt geleverd door NawgegevensBindingSource.Position. Computers tellen vanaf 0, dus als het huidige record het derde in de dataset is, heeft dat record nummer 2 (0,1,2). Daarom tel je er 1 bij op met + 1, omdat mensen nu eenmaal vanaf 1 tellen, en de gebruikers van je programma verwachten dat het derde record nummer 3 heeft, en niet 2. Tenslotte zet je met ToString dit getal 3 om naar de letter 3 omdat een label immers alleen tekst kan tonen, geen getallen. Dus:
(NawgegevensBindingSource.Position + 1).ToString
Dan wordt de tekst van, voorafgegaan en gevolgd door een spatie aan het voorafgaande geplakt. Dit gaat simpelweg met het & teken gevolgd door dubbele aanhalingstekens (begin van een string), dan een spatie, het woordje van, weer een spatie en weer dubbele aanhalingstekens om de string af te sluiten en weer het teken &. Dus:
& " van " &
NawgegevensBindingSource.Count geeft het aantal records in de BindingSource terug. Dit zet je met ToString om naar een string en plakt het met het plusteken aan wat je al had.
NawgegevensBindingSource.Count.ToString

Een subroutine maken


  1. Maak onder de subroutine btnVolgende_Click , maar vóór End Class, een nieuwe private subroutine NawgegevensBindingSourcePositionChanged().

  2. Type de code voor deze subroutine zoals hieronder.
    Let op! Type de hele code van de subroutine achter elkaar op 1 regel. Dus NIET zoals hieronder verdeeld over meerdere regels! Afhankelijk van de instellingen van VB 2008 op jouw computer wordt de code zichtbaar op 1 of meerdere regels.

Private Sub NawgegevensBindingSourcePositionChanged()

lblRecords.Text = (NawgegevensBindingSource.Position + 1).ToString & " van " & NawgegevensBindingSource.Count.ToString

End Sub
Nu de subroutine klaar is, kun je hem aanroepen vanuit andere subroutines in dit formulier. Om te beginnen de subroutine btnVolgende_Click.




  1. Voeg aan de code in de subroutine btnVolgende_Click de volgende regel toe:

NawgegevensBindingSourcePositionChanged()


De subroutine ziet er dan als volgt uit:
Private Sub btnVolgende_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVolgende.Click

NawgegevensBindingSource.MoveNext()

NawgegevensBindingSourcePositionChanged()

End Sub
Nu moet hetzelfde nog gebeuren bij de Form1_Load subroutine:




  1. Voeg de volgende tekst toe aan het eind van de Form1_Load subroutine:

NawgegevensBindingSourcePositionChanged()


De subroutine ziet er dan als volgt uit:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'TODO: This line of code loads data into the 'ProfielkeuzesDataSet.nawgegevens' table. You can move, or remove it, as needed.

Me.NawgegevensTableAdapter.Fill(Me.ProfielkeuzesDataSet.nawgegevens)

NawgegevensBindingSourcePositionChanged()

End Sub
Tijd om te testen of alles werkt.


  1. Start je programma.

Je ziet in lblRecords de tekst 1 van 3.




  1. Blader naar het volgende record door op de Volgende knop te klikken.

Je ziet in lblRecords de tekst 2 van 3. Succes !!!!




  1. Sluit je project.

Naar het vorige record bladeren


De resterende navigatieknoppen zijn nu niet meer moeilijk. Eerst de vorige knop.

Je gebruikt dezelfde code als bij de volgende knop, alleen wordt het nummer van het record nu niet met 1 verhoogd, maar met 1 verlaagd, oftewel je gaat naar het vorige record in de dataset.




  1. Dubbelklik op de Vorige knop om een subroutine voor het Click event aan te maken.

  2. Kopieer de code van de btnVolgende_Click subroutine naar de btnVorige_Click subroutine.

  3. Verander MoveNext() in MovePrevious().

Private Sub btnVorige_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVorige.Click

NawgegevensBindingSource.MovePrevious()

NawgegevensBindingSourcePositionChanged()

End Sub


  1. Testen maar!

Naar het eerste record bladeren


En dan nog de subroutines bij de Eerste en Laatste knoppen.
De code voor de subroutine bij de Eerste knop is als volgt:
NawgegevensBindingSource.MoveFirst()

NawgegevensBindingSourcePositionChanged()


Naar het laatste record bladeren


En de code van de Laatste knop is:
NawgegevensBindingSource.MoveLast()

NawgegevensBindingSourcePositionChanged()




  1. Maak de Click subroutines voor de Eerste en Laatste knoppen.

Private Sub btnEerste_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEerste.Click

NawgegevensBindingSource.MoveFirst()

NawgegevensBindingSource.Count.ToString()

End Sub

Private Sub btnLaatste_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLaatste.Click



NawgegevensBindingSource.MoveLast()

NawgegevensBindingSourcePositionChanged()

End Sub


  1. Test alle knoppen uit en verbeter waar nodig.

Voorkomen dat je buiten de dataset probeert te komen


De knoppen werken prima, maar toch ben je nog niet klaar. Want stel je voor dat het huidige record het eerste record is, en de gebruiker van je programma klikt op de knop Vorige. Dan zou de BindingSource nog 1 record terug moeten gaan, en dat is er niet. Om foutmeldingen te voorkomen moet je dus, voordat je in de dataset ergens naar toe beweegt controleren of je daar wel naar toe kunt.
Je gebruikt bij de Vorige knop een If – then constructie. Als het huidige record niet het eerste record is, dus als de positie hoger is dan nul, dan ga je een record terug.
If NawgegevensBindingSource.Position > 0 Then
De code in het btnVorige_Click event wordt dan:
Private Sub btnVorige_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVorige.Click

If NawgegevensBindingSource.Position > 0 Then

NawgegevensBindingSource.MovePrevious()

NawgegevensBindingSourcePositionChanged()

End If

End Sub
En ook bij de Volgende knop moet je zo’n controle inbouwen. Als de huidige positie kleiner is dan het aantal records min 1, dan ga je een record vooruit.


If NawgegevensBindingSource.Position < NawgegevensBindingSource.Count - 1 Then
Waarom min 1? Omdat position telt vanaf nul, dus bijvoorbeeld het derde record heeft positienummer 2 Count werkt anders; count geeft het aantal records weer. Dus bij 3 records is het count aantal 3. Om het nummer van het laatste record te krijgen moet het count aantal dus met 1 worden verlaagd. De code wordt:
Private Sub btnVolgende_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVolgende.Click

If NawgegevensBindingSource.Position < NawgegevensBindingSource.Count - 1 Then

NawgegevensBindingSource.MoveNext()

NawgegevensBindingSourcePositionChanged()

End If

End Sub



  1. Pas de code in de beide event handlers aan zoals hierboven staat afgebeeld.



1   2   3   4   5   6   7   8


De database wordt beschermd door het auteursrecht ©opleid.info 2017
stuur bericht

    Hoofdpagina