form openen met het in vorig form gebruikte record.

Status
Niet open voor verdere reacties.

hermannn

Nieuwe gebruiker
Lid geworden
29 jun 2006
Berichten
4
Hallo beste helpers,

Er zijn twee formulieren gebaseerd op dezelfde onderliggende tabel.
Als ik form1 sluit en form2 open, wil ik direct het record in form2 actief hebben, waarmee ik in form1 gestopt ben.
De records hebben een 'Id'.

(recordsource niet d.m.v. recordset in vba toegewezen, maar opgegeven bij het ontwerpen van het formulier)
 
Je kan dit op 2 manieren doen, je kan vanuit formulier 1 formulier 2 openen en daarbij gebruik maken van de id waarde die op dat moment in formulier 1 actief is.
Of je kunt de waarde van het id in formulier opslaan in een variabelen en deze gebruiken bij het openen van formulier 2 hier heb je wel een klein beetje vba kennis voor nodig.

De eerste manier is simpel, je kan een formulier openen met een argument.
Hierin kun je opgeven dat het id een bepaalde waarde moet hebben.
Iets zoals hieronder.

Code:
DoCmd.OpenForm "formulier_2", , , "[id]= " & Me.[ID]
 
Je kan dit op 2 manieren doen, je kan vanuit formulier 1 formulier 2 openen en daarbij gebruik maken van de id waarde die op dat moment in formulier 1 actief is.
Of je kunt de waarde van het id in formulier opslaan in een variabelen en deze gebruiken bij het openen van formulier 2 hier heb je wel een klein beetje vba kennis voor nodig.

De eerste manier is simpel, je kan een formulier openen met een argument.
Hierin kun je opgeven dat het id een bepaalde waarde moet hebben.
Iets zoals hieronder.

Code:
DoCmd.OpenForm "formulier_2", , , "[id]= " & Me.[ID]

Heb je bij de tweede manier recordsetclone nodig? Zo ja, weet je daar code voorbeelden van?

Herman
 
Heb je bij de tweede manier recordsetclone nodig? Zo ja, weet je daar code voorbeelden van?

Herman


De eerste manier lukt prima om bij dat betreffende record te komen.
Het wordt dan gefilterd. Mijn bedoeling was om in form2 uit te komen met dat ene record actief, maar dat je dan in de recordwijzer vervolgens weer naar andere records kunt gaan.
Herman
 
Het kan ook met onderstaande code.
Als je geen waarde voor het gezochte id in wil geven zul je de waarde van het laatste record op moeten slaan in een variabele.
De code kun je dan aanpassen door de inputbox te wijzigen in de naam van de variabele

Code:
  Dim rs As Recordset
  
  Set rs = Me.RecordsetClone
  
  rs.FindFirst "nummer=" & InputBox("nummer")
  
  If rs.NoMatch Then
      MsgBox "Record niet gevonden"
    Else
      Me.Bookmark = rs.Bookmark
  End If
 
Het kan ook met onderstaande code.
Als je geen waarde voor het gezochte id in wil geven zul je de waarde van het laatste record op moeten slaan in een variabele.
De code kun je dan aanpassen door de inputbox te wijzigen in de naam van de variabele

Code:
  Dim rs As Recordset
  
  Set rs = Me.RecordsetClone
  
  rs.FindFirst "nummer=" & InputBox("nummer")
  
  If rs.NoMatch Then
      MsgBox "Record niet gevonden"
    Else
      Me.Bookmark = rs.Bookmark
  End If

Ik heb precies het zelfde probleem. Maar als ik dit overneem wil het nog niet werken. Alleen hij moet toch ook een bron database hebben of snap ik het helemaal verkeerd. Want die kan ik helemaal niet terug vinden
 
Deze code moet je in een formulier gebruiken en aan een event hangen.
Dus als je bv een knop op je formulier zet en dan deze code in het klik event zet
zal er bij het indrukken van de knop een vraag komen (inputbox) hierin vul je een nummer in en dan zal de code de rest doen.
 
Ik heb een probleem. Dit is mijn code

Code:
Private Sub Knop139_Click()
DoCmd.OpenForm "Formulier_Biesbosch_PrivePakket_p2", acNormal, , , acFormEdit, acWindowNormal
  Forms.Formulier_Biesbosch_PrivePakket_p2.Requery  'voor het geval Form2 al open was en je in Form1 een record hebt toegevoegd (waarvan Form2 dan nog niet op de hoogte is)
  Forms.Formulier_Biesbosch_PrivePakket_p2.Id.SetFocus
  DoCmd.FindRecord Me.Id, acEntire, False, acDown, False, acCurrent, True
  DoCmd.Close acForm, "Formulier_biesbosch_PrivePakket_p1", acSaveNo
 
      
  End Sub

Bij: "Forms.Formulier_Biesbosch_PrivePakket_p2.Id.SetFocus" geef hij een fout. Weet iemand wat ik verkeerd doe?
 
Waarschijnlijk wil je focus zetten op een veld wat al de focus heeft en dat kan hij niet waarderen dus maar er iets van een if van.
 
Hoe kan je dat controleren of waar hij op gefocust is?

Het het moet om een heel record gaan en niet om een stukje veld in een formulier.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan