[visual basic] form moet een waarde retourneren

Pagina: 1
Acties:
  • 405 views sinds 30-01-2008
  • Reageer

  • Boy
  • Registratie: November 2001
  • Laatst online: 25-08 15:13

Boy

www.byoscoop.nl

Topicstarter
Het zal wel heel simpel zijn wat ik wil, maar ik vind het nergens.

ik wil dus dat een scherm een waarde retourneerd. Deze waarde zit bijvoorbeeld in een textbox.

Ik zou het liefst een soort messagebox willen gebruiken wat dit teruggeeft, maar dat gaat denk ik niet.

Ik heb nu een form gemaakt met een textbox en een ok button (dit heb ik gemaakt in Access) en ik maak deze open in een functie door het commando DoCmd.OpenForm hetform

de waarde moet ik dus in een variabele krijgen in de functie die dit form opent. Ik zit hier nu dus al een tijdje te klooien hieraan. Ik ben dus een n00b op het gebied van basic. ken alleen c++...

Naar de bioscoop? => gebruik de app op Byoscoop.nl


Verwijderd

Wat voor waarde is het en waar moet het precies in komen te staan? Kun je een stukje code posten?

Verwijderd

om een waarde in het geheugen te zetten gebruik je DIM
je zou dus DIM bewaar as string kunnen doen
vervolgens kan je met bewaar = tekstbox1 de waarde uit de tekstbox uitlezen
vervolgens kan je d.m.v. msgbox bewaar de waarde als message box weergeven

  • Boy
  • Registratie: November 2001
  • Laatst online: 25-08 15:13

Boy

www.byoscoop.nl

Topicstarter
hier wat code:

code:
1
2
3
4
Dim DocName As String

DocName = "Frm_Enter_Revision"
DoCmd.OpenForm DocName


dan opent ie ut form welke een textbox en een button bevat. Wanneer op de button gedrukt wordt moet ie dus de waarde teruggeven die de textbox bevat. Kan je aan zo'n form een reference meegeven zodat ik, wanneer op OK gedrukt wordt, de waarde in deze kan zetten?

Er wordt dus een vraag gesteld, namelijk: wat moet het nieuwe revisie nr worden? Dit wil ik doen door middel van een pop up. Is hier een makkelijkere manier voor?

In C++ maak je dus gewoon een functie en zeg je 'return waarde'

[ Voor 28% gewijzigd door Boy op 16-01-2003 12:29 ]

Naar de bioscoop? => gebruik de app op Byoscoop.nl


  • cvs79
  • Registratie: April 2002
  • Laatst online: 09:19
'=================
' Populate
' Populate the Logon screen
'=================
Public Function Populate(ByRef r_Waarde As Long) As Boolean

InitializeForm

' Initialize the form
Me.Show vbModal

If m_OKClicked Then
r_Waarde =Retour Waarde
End If
Populate = m_OKClicked
End Function

  • Bbfreak
  • Registratie: September 2002
  • Laatst online: 23-06 13:45
Ik begrijp het nog niet helemaal moet ik zeggen.
Bedoel je zoiets:

[vb]
Dim txt As String

txt = TextBox1.Text

MsgBox txt
[/vb]

Dan print hij de txt in het textveld op een messagebox.

Twitter @cmeerbeek / Halo Waypoint Profile


  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
probeer eens te doen : msgbox(textbox.value)

Verwijderd

De MsgBox functie heeft iets meer nodig dan alleen de naam van een variabele. Ik begrijp dat het gemaakt wordt met VBA in Access. Zoek in de help op MsgBox en je krijgt een keurig voorbeeldje hoe je een MessageBox aan de praat krijgt. Verder moet het wel werken zoals het hier boven staat.

  • Boy
  • Registratie: November 2001
  • Laatst online: 25-08 15:13

Boy

www.byoscoop.nl

Topicstarter
Het programma wijzigd records in een tabel. Dit gebeurt automatisch.

