Berichtvenster voor opslaan

Status
Niet open voor verdere reacties.

lorena

Gebruiker
Lid geworden
9 nov 2010
Berichten
15
Hallo,

Ik wil dat er een venster tevoorschijn komt als je naar een volgende record gaat in een formulier (access). Wanneer je een nieuwe record hebt ingevoegd of gewijzigd.

In de berichtvenster moet bijv: Wilt het opslaan?

Hoe maak je dit? Ik dacht aan een macro maken??
Weet iemand dit??


Groetjes,

Lorena
 
Gaat het bij jou om een doorlopend formulier of een enkelvoudig formulier, of om een subformulier?
 
Uhmm...weet ik niet. Ik heb de formulier gemaakt met behulp van wizard. Ik heb de formulier daarna aangepast en formules erin gezet.

:rolleyes:Weet je dan genoeg?
 
Je ziet gauw genoeg of het een enkelvoudig of een doorlopend formulier is ;) zie je één record, of zie je er meer? En kijk anders bij de Eigenschappen van het formulier: daar staat de instelling bij <Standaardweergave>.
 
Oké, kheb net gekeken en hij staat ingesteld op enkelvoudig formulier.
Maar ik heb wel meerdere records..?? (zie bijlage)

records.jpg
 
Dat lijkt mij logisch ;)

In beginsel kun je de code gebruiken uit de andere topic. Ik heb 'm een beetje aangepast, zodat hij de aangepassingen verwijdert.

Code:
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim Result As Long
    If Me.Dirty = True Then
        Result = MsgBox("Er is iets gewijzigd, opslaan?", vbInformation + vbYesNo, "Record gewijzigd!")
        If Result = vbNo Then
            Cancel = True
            Me.Undo
        Else
        End If
    End If
End Sub

Deze code zet je op het formulier. Meestal zul je eerst een gebeurtenis moeten maken om in het VBA scherm van het formulier te komen. Deze actie kan je straks weer verwijderen. In het ontwerpscherm ga je naar het tabblad Eigenschappen. Kies (bijvoorbeeld van het formulier) de gebeurtenis <Bij aanwijzen> en selecteer de optie <Gebeurtenis opbouwen>. Je komt als het goed is in het VBA venster. Ga onder de End Sub regel staan, en plak daar deze code. De code Private Sub Form_Current()... End Sub haal je weg, want daar doe je niks mee.
Als het goed is, kun je het VBA scherm sluiten, en moet het formulier het doen.
 
Hallo,

Kheb het gedaan zoals je het omschrijft (zie bijlage). :o :o Maar er gebeurt niks??
Als ik wat wijzig in een record en naar een volgende record ga dan komt er geen venster tevoorschijn met "Wilt u de wijzigingen opslaan?".

En als ik in het eigenschapsvenster klik op "bij aanwijzen" en daar klik op de opbouwfunctie voor programmacode. Maar als ik het afsluit komt die bij "voor bijwerken" te staan. :rolleyes: code2.jpg
 
Als je de code in het formulier hebt geplakt in het VBA scherm, en je slaat alles op, dan staat de code bij de juiste procedure. Hij hoort ook niet bij Aanwijzen te staan; die stap had je alleen nodig om bij de VBA code te komen. En dan zou de code dus moeten werken, tenzij je de macrobeveiliging van de db op midden of hoog hebt staan. Die zou ik eens op laag zetten. Dan zou het moeten werken.
 
Nou ik heb de macrobeveiliging gewijzigd (zie bijlage).
Maar de code werkt nog niet :(.
Misschien toch maar een andere optie proberen.
Of jij weet nog wat?

Groetjes,

instelling beveiliging macro.jpgLorena
 
Is bij de eigenschap "Voor bijwerken" (BeforeUpdate) van het formulier de [Gebeurtenisprocedure] wel geselecteerd of is dat nog leeg?
 
Hallo,

Ja, er staat gebeurtenisprocedure.
Dus weet niet meer wat er nu fout is??:confused:

Groetjes,

Lorena
 
En geeft hij de code weer zoals ik 'm gepost heb?
 
Ja, zie bericht van gister om 14.17 (bijlage).
Dat klopt toch zoals die daar staat?
 
Is helemaal top :thumb:
We gaan dan eens iets anders proberen.. Als je met de cursor in die code gaat staan in de regel If Me.Dirty Then en je drukt vervolgens op <F9> dan moet er een rode bal in de grijze verticale balk komen, en de betreffende regel zal een donkerrode kleur krijgen. (kan ook een andere kleur zijn, als je andere kleurinstellingen hebt; in ieder geval moet de stip verschijnen).
Je hebt nu een Onderbrekingspunt gemaakt. Als je nu terug naar het formulier gaat, en je wijzigt iets, en gaat dan naar een ander record, dan moet de routine worden uitgevoerd, en springt het scherm naar de regel If Me.Dirty. Je kunt nu met de toets <F8> regel voor regel de code laten uitvoeren. Dit kun je doen tot alle regels zijn afgewerkt. Wil je dat eens proberen? En dan rapporteren wat er precies gebeurt.
 
Nou ik heb de F9 in de code gebruikt (zie bijlage).
Daarna ga ik trug naar de formulier. Daarna wijzig ik wat in de formulier en ga naar de volgende record. Maar nog komt de venster niet tevoorschijn?

Ik snap niet helemaal wat je met F8 bedoeld. Als ik in de formulier ben druk ik op F8 maar ik zie niks gebeuren?


ff.jpg
 
Thanx, het werkt nu helemaal! :thumb:
Nu ben ik blij.:D

Hartstikke bedankt, allebei.

Groetjes,

Lorena
 
Blijkbaar heb je de oplossing gevonden? Wat was het nu?
 
Jah, nou ik snapte niet helemaal met de F8 toets. Want dat lukte niet dat die elke regel bij langs ging om te controleren of de code werkt. En toen daarna is het wel gelukt gelukkig:D. Dus is dat ook eindelijk opgelost:d.

Weet je ook toevallilg hoe je zo'n database bijv implementeert naar internet (een website).??

Kwas al een beetje gaan zoeken. Volgens mij moet je je database dan als een andere bestand opslaan?? En iets met een sharepointlijst?? Of is dat weer voor wat anders.

Groetjes,

Lorena
 
Ik heb weinig ervaring met een database op een internet pagina. Access 2007 doet dat vermoedelijk wat netter dan 2003, want dat is een crime. Ik zou eerder met MySQL werken als je een database georiënteerde website hebt. En die eventueel synchroniseren met Access.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan