Knop met DoCmd.Openform

Status
Niet open voor verdere reacties.

Twanno5483

Gebruiker
Lid geworden
1 mrt 2009
Berichten
74
Hoi allemaal,

Ik heb een knopje gemaakt op mijn Formulier, die aan de hand van een waarde in een keuzelijst een record in een andere formulier opent.
Ik heb dit als code in VBA ingevoerd voor die knop.
De knop is PCgegevens.
---------------------------------------------------------------------------------------------------------------------------
Code:
Private Sub PCgegevens_Click()

    If Not IsNull(Me.Select_computernaam) Then DoCmd.OpenForm "F_PCgegevens", , , "PC_Computernaam=" & Me.Select_computernaam
    
    

Exit_voorraad_Click:
    Exit Sub

Err_voorraad_Click:
    MsgBox Err.Description
    Resume Exit_voorraad_Click
    
End Sub
-----------------------------------------------------------------------------------------------------------------------------
Ik heb dit uit een of ander voorbeelddatabase gehaald waar dit wel werkt. Maar om een of andere reden blijft hij bij mij om een parameterwaarde vragen.
Zodra ik de waarde invoer wat ik al in mijn keuzelijst heb staan, krijg ik wel mijn gewenste record in het gewenste formulier.
Wat mis ik hier......

Vriendelijk bedankt.
Twan
 
Laatst bewerkt door een moderator:
Je begint een If statement zonder deze af te sluiten.


Code:
Private Sub PCgegevens_Click()

If Not IsNull(Me.Select_computernaam) Then DoCmd.OpenForm "F_PCgegevens", , , "PC_Computernaam=" & Me.Select_computernaam

End if

Exit_voorraad_Click:
Exit Sub

Err_voorraad_Click:
MsgBox Err.Description
Resume Exit_voorraad_Click

End Sub
 
Je kunt een If maken zonder End IF, zolang de code op één regel blijft, dus daar zit denk ik het probleem niet. Als je de formule aanpast naar een If ... Then ... End if variant, dan moet je ook de vergelijking naar een nieuwe regel plaatsen:

Code:
If Not IsNull(Me.Select_computernaam) Then
     DoCmd.OpenForm "F_PCgegevens", , , "PC_Computernaam=" & Me.Select_computernaam
End if

Ik zou eerder kijken naar de instellingen van je keuzelijst; je kunt bijvoorbeeld twee velden gebruiken als bron voor de keuzelijst, een ID-veld en een tekstveld met de omschrijving. Als je de kolombreedte van het eerste veld op 0 (nul) hebben staan, zie je (meestal ook wenselijk) de tekstomschrijving in de keuzelijst, en niet het ID-veld. In de keuzelijst wordt echter wèl de sleutelwaarde opgeslagen.

Check dus eerst met een msgbox wat er uit de keuzelijst komt; deze waarde moet uiteraard overeenkomen met wat je in PC_Computernaam nodig hebt.

Michel
 
Dit werkt, maar ik krijg nog steeds een schermpje "parameter opgeven"
en daaronder staat dan de tekst van de computernaam die ik geselecteerd heb in mijn keuzelijst.

Mijn VB script ziet er nu zo uit.
Code:
Private Sub PCgegevens_Click()

    If Not IsNull(Me.Select_computernaam) Then
        DoCmd.OpenForm "F_PCgegevens", , , "PC_Computernaam=" & Me.Select_computernaam
    End If

Exit_PCgegevens_Click:
    Exit Sub

Err_PCgegevens_Click:
    MsgBox Err.Description
    Resume Exit_PCgegevens_Click
    
End Sub
------------------------------------------------------------------------------------------------------------------
kan het ook in de query zitten?
Ik heb een query gemaakt waar ik de velden "KL_ID" en "PC_Computernaam" heb geselecteerd van Tabel: T_PCgegevens (waar ik dus het formulier van geopend wil hebben)
KL_ID is een veld met een relatie naar Tabel: T_klantgegevens

Alvast bedankt
 
Laatst bewerkt door een moderator:
Het belangrijkste is, dat je probeert te achterhalen op welk moment om de parameter wordt gevraagd.
Heb je al geprobeerd de knop opnieuw te maken met de Wizard? En geeft hij dan dezelfde melding? Het kan zijn, dat er nog ergens op het formulier of in de query een verwijzing zit naar een oude parameter, die je niet (goed) hebt verwijderd.
Je zou daarom eventueel ook de query opnieuw kunnen maken, door eerst de oude SQL code te kopiëren, daarna de query weg te gooien en de SQL, mits uiteraard correct, te plakken. Soms helpt dit... Vraag mij niet waarom, maar weggooien van een query is soms de enige manier....

Michel
 
Het heeft helaas niet gewerkt.

Ik heb de een afbeelding van het schermpje wat ik krijg als bijlage bijgepost.
Die waarde "test"wat je ziet is wel de computernaam die ik selecteer in mijn keuzelijst. Zodra ik weer de waarde test ingeef, krijg ik mijn gevraagde record in een nieuw Formulier.
Hoe zorg ik ervoor dat die waarde al meteen ingegeven word zodat ik dat schermpje niet krijg?
Mijn VBA code is nog steeds dezelfde als die van 9 april.
Mijn Query code die ik in mijn keuzelijst heb gezet is:
SELECT T_PCgegevens.KL_ID, T_PCgegevens.PC_Computernaam
FROM T_PCgegevens;

Bij voorbaat dank.
Twan
 

Bijlagen

  • parameter opgeven.JPG
    parameter opgeven.JPG
    7,4 KB · Weergaven: 52
@Twanno5483 Wanneer je een VBA-code of formule wil toevoegen, plaats deze dan tussen de code-tags (
Code:
 en
) oftewel selecteer je code en klik op het # icoontje. Bij voorbaat dank, zeker ook namens de helpers.
 
Oh, sorry. Ben nog nieuw hier. Geldt dat dan ook voor een Query code?

gr.
Twan
 
@Engelienart Graag een eigen vraag maken a.u.b. Het is niet netjes om in een ander zijn of haar vraag jouw probleem aan de orde te stellen. Bovendien is het verwarrend voor de helpers. Tevens is dit een gedateerde vraag.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan