Springen naar inhoud


- - - - -
VS 2015

Public Werkt Niet

VS2015

  • Log in a.u.b. om te beantwoorden
Er zijn 6 reacties in dit onderwerp

#1 Wimke118

Wimke118

    Starting Developer

  • Leden
  • 7 berichten
    Laatst bezocht 21 apr 2020 10:31

Geplaatst op 26 januari 2020 - 19:00

Hallo,

Na 20 jaar geleden veel met VB bezig te zijn geweest heb ik het nu weer opgepakt. Helaas heb ik moeten constateren dat vb.net toch wel heel iets anders is...Enfin ik ben nu bezig met een project en kom er niet uit. Ook niet na een hele dag puzzelen. Vandaar dat ik de vraag hier stel, in de hoop dat ik weer verder kan.
Ik heb een project dat bestaat uit 3 formulieren. In het eerste formulier wordt via een datagridview een access-database getoond. Via een knop op dat formulier kan men naar een tweede formulier waarop men kan aangeven op welke term men in die database kan zoeken. Als dat ingegeven is dan kan men naar een derde formulier waar getoond wordt wat in de database met die term gevonden is.
De zoekterm op het tweede formulier wordt vastgelegd in een variabele, die ik als Public heb gedeclareerd (net onder Public Class). Ik lees overal dat de (inhoud van die) variabele dan meegenomen kan worden naar andere delen van het project. Dus ook naar formulier 3. Toch krijg ik steevast de melding dat die variable in formulier 3 niet gedeclareerd is... Wat doe ik fout??

Wim

#2 Supervos

Supervos

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1409 berichten
    Laatst bezocht 30 mei 2020 20:39
  • LocatieBrugge

Geplaatst op 26 januari 2020 - 20:03

Dag Wim,

Heb je een deel voorbeeldcode?

Een voorbeeld waarin je deze melding zou krijgen is het volgende:

formulier met zoekveld:
Visual Basic Code:
Public Class Form2
  Inherits Form

  Public ReadOnly Property ZoekTerm As String
	Get
	  Return txtZoekVeld.Text
	End Get
  End Property

  Public Sub btnZoek_Click(sender As Object, e As EventArgs) Handles btnZoek.Click
	Dim resultaat = New Form3(Me)
	resultaat.Show()
  End Sub
End Class

Formulier met fout:
Visual Basic Code:
Public Class Form3
  Inherits Form

  Public Sub New(form2 As Form)
	Dim zoekenNaar = form2.ZoekTerm ' de variabele ZoekTerm wordt niet gevonden
  End Sub
End Class

==> Omdat Form3 denkt dat de variabele van het type Form is en niet Form2 zal de property `ZoekTerm` niet gevonden worden. Als je het type wijzigt naar `Form2` zal het wel werken.

Hiermee moet je weten dat je een instantie van de klasse moet meegeven. Het is mogelijk dat je meerdere keren een venster van het type `Form2` hebt open staan, `Form3` moet dus weten van welk venster deze exact de zoekterm moet worden gebruikt.

#3 Wimke118

Wimke118

    Starting Developer

  • Leden
  • 7 berichten
    Laatst bezocht 21 apr 2020 10:31

Geplaatst op 26 januari 2020 - 20:52

Hoi Guru(?),

Dank voor je snelle reactie. Dat 'inherent' snap ik nog niet, maar dat ga ik opzoeken. Misschien dat dat mijn fout is, dat ik nog teveel in visual basic 6 termen denk.

De code van formulier 2 bij mij is:

Public Class frmZoekcriteria
    Public criterium As String
    Public gebdatum As Date
    Public Tekst As String




    Private Sub btnNuZoeken_Click(sender As Object, e As EventArgs) Handles btnNuZoeken.Click

        
            If Textbox1.Text <> "" Then
                criterium = Textbox1.Text
            End If
        MessageBox.Show("Geen zoekcriterium opgegeven")

        FrmZoekresultaten.Show()

    End Sub


End Clas

Daarna gaat het in formulier 3 verder met het zoekcriterium. Het is de bedoeling dat formulier 2 wordt uitgebreid (bij de if loop) maar dan moet het eerst werken.

#4 Damic

Damic

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 715 berichten
    Laatst bezocht gisteren, 20:49
  • LocatieMechelen (BE)

Geplaatst op 27 januari 2020 - 07:35

Volgens mij doet je code ook niet wat je wilt dat je code doet ;)
Visual Basic Code:
Private Sub btnNuZoeken_Click(sender As Object, e As EventArgs) Handles btnNuZoeken.Click
			If Textbox1.Text = "" Then
		MessageBox.Show("Geen zoekcriterium opgegeven")
exit sub
			End If
				criterium = Textbox1.Text

		FrmZoekresultaten.Show()
	End Sub

Als je een variable van een ander form wilt gebruiken moet je ook opgeven van welk form, dus in frmzoekresultaten moet je ergens frmzoekcriteria.criterium hebben staan, alleen variabelen in modules kun je direct aanspreken.

#5 Wimke118

Wimke118

    Starting Developer

  • Leden
  • 7 berichten
    Laatst bezocht 21 apr 2020 10:31

Geplaatst op 27 januari 2020 - 12:20

Wederom ontzettend bedankt voor de reactie! De variabele geeft nu inderdaad geen foutmelding meer! Het enige dat nu weer niet goed gaat is 'FrmZoekresultaten.Show()'. Om onduidelijke redenen geeft dat nu de foutmelding:

Error BC30469 Reference to a non-shared member requires an object reference. Personendbase D:\Data\VB\Personendbase\Personendbase\FrmZoekcriteria.vb 18 Active


De code is:

Public Class frmZoekcriteria

    Public criterium As String
    Public gebdatum As Date
    Public Tekst As String




    Private Sub btnNuZoeken_Click(sender As Object, e As EventArgs) Handles btnNuZoeken.Click

        If Textbox1.Text = "" Then
            MessageBox.Show("Geen zoekcriterium opgegeven")
            Exit Sub
        End If
        criterium = Textbox1.Text

        FrmZoekresultaten.Show()


    End Sub


End Class

#6 Wimke118

Wimke118

    Starting Developer

  • Leden
  • 7 berichten
    Laatst bezocht 21 apr 2020 10:31

Geplaatst op 27 januari 2020 - 12:38

OPGELOST! (bleek ergens anders een foutje te staan....)

Ontzettend bedankt!!!!

#7 Damic

Damic

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 715 berichten
    Laatst bezocht gisteren, 20:49
  • LocatieMechelen (BE)

Geplaatst op 31 januari 2020 - 09:26

Ja je moet wel oppassen als je data deelt :) je kunt nl zeer gemakkelijk memory leaks creëren.





Ook met taq VS 2015, VS2015 voorzien

0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


[VS 2015] Untitled 1

Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)