[VBA] Acces sluit zijn formulier en saved altijd :(

Pagina: 1
Acties:
  • 414 views sinds 30-01-2008
  • Reageer

  • Sensei_D
  • Registratie: Maart 2002
  • Laatst online: 19-05 08:27
Ik heb in Access een probleempje.
Wanneer ik namelijk dit doe:
code:
1
DoCmd.Close acForm, "IB_Opdrachten Wijzigen", acSaveNo

dan staat er toch duidelijk dat ik de gegevens in het formulier NIET wil saven. Toch worden waardes die in het formulier staan naar de tabel geschreven als ik afsluit :? Het formulier is uiteraard gekoppeld aan een tabel...

Heeft de laatste parameter, "acSaveNo" gewoon totaal geen nut of doe ik iets gruwelijk fout??

sensei_d.fpv channel


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

acSaveNo slaat op zaken die worden opgeslagen wanneer je het formulier start. Zoals bijvoorbeeld de layout van het form. Wanneer je een form hebt dat aan een tabel hangt, kun je het toevoegen van een nieuw record niet voorkomen door het formulier te sluiten. Je zult dan de toevoeging van het nieuwe record moeten cancellen.

My personal website


  • Sensei_D
  • Registratie: Maart 2002
  • Laatst online: 19-05 08:27
Aha, dus als ik met een formulier een record invul, maar toch niet wil bewaren en het formulier afsluit worden de gegevens altijd bewaard en ben ik genoodzaakt een constructie te verzinnen om dit laatste record weer te verwijderen?

Al is het bovenstaande misschien niet moeilijk, het is imho wel verdomd omslachtig, ik zou toch een bevestiging moeten kunnen geven van het bewaren van een record?? Of wil ik nu al teveel? :+

sensei_d.fpv channel


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Een dergelijke wens los ik meestal op door je formulier niet rechtstreeks aan de tabel te hangen, maar door losstaande editboxen te gebruiken en het record pas op te slaan wanneer een gebruiker de knop 'Opslaan' aanklikt. Niet helemaal netjes, werkt wel ;)

My personal website


  • Boss
  • Registratie: September 1999
  • Laatst online: 19-05 09:33

Boss

+1 Overgewaardeerd

Voordat het formulier wordt afgesloten, wordt eerst de event gertriggerd die het record opslaat. Die kan je afvangen (VoorOpslaan in de NL Access, bij de formulier eigenschappen). Het opslaan cancellen en daarna gewoon laten afsluiten.

Is niet omslachtig, is niet vreemd: is eigenlijk heel logisch. Kwestie van opeenvolgende events.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

@Boss: dan moet je wel controleren of dat het record is dat opgeslagen wordt omdat de gebruiker het volgende record wil gaan toevoegen, of omdat de gebruiker het scherm wil sluiten. Nou is dat ook niet de meest ingewikkelde constructie ... maar het levert je wel wat meer werk op.

My personal website


  • Sensei_D
  • Registratie: Maart 2002
  • Laatst online: 19-05 08:27
Boss schreef op donderdag 02 december 2004 @ 17:05:
Voordat het formulier wordt afgesloten, wordt eerst de event gertriggerd die het record opslaat. Die kan je afvangen (VoorOpslaan in de NL Access, bij de formulier eigenschappen). Het opslaan cancellen en daarna gewoon laten afsluiten.

Is niet omslachtig, is niet vreemd: is eigenlijk heel logisch. Kwestie van opeenvolgende events.
Hmm, dit lijkt op wat ik wil en zal het zeker eens gaan proberen rekening houdend met wat OZ-Gump daarna aangeeft \o/

edit:
Is er voor het dikgedrukte een bepaald commando of moet ik er zelf wat voor verzinnen?

[ Voor 9% gewijzigd door Sensei_D op 03-12-2004 08:41 ]

sensei_d.fpv channel


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Je formulier heeft een event "BeforeInsert", dat zo opgemaakt is:
code:
1
Form_BeforeInsert(Cancel As Integer)
Dit event wordt getriggerd voordat een record ingevoegd wordt in de database. Als ik het goed heb is het voldoende om hier de cancel parameter een waarde te geven. Nu nog even iets uitvissen waardoor je weet dat de insert plaatsvindt in verband met een sluitend scherm ...

My personal website


  • Sensei_D
  • Registratie: Maart 2002
  • Laatst online: 19-05 08:27
Wooooi, tis gelukt! :p

sensei_d.fpv channel


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

pssssssst
Zou je ons eens willen vertellen hoe je dat gedaan hebt? Dan is dit topic straks NOG bruikbaarder in de search ;)

My personal website


  • Sensei_D
  • Registratie: Maart 2002
  • Laatst online: 19-05 08:27
OZ-Gump schreef op vrijdag 03 december 2004 @ 09:45:
pssssssst
Zou je ons eens willen vertellen hoe je dat gedaan hebt? Dan is dit topic straks NOG bruikbaarder in de search ;)
How true indeed...
Voor mijn formulier waarin ik bestaande records kan wijzigen heb ik dit gedaan:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub Bewaar_Click()
    DoCmd.Close
End Sub

Private Sub BewaarNiet_Click()
    Me.BewaarNiet.Caption = "Klik!"
    DoCmd.Close
End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer)
    If (Me.BewaarNiet.Caption = "Klik!") Then
        Cancel = 1
    Else
        Cancel = 0
    End If
End Sub


Ja, lach niet, er is geen hond die die caption ziet veranderen ja! :+

sensei_d.fpv channel


Verwijderd

Ik doe het altijd anders, ik gebruik 2 knoppen, "Cancel" en "OK".
In de code voor de Cancel knop staat
code:
1
2
  Undo
  Docmd.Close

en de code voor de OK knop is gewoon
code:
1
  Docmd.Close

Heel simpel!

  • Sensei_D
  • Registratie: Maart 2002
  • Laatst online: 19-05 08:27
Ja, kom je nu mee :+

sensei_d.fpv channel

Pagina: 1