collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 62
  • Punkt Versteckte: 1
  • Punkt Mitglieder: 3
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13974
  • stats Beiträge insgesamt: 66572
  • stats Themen insgesamt: 8973
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: .Enabled = True Bzw. False zerschießt Prozedur  (Gelesen 2328 mal)

Offline Frank77

  • Access-Profi
  • **
  • Beiträge: 188
    • Die Zauberbaecker
.Enabled = True Bzw. False zerschießt Prozedur
« am: April 21, 2012, 10:33:45 »
Hallo
Ich hab in einem gebundenem Formular eine prüf Funktion eingebaut die den Wert  True/False zurück gibt um zu bestätigen das alle Pflicht Felder vor den speichern auch ausgefüllt sind
Beim Navigieren zum neuen Datensatz wird der Speicher Button deaktiviert und nach ausfüllen aller Felder nach aktualisieren wieder aktiviert  
Eigentlich ja nichts Besonderes aber
Wen der Button wieder aktiviert wird dann übergeht er die if Anweisung und löst die prüf Funktion nicht aus sondern führt nur den Inhalt der Anweisung aus
Den Button wird mit  CmdSpeichernMit.Enabled = True Bzw. False angesteuert
Wenn ich die Prozedur die hinter dem Speichen Button in einen anderen Button stelle geht alles einwandfrei wen ich dann aber wieder  .Enabled = True Bzw. False anwende hat auch dieser den defekt
  
 If fncPruefenSpeicher = True Then
        DoCmd.RunCommand acCmdSaveRecord
    End If

Public Function fncPruefenSpeicher()
    Dim Msg As String
    fncPruefenSpeicher = True
    If IsNull(Me!TxTVeranstaltungName) Then
        Msg = "Bitte Tragen sie einen Eventnamen ein, " & vbCr & "" & vbCr & "      das Feld darf nicht Leer sein"
        MsgBox Msg, vbInformation Or vbOKOnly Or vbDefaultButton1, "Bitte Ausfüllen"
        fncPruefenSpeicher = False
    End If
    If IsNull(Me!TxTVeranstaltungAdresse) Then
        Msg = "Bitte Tragen sie einen Adresse ein, " & vbCr & "" & vbCr & "      das Feld darf nicht Leer sein"
        MsgBox Msg, vbInformation Or vbOKOnly Or vbDefaultButton1, "Bitte Ausfüllen"
        fncPruefenSpeicher = False
    End If
.
.
.
.
.
.
.
End Function

Tja keine Ahnung wo der Fehler liegt


Selbstständig = Selbst und Ständig
 

Online DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23349
Re: .Enabled = True Bzw. False zerschießt Prozedur
« Antwort #1 am: April 21, 2012, 10:54:20 »
Hallo,

noch ein bisschen unklar, was da genau abgeht:


"Beim Navigieren zum neuen Datensatz wird der Speicher Button deaktiviert "

zeig mal diesen (kompletten) Code.



"nach ausfüllen aller Felder nach aktualisieren wieder aktiviert   "

zeig auch diesen Code...



"Wen der Button wieder aktiviert wird "

zeige auch diesen Code...

Offline Frank77

  • Access-Profi
  • **
  • Beiträge: 188
    • Die Zauberbaecker
Re: .Enabled = True Bzw. False zerschießt Prozedur
« Antwort #2 am: April 21, 2012, 12:27:41 »
Hallo!
Das habe ich ganz einfach so gemacht das ich die Prozedur mit  Call Bottons_One aufrufe in welchen Ereignis  ich es brauche z.b.  TxtFeld _AfterUpdate oder im Next Button den ich dann auch sperre damit er nicht weiter navigiert sowie den Exit damit das Formular nicht geschlossen werden kann 

Private Sub CmdNaechsterMit_Click()
    On Error GoTo Err_CmdNaechsterMit_Click
    DoCmd.GoToRecord , , acNext
    Call Bottons_One
Exit_CmdNaechsterMit_Click:
    Exit Sub
Err_CmdNaechsterMit_Click:
    If Err.Number = 2105 Then
        DoCmd.GoToRecord , , acFirst
        Resume Exit_CmdNaechsterMit_Click
    End If
    MsgBox Err.Description
    Resume Exit_CmdNaechsterMit_Click
End Sub


Private Sub Bottons_One()
    If Nz(Me!CboVeranstaltungsVeranstalterIDRef, "") <> "" And Nz(Me!TxTVeranstaltungName, "") <> "" And Nz(Me!CboVeranstaltungArtIDRef, "") <> "" And Nz(Me!CboOrtIDRef, "") <> "" And Nz(Me!TxTVeranstaltungAdresse, "") <> "" Then
        CmdSpeichernMit.Enabled = True
    Else
        CmdSpeichernMit.Enabled = False
    End If
End Sub

Code für das Schließen der Formulars

Option Compare Database
Option Explicit
Public bolSchliessenErlaubt As Boolean

Private Sub CmdExit_mit_Speichern_Click()
    If fncPruefen = True Then
        bolSchliessenErlaubt = True
        DoCmd.Close acForm, "FrmTlbLieferant"
    End If
End Sub


Private Sub Form_Unload(Cancel As Integer)
    Dim Msg As String
    If bolSchliessenErlaubt = False Then
        Msg = "Das Formular kann nur über Exit Mit/Ohne Speichern " & vbCr & "geschlossen werden damit es nicht zu Fehlern kommt !" & vbCr & ""
        MsgBox Msg, vbCritical Or vbOKOnly, "Achtung:"
        Cancel = True
    End If
End Sub

Der Fehler ist das nach den aktivieren des Speicher Buttons die if ignoriert wird und immer gespeichert wird 
If fncPruefenSpeicher = True Then     
        DoCmd.RunCommand acCmdSaveRecord
    End If


Gruß Frank
Selbstständig = Selbst und Ständig
 

Online DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23349
Re: .Enabled = True Bzw. False zerschießt Prozedur
« Antwort #3 am: April 21, 2012, 13:30:52 »
Hallo,

probier das einmal nur so :

Sub Form_BeforeUpdate(Cancel as Integer)
Cancel = not fncPruefenSpeicher()
End Sub

In der Funktion "fncPruefenSpeicher"   kannst Du ja für die Form-Schliessen-Geschichte noch die Variable "bolSchliessenErlaubt"  entspr. setzen.

Offline Frank77

  • Access-Profi
  • **
  • Beiträge: 188
    • Die Zauberbaecker
Re: .Enabled = True Bzw. False zerschießt Prozedur
« Antwort #4 am: April 21, 2012, 20:21:37 »
Hallo!
Erst mal danke für deine mühe!

Die Lösung von dir funktioniert wenn ich das CmdSpeichernMit.Enabled = True/False weglasse

Beispiel:
 Der Button speichern ist aktiviert und ich lösche den Inhalt eines Plicht Feldes und belasse den Cursor im Feld  wird der Speicher Button an bleiben da die Private Sub Bottons_One Prozedur nicht angesprochen wird   
Das Formular speichert dann den Datensatz mit DoCmd.RunCommand acCmdSaveRecord
dass das in einer if Anweisung steht interessiert da überhaupt nicht und die Function fncPruefenSpeicher() wird nicht angesprochen

wende ich das CmdSpeichernMit.Enabled = True/False oder auch .Visible = True/False an dann geht’s ich darf also nichts an den Button verändern oder mit ihm machen dann geht’s

das Phänomen tritt aber nur bei einem gebundenem Formular auf nicht wenn es über ein Recordset Objekt gespeist wird

Gruß Frank
Selbstständig = Selbst und Ständig
 

Offline Stapi

  • Access-Meister
  • ***
  • Beiträge: 663
Re: .Enabled = True Bzw. False zerschießt Prozedur
« Antwort #5 am: April 22, 2012, 12:03:45 »
Hallo Frank77

Du hast einen "vollständigen Datensatz" in dem du nun den Inhalt eines pflicht Feld löscht ohne im Nachgang dieses zu verlassen, wenn du es aber wirklich prüfen möchtest sollte aus meiner Sicht, nun das Ereigniss eintretten "bei Änderung" was überprüft ob nun alle Daten wirklich aus gefüllt worden sind.
Grüße aus dem schönen NRW
Stefan