Wanneer een record gewijzigd wordt, moet de gebruiker een veld zelf invullen, namelijk 'revision'. Op het moment dat een record gewijzigd wordt, moet een popup komen zodat de gebruiker de waarde voor dit veld zelf kan invullen in een textbox en dan op ok klikt. Dan wordt dit veld met die waarde gevuld.

Sorry als ik wat onduidelijk ben. Op een of andere manier krijg ik het niet zo makkelijk uitgelegd.

Er moet dus geen messagebox verschijnen met de waarde...maar deze waarde moet in een recordset gezet worden.

[ Voor 14% gewijzigd door Boy op 16-01-2003 12:38 ]

Naar de bioscoop? => gebruik de app op Byoscoop.nl


Verwijderd

Ik snap eigelijk helemaal niet wat je bedoeld maar hier messchien heb je hier iets aan :

'//Onder het knopje moet je dit programmeren.

'//Een variable maken
Dim blaat as string

'//De inhoud van de textbox in variable zetten
blaat = text1.text

'//De Inhoud in een msgbox zetten
msgbox blaat,vbOKOnly,"Dit is een MsgBox"

'//Dit veranderd de text in de textbox
Text3.text = blaat & " is gek"

Hopelijke kun je hierwat mee.
Anders moet je het een beetje beter uitleggen

  • Boy
  • Registratie: November 2001
  • Laatst online: 25-08 15:13

Boy

www.byoscoop.nl

Topicstarter
Ik probeer er zelf nog wel uit te komen, want wat ik hier vraag kan volgens mij niet. Je kan niet een form openen en dan een waarde laten retourneren bij het sluiten, behalve dan door een globale variabele te gebruiken bedenk ik net. Is niet zo mooi, maar voor nu is het wel even te doen.

bedankt voor de reacties

Nog een vraagje: de functie die het form opent, die gaat gewoon verder als het form openstaat, kan ik die niet laten wachten totdat het form gesloten wordt? Dan is de waarde namelijk pas bepaald...

[ Voor 25% gewijzigd door Boy op 16-01-2003 12:48 ]

Naar de bioscoop? => gebruik de app op Byoscoop.nl


  • rockerd
  • Registratie: Juni 2001
  • Laatst online: 13-09-2024
Dan moet je hem "modal" openen

En idd gewoon een globale variabele declareren in een module. Dan is het toch opgelost.

"When water flows into a bottle, it becomes the bottle"


  • Boy
  • Registratie: November 2001
  • Laatst online: 25-08 15:13

Boy

www.byoscoop.nl

Topicstarter
code:
1
Form_Frm_Enter_Revision.Modal


wat raar, dit werkt dan niet. Dan krijg ik een 'invalid use of property'...

Naar de bioscoop? => gebruik de app op Byoscoop.nl


  • Mir
  • Registratie: Maart 2001
  • Niet online

Mir

code:
1
Form_Frm_Enter_Revision.Show vbModal

[ Voor 7% gewijzigd door Mir op 16-01-2003 13:05 ]


  • Boy
  • Registratie: November 2001
  • Laatst online: 25-08 15:13

Boy

www.byoscoop.nl

Topicstarter
Mir schreef op 16 January 2003 @ 13:04:
code:
1
Form_Frm_Enter_Revision.Show vbModal
dan krijg ik 'method or data member not found'

Naar de bioscoop? => gebruik de app op Byoscoop.nl


  • Mir
  • Registratie: Maart 2001
  • Niet online

Mir

Heb je hem dan wel als een normale form gemaakt?

  • Boy
  • Registratie: November 2001
  • Laatst online: 25-08 15:13

Boy

www.byoscoop.nl

Topicstarter
wat ik gedaan heb, is via ms Access een form gemaakt via 'create form in design view' en daar textbox en button op gezet.

Via een ander form heb ik op een button gerechterklikt en dan 'built event' gedaan. Dan krijg ik de code te zien en daar programmeer ik dan onder.

