Record read only maken na invoer

Status
Niet open voor verdere reacties.

raymin

Gebruiker
Lid geworden
24 aug 2010
Berichten
127
Is het mogelijk record read only te maken, meteen nadat het record is ingevoerd en in de database is opgenomen?
 
Ik weet niet precies wat je bedoeling hiermee is... Als je een record op Tabelniveau bedoelt, dan vermoed ik dat je Beveilingsniveaus zult moeten instellen, en dan nog vraag ik me af of je een tabel kunt locken en vrijgeven bij het toevoegen van records.
Ook op formulierniveau vraag ik me af wat het nut er van is, maar je kunt een formulier zodanig instellen dat je geen records kunt toevoegen, of juist wel. Die code moet je dan uiteraard wel ergens achter hangen... Waarom zou je het willen?
 
Ik heb een formulier waarin ik kosten posten kan opgeven, in dit formulier zit een subformulier waarin ik de gemaakte kosten inzet, deze "hangen" aan de kosten post. Er kunnen dus meerdere "gemaakte kosten" onder een kosten post vallen.

Je kunt nu heel gemakkelijk het record wat je te zien krijgt als je het formulier opent "aanpassen" in plaats een nieuw record maken en deze invullen.

Wat wel handig zou zijn is dat bij het openen van het formulier, deze meteen op een nieuw leeg record zet, dan is het ook opgelost.
 
En dat is vrij simpel op te lossen, door het formulier te openen in de Invoermodus.
Code:
DoCmd.OpenForm "test", acNormal, , , acFormAdd
Je kunt zo hetzelfde formulier gebruiken om records met een formulier te bekijken, records toe te voegen of records te bewerken.
Om te voorkomen dat je records kunt toevoegen als het formulier in de normale modus wordt geopend, kun je bijvoorbeeld deze code toevoegen:
Code:
Me.AllowAdditions = False
 
Open je formulier in ontwerpweergave.
Klik rechts en kies uit de lijst "Eigenschappen".
Kies bovenin het Eigenschappen venster voor Selectietype Formulier.

Optie 1

Zet de eigenschap "Gegevensinvoer" op Ja -> nu krijg je bestaande rijen niet meer te zien

Optie 2

Zet de eigenschap "Verwijderingen toestaan" op Nee -> nu kun je bestaande rijen niet meer verwijderen en/of
Zet de eigenschap "Bewerken toestaan" op Nee -> nu kun je bestaande rijen niet aanpassen

Zie bijlage.

Tardis
 

Bijlagen

  • Formulier gegevenseigenschappen.jpg
    Formulier gegevenseigenschappen.jpg
    34,7 KB · Weergaven: 58
Ok dat werkt inderdaad (beide oplossingen, waarvoor wederom mijn dank)

Als ik nu standaard die van Tardis gebruik. (dan is de invoer/database altijd veilig) kan ik dan een knop op mijn "hoofd"formulier zetten waarbij ik deze instellingen op alle formulieren en één keer "aan" kan zetten en één voor "uit"?
 
Ofwel kies je voor vaste instellingen, ofwel doe je het VBA code onder knoppen, zou ik zeggen.
 
Dan wordt het dus VBA :)

Ik heb nu een knop gemaakt om het formulier te openen met
Code:
DoCmd.OpenForm "test", acNormal, , , acFormAdd

Je kunt met de vaste instellingen instellen dat je de records kunt zien en toevoegen, maar niet wijzigen of verwijderen. Kan dit ook met de VBA code?

Waar voeg ik deze code toe?
Code:
Me.AllowAdditions = False

Alvast bedankt voor jullie eindeloze geduld :thumb:
 
Beetje vroeg gereageerd, ik heb nu zoveel gezien, ben zelf maar even aan het kloo..en geslagen.

Code:
Private Sub Knop1_Click()
DoCmd.OpenForm "Klanten Formulier", acNormal
Me.AllowAdditions = True
Me.AllowDeletions = False
Me.AllowEdits = False
End Sub

Dit doet wat ik wil, alles zien, niet wijzigen en niet verwijderen, maar wel toevoegen. Kan de code nog netter? of is this it?

edit:
HMMM toch niet... jammer nou
 
Laatst bewerkt:
De code die je nà het Docmd.OpenForm commando hebt gezet, hebben betrekking op het formulier van waaruit je het Klantenformulier opent. De codes kun je dus beter in het Klantenformulier zetten bij de gebeurtenis <Bij Openen>.
Ik kan me voorstellen dat je dit formulier ook in andere modi wilt openen, dus je zou het Klantenformulier ook een OpenArgs mee kunnen geven, op basis waarvan je dan de AllowEdits etc. instelt.
Dan krijg je zoiets:
Code:
DoCmd.OpenForm "Klanten Formulier", acNormal,,,,,"Nieuw Record"
In het Klantenformulier zet je dan deze code in het <Bij Openen> event:
Code:
Private Sub Form_Load()
If Nz(Me.OpenArgs, "") = "Nieuw Record" Then
    Me.AllowAdditions = True
    Me.AllowDeletions = False
    Me.AllowEdits = False
ElseIf Nz(Me.OpenArgs, "") = "Edit" Then
    Me.AllowAdditions = False
    Me.AllowDeletions = False
    Me.AllowEdits = True
End If
End Sub
Om maar eens twee situaties af te vangen...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan