[VB.Net] Waarden uit collection halen en in textbox plaatsen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik heb voor school een programmeeropdracht gekregen waarbij ik een eenvoudig programmaatje moet schrijven voor een fictief reisbureau. Het moet mogelijk zijn om gegevens te boeken, ze te raadplegen, wijzigen en verwijderen. Het toevoegen en verwijderen lukt al aardig, maar ik zit met een probleem bij het wijzigen en raadplegen van mijn gegevens.

Wanneer een verblijf geboekt wordt, wordt het aantal maaltijden, samen met zijn prijs en de soort opgeslagen in een arraylist. Aan de arraylist wordt dus een maaltijd toegevoegd. Ik moet van deze maaltijd echter de prijs, het aantal en de soort kunnen weergeven in een tekstvak, maar ik weet niet hoe ik deze gegevens kan aanspreken.

Om alles even duidelijk te maken:

Een screenshot van het formulier:
Afbeeldingslocatie: http://tsjoetsjoep.com/Uploads/Ruzzel/Screenshot.png

Wanneer ik een ander item selecteer in de listbox worden alle gegevens mooi aangepast, maar ik weet niet hoe ik dit moet doen voor de maaltijden. Er moet namelijk eerst gecontroleerd worden van welke soort dit is, om nadien te kunnen bepalen wat de prijs en het aantal is...

Het projectje is hier te vinden: *snip*

[ Voor 2% gewijzigd door Woy op 29-11-2009 21:27 ]


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 16-09 15:42

Sebazzz

3dp

Het is niet zomaar de bedoeling dat we op deze manier je problemen oplossen. Zie ook PRG Beleid

Daarnaast, waarom gebruik je een weak-typed ArrayList in plaats van een strong-type List<T>?

[ Voor 10% gewijzigd door Sebazzz op 29-11-2009 20:19 ]

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • HawVer
  • Registratie: Februari 2002
  • Laatst online: 13-09 16:51
Ok, wat verwacht je nu precies? Je kunt je natuurlijk eerst gaan verdiepen in de databinding techniek in .NET. Daarmee moet je al 90% van al je problemen op kunnen lossen. Eventueel kun je ook alles vanuit de code doen maar dat gaan we hier niet helemaal uitkauwen.

http://hawvie.deviantart.com/


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Sebazzz schreef op zondag 29 november 2009 @ 20:18:
Het is niet zomaar de bedoeling dat we op deze manier je problemen oplossen. Zie ook PRG Beleid

Daarnaast, waarom gebruik je een weak-typed ArrayList in plaats van een strong-type List<T>?
Ik ben nog maar een eenvoudig studentje, en we hebben enkel nog maar leren werken met arrays, arraylists en collections.
HawVer schreef op zondag 29 november 2009 @ 20:20:
Ok, wat verwacht je nu precies? Je kunt je natuurlijk eerst gaan verdiepen in de databinding techniek in .NET. Daarmee moet je al 90% van al je problemen op kunnen lossen. Eventueel kun je ook alles vanuit de code doen maar dat gaan we hier niet helemaal uitkauwen.
Het moet allemaal gedaan worden via klasses, anders zou ik het via een databankje doen, maar dit mag helaas niet. Ik weet niet als iemand al eens in mijn code gekeken heeft, dit brengt misschien wat duidelijkheid.
Ik heb ondertussen ook de officiële opdracht ge-upload: *snip*

[ Voor 3% gewijzigd door Woy op 29-11-2009 21:28 ]


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Het is hier niet de bedoeling dat we jouw project gaan lopen debuggen. Het is dus niet de bedoeling dat je je complete project en opdracht hier neer zet.

Je geeft ook totaal niet aan wat je allemaal geprobeert hebt en wat daar niet aan wilde lukken. Op deze manier voldoet je topic ieder geval niet aan de richtlijnen. Geef dus wat meer informatie over wat je geprobeert hebt en wat er niet wilde lukken. Licht dat eventueel wat toe met relevante stukken code.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:16
Verwijderd schreef op zondag 29 november 2009 @ 20:27:


Het moet allemaal gedaan worden via klasses, anders zou ik het via een databankje doen, maar dit mag helaas niet. Ik weet niet als iemand al eens in mijn code gekeken heeft, dit brengt misschien wat duidelijkheid.
Ik heb ondertussen ook de officiële opdracht ge-upload: [mbr]*snip*[/]
Eh, als je het mbhv een DB kan doen, kan je dit toch ook wel ?
Replace DB met in-memory collecties (ala List<T>, etc... ) en je bent er toch ook ? 't Enige verschil is dat je de gegevens niet uit een database moet halen, maar gewoon in het geheugen moet stockeren ....

[ Voor 9% gewijzigd door whoami op 29-11-2009 23:56 ]

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • HawVer
  • Registratie: Februari 2002
  • Laatst online: 13-09 16:51
Voor de databinding kun je BindingList<T> gebruiken.

http://hawvie.deviantart.com/


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
whoami schreef op zondag 29 november 2009 @ 23:56:
[...]

Eh, als je het mbhv een DB kan doen, kan je dit toch ook wel ?
Replace DB met in-memory collecties (ala List<T>, etc... ) en je bent er toch ook ? 't Enige verschil is dat je de gegevens niet uit een database moet halen, maar gewoon in het geheugen moet stockeren ....
We mogen simpelweg niet werken met een databank. Alles moet via klasses gebeuren.

Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Verwijderd schreef op maandag 30 november 2009 @ 17:41:
[...]


We mogen simpelweg niet werken met een databank. Alles moet via klasses gebeuren.
Dat is het punt niet. Ook, of zelfs juist, als je in het geheugen werkt, kun je gewoon dingen als List<type> gebruiken ipv ArrayList wat je nu gebruikt.

Verder is een ListBox hier niet de juiste control, want dit is tabulaire data. Iets als een DataGridView is hier voor gemaakt, je hoeft alleen maar de DataSource goed te zetten... :) Als je ook nog een tabelletje voor maaltijden wil hebben, in een soort master/detail situatie, dan kun je prima nog een grid plaatsen.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb 2 versies van het programma. Een eerste versie is een programma waarbij alle functionaliteiten werken. Het enige probleem is dat ik mijn maaltijden hier nog niet mee geïmplementeerd heb.

Programma met 1 klasse

Wat werkt er?
  • Toevoegen
  • Raadplegen
  • Verwijderen
Wat werkt er niet?
  • Er wordt nog niets gedaan met de maaltijden. Deze zijn wel van belang bij het berekenen van mijn totaalprijs.

Programma met 2 klasses

Wat werkt er?
  • Toevoegen
  • Raadplegen, al weet ik niet hoe ik de gegevens van de maaltijden in een jusit tekstvak moet zetten. Ik probeerde die arraylist in een messagebox weer te geven, maar wanneer ik het programma runde gebeurde er niets ( ook geen error )
Wat werkt er niet?
  • Het toevoegen van de gegevens lukt volgens mij wel, alleen snap ik niet hoe ik de gegevens in de juiste vakken kan laten zien.
  • Het verwijderen van de gegevens werkt nu ook niet meer.
    Visual Basic:
    1
    
    Return CType(mArrMaaltijden(index), Maaltijd)

    Op deze regel code krijg ik nu volgende fout:

    Argument OutOfRangeException
    De index valt buiten het bereik. Deze mag niet negatief zijn en moet kleiner zijn dan de grootte van de verzameling. Parameternaam: index

    Deze regel code komt uit mijn property maaltijden die in mijn klasse "Verblijf staat:

    Visual Basic:
    1
    2
    3
    4
    5
    6
    7
    8
    
    Public Property maaltijden(ByVal index As Integer) As Maaltijd
            Get
                Return CType(mArrMaaltijden(index), Maaltijd)
            End Get
            Set(ByVal value As Maaltijd)
                mArrMaaltijden(index) = value
            End Set
        End Property
Ik hoop dat ik hiermee wat meer duidelijkheid schep in mijn probleem.
pedorus schreef op maandag 30 november 2009 @ 17:49:
[...]

Dat is het punt niet. Ook, of zelfs juist, als je in het geheugen werkt, kun je gewoon dingen als List<type> gebruiken ipv ArrayList wat je nu gebruikt.

Verder is een ListBox hier niet de juiste control, want dit is tabulaire data. Iets als een DataGridView is hier voor gemaakt, je hoeft alleen maar de DataSource goed te zetten... :) Als je ook nog een tabelletje voor maaltijden wil hebben, in een soort master/detail situatie, dan kun je prima nog een grid plaatsen.
Een DataGridView mag ik ook nog niet gebruiken. Het moet eigenlijk echt allemaal heel basic, ik weet dat je deze opgave inderdaad op een vele simpelere manier kan doen, maar dit mag helaas niet ....

[ Voor 18% gewijzigd door Verwijderd op 30-11-2009 18:20 ]


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Wat is er dan niet duidelijk aan de foutmelding
Argument OutOfRangeException De index valt buiten het bereik. Deze mag niet negatief zijn en moet kleiner zijn dan de grootte van de verzameling
:?

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:16
Verwijderd schreef op maandag 30 november 2009 @ 17:41:
[...]


We mogen simpelweg niet werken met een databank. Alles moet via klasses gebeuren.
Wel, wat is het probleem dan ?
Als je werkt met een databank, heb je gewoon nog een extra stukje complexiteit. Als je werkt met een DB ga je toch de gegevens uit je DB halen, en die ook gaan 'vertalen' in de juiste classes ?
Ik zie het probleem dan niet, nu kan je rechtstreeks je gegevens mbhv classes voorstellen, zonder dat je die vertaalslag (relationeel model -> OO model) moet maken.

Over je foutmelding: weet dat indexes van arrays / collecties, etc.... bij 0 beginnen, en niet bij 1. Je laatste element in de collectie zit dus op 'aantal elementen - 1'.

Trouwens, waarom maak je geeen gebruik van de generieke collecties (zoals List<T> bv) ? Dan hoef je die casts allemaal niet meer te doen.

[ Voor 20% gewijzigd door whoami op 30-11-2009 18:41 ]

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Woy schreef op maandag 30 november 2009 @ 18:36:
Wat is er dan niet duidelijk aan de foutmelding

[...]

:?
whoami schreef op maandag 30 november 2009 @ 18:40:
[...]

Over je foutmelding: weet dat indexes van arrays / collecties, etc.... bij 0 beginnen, en niet bij 1. Je laatste element in de collectie zit dus op 'aantal elementen - 1'.

Trouwens, waarom maak je geeen gebruik van de generieke collecties (zoals List<T> bv) ? Dan hoef je die casts allemaal niet meer te doen.
Ik weet maar al te goed dat de indexes van een array / collectie begint bij 0. Ik haal de maaltijd weg uit mijn arraylist waardoor er niets meer in zit, maar dan krijg ik die foutmelding op mijn propery. Hoe los ik dit het beste op?

Het is ambetant (maar logisch) dat de foutmelding komt bij de get-methode.
Wanneer dit bij de set was, was dit veel gemakkelijker op te lossen.

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:16
:?
Ik snap je probleem niet hoor ... Als je in je 'get' een index binnenkrijgt die ongeldig is, dan gooi je toch gewoon een exceptie dan ? Wat zou je dan willen oplossen ? Als er op 'index 4' niets zit, dan gooi je een exceptie, of return je null bv ....

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Het probleem is dus inderdaad dat je een index opvraagt die niet bestaat. Oplossing: Zorgen dat je die niet opvraagt door van te voren te bepalen hoeveel er wel in zitten.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1