Ik zit dus in een programma te werken dat ik niet zelf geschreven btw.

Naar de bioscoop? => gebruik de app op Byoscoop.nl


Verwijderd

Wanneer je het pop-up formulier opent vanuit het aanroepende formulier, heb je hier de controle over totdat dit wordt gesloten. Wat je kunt doen is in plaats van de OK knop te gebruiken om te sluiten, deze gebruiken om het formulier invisible te maken, waardoor de controle weer wordt doorgegeven aan het aanroepende formulier.

Dit aanroepende formulier, die tijdens het open staan van het popup formulier wacht middels de doEvents functie, krijgt na het invisible maken van het popup formulier hier de controle over, zodat hij de variabelen hiervan kan uitlezen en aan velden op zijn eigen formulier kan toekennen.

Hierna kan het aanroepende formulier het pop-up formulier, dat nog steeds invisible is, sluiten.

Ik zal de code wel ffies opzoeken voor je!

[ Voor 4% gewijzigd door Verwijderd op 16-01-2003 13:12 ]


Verwijderd

Hier beneden de code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Function showPopUp(ByVal str As String) As String
    Dim Frm As Form_frmPopUpFormulier
    Dim str As String

    Set Frm = New Form_frmPopUpFormulier
    
    Frm!Tekstvak1 = str
    Frm.Modal = True
    Frm.Visible = True
    
    Do While Frm.Visible = True
        DoEvents
    Loop
    If Frm.fCancel Then
        showPopUp = str
    Else
        showPopUp = Frm!Tekstvak1
    End If
End Function


De functie showPopUp opent het formulier frmPopUpFormulier, waarop zich een tekstvak bevindt, genaamd Tekstvak1. Deze waarde is initieel de parameter van deze functie. Op het formulier bevinden zich bovendien een OK en een CANCEL knop. Wanneer op cancel wordt gedrukt, retourneert de functie de oude waarde, indien op OK wordt gedrukt, retourneert de functie de nieuwe waarde.

In jou geval zorgt Me.Tekstvak2 = frmPopUpFormulier(Me.Tekstvak2) ervoor dat ofwel de oude, ofwel de nieuwe waarde in het betreffende tekstvak wordt ingevoegd.

  • whoami
  • Registratie: December 2000
  • Laatst online: 12:58
Je wilt dus vanaf een bepaalde form, de waarde op die andere form gaan uitlezen?

Misschien heb je hier iets aan, 't is dan wel VB.NEt:
[rml][ VB.NET] waardes van een andere form?[/rml]

Die oplossing mbhv die delegates die ik erin voorstel, zal dus niet zo werken in VB. Ik weet trouwens niet of je in VB een soortgelijk mechanisme kunt implementeren.

https://fgheysels.github.io/


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 24-08 19:16

Gerco

Professional Newbie

In VB gebruik je daarvoor gewoon InputBox, als die functie ook in VBA bestaat is je hele probleem opgelost. Alleen is 'ie wat minder customizable dan een eigen form, maar het werkt en nog erg makkelijk ook.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • Boy
  • Registratie: November 2001
  • Laatst online: 25-08 15:13

Boy

www.byoscoop.nl

Topicstarter
Gerco schreef op 16 januari 2003 @ 13:35:
In VB gebruik je daarvoor gewoon InputBox, als die functie ook in VBA bestaat is je hele probleem opgelost. Alleen is 'ie wat minder customizable dan een eigen form, maar het werkt en nog erg makkelijk ook.
Helemaal geweldig! Dit is precies wat ik zocht. Dank je wel!

Iedereen bedankt voor de reacties.

s991051: bedankt voor het zoeken van de code, maar inputbox werkt zo te zien goed. Ik zal die code van jou btw toch es uitproberen. Die kan ik dan customizen en beter uit laten zien dan inputbox denk ik. Maar voor nu gebruik ik effe die inputbox.

_/-\o_

Naar de bioscoop? => gebruik de app op Byoscoop.nl

Pagina: 1