invoergegevens laten staan?

Status
Niet open voor verdere reacties.

nothere

Gebruiker
Lid geworden
12 mrt 2006
Berichten
45
Ik heb een formulier aangemaakt om gegevens naar een tabel weg te schrijven
Nu komt het vaak voor dat ik bepaalde gegevens moet invoeren die ik in de vorige record ook heb gebruikt.
Dus bij een nieuwe record is mijn invoer weer leeg zodat ik opnieuw moet invullen.
Mijn vraag is...Is het mogelijk als ik naar een nieuwe record ga dat de vorige recordgegevens
blijven staan?

Alvast dank voor een antwoord

Nothere
 
Ja, dit kan op een aantal manieren. Zelf heb ik hier lang naar gezocht toen ik nog geen VBA kende. Echter via VBA gaat het naar mijn mening het beste. Geen paniek als geen VBA kent, ik heb de code uitgebreid voor je beschreven en zal de gebeurtenis uitleggen.

Wat gebeurd er in onderstaande code:
  • we bewaren de huidige invoer van de invoervelden
  • we plaatsen de gegevens van tekstvelden in het geheugen (zogenoemde variabele)
  • we vragen of we inderdaad een nieuw record willen aanmaken
  • indien nee, stoppen we
  • indien ja maken we een nieuw record aan
  • halen de gegevens uit het geheugen en plaatsen deze weer in de tekstvelden
  • we slaan weer alles op
  • we plaatsen de cursor in het gewenste veld

Stappen plan:
  • open je form in ontwerp modus en maak een nieuwe knop aan. Ik heb deze knop cmdNieuwRecord genoemd
  • klik met de rechtermuisknop op de knop en kies gebeurtenis opbouwen > programmacode
  • kopier onderstaande code en pas deze waarnodig aan

Code:
Private Sub cmdNieuwRecord_Click()

Dim strKleur, strOmschrijving As String 'Variabelen aanmaken waarin gegevens worden opgeslagen. 1 variabele per teksvlak
Dim strQuestion, strTitel As String 'Msgbox

'Controleren of er inderdaad een nieuw record gewenst is
strTitel = "Kiekeboe" 
strQuestion = MsgBox("Wil je dit record kopieren en een nieuwe aanmaken?", 33, strTitel)
If strQuestion = vbCancel Then
        Exit Sub
End If  'Einde controle nieuw record

'Alle data wegschrijven:
DoCmd.RunCommand acCmdSaveRecord

'Vullen van de variabelen:
    strOmschrijvingKort = Nz(txtOmschrijving)   'txtOmschrvijng is tekstveld met naam omschrijving
    strKleur = Nz(txtKleur)

'Nieuw record aanmaken:
DoCmd.GoToRecord , , acNewRec

'Invoeren van gegevens in txtVelden:
    txtOmschrijving = strOmschrijvingKort 
    txtKleur = strKleur 

   
'Alle data wegschrijven:
DoCmd.RunCommand acCmdSaveRecord

'Scherm verversen:
    Me.Form.Refresh
    
'Standaard de cursor in veld txtOmschrijving plaatsen:
txtOmschrijving.SetFocus

exit_Error_cmdNewRecord_Click:
    Exit Sub

'Errors afhandelen
Error_cmdNewRecord_Click:
    MsgBox Err.Description
    Resume exit_Error_cmdNewRecord_Click

End Sub
 
Laatst bewerkt:
Oh, en weet je wat het leuke is van bovenstaande manier? Je kan dit op elk willekeurig record uitvoeren. Dus stel je hebt 10 records aangemaakt en je wil de gegevens van de eerste in de nieuwe plaatsen dan kan dat met bovenstaande code,
 
error

Helaas
Ik krijg een error bij de zin txtOmschrijving.SetFocus
 
Heb je wel een invoerveld (tekstvlak) op je formulier met de naam txtOmschrijving ?
Overigens is txtOmschrijving.SetFocus niet verplicht maar gewoon handig zodat je meteen in het gewenste veld staat en meteen kan gaan typen.
Je vind de naam van een tekstvlak als je in de formulier-ontwerpmodus op een tekstvlak gaat staan en dan: rechtermuisknop -> eigenschappen -> tabblad overige -> naam
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan