Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Datensätze anhand eines Feldstatuswertes sperren





Frage

Hallo, ich habe eine Tabelle Buchungen_Kasse. In dieser befindet sich ein Feld Status mit den möglichen werten 0 oder 1. 0 steht für nciht gesperrte Daten und 1 steht für gesperrte Daten. Wie kriege ich access dazu die Daten mit einer 1 aus der Tabelle auszulesen und in allen formularen gegen bearbeitung und löschung zu sperren? Es darf nur noch direkt in der Tabelle änderbar sein. Also für den User nicht zugänglich. Gruss Christian

Antwort 1 von Roadrunner90

Hallo Christian,
beim öffnen des Formulares den Status abfragen und wenn 1 dann
AllowEdits = False
damit wird der Satz nur angezeigt, Änderungen sind nicht möglich.
Evtl. brauchst du im Anschluss noch einen
DoCmd.Requery
(Gilt für Einzelnes Formular)
Gruß Rudolf

P.S. hat das mit dem update jetzt geklappt?

Antwort 2 von Christian

HI Roadrunner90,

vielen Dank
kann ich das auch irgendwie beim start der gesamten Datenbank machen,, damit man nicht alle formulare bearbeiten muss? Kennst du da vielleicht eine möglichkeit?


nein das mit dem update hat nur bedingt geklappt.
Er macht das zwar einwandfrei dennoch fragt er das aktuelle Datum vom user ab, er soll aber das datum vom system auslesen. verstehste?

Antwort 3 von Roadrunner90

für die gesamte Datenbank ist mir nichts bekannt, der Befehl AllowEdits bezieht sich immer nur auf 1 Formular.

Das mit dem Datum verstehe ich nicht, wie greifst du denn auf die Datenbank zu?
Gruß Rudolf

Antwort 4 von Christian

über ein SQL STatement mom


Dim antw%





If Day(Date) = 1 Then GoTo Marke1
   ValSql = "SELECT BuDate FROM [Buchungen_Kasse] WHERE Format([BuDate],'yyyymm') < Format(Date,'yyyymm') AND Status = 0"
    'ValSql = "SELECT BuDate FROM [Buchungen_Kasse] WHERE Month(BuDate) < & Month(Date) AND Status = 0"
       If ValSql = Status = 0 Then GoTo Marke2

    
    
     GoTo Marke3
  
Marke1:
        DoCmd.SetWarnings False
        antw = MsgBox("Möchten Sie den voherigen Monat abschliessen", vbYesNo, "Vorigen Monat sperren?")
        If antw = vbYes Then DoCmd.RunSQL "Update [Buchungen_Kasse] Set Status= True Where Format([BuDate],'yyyymm') < Format(Date,'yyyymm')and status = False"
        If antw = vbYes Then MsgBox "Voriger Monat wurde abgeschlossen", vbInformation, "Gesperrt!"
        If antw = vbNo Then MsgBox "Sie werden erneut dazu aufgefordert zu sperren", vbInformation, " "
        DoCmd.SetWarnings True
        GoTo Marke3:
Marke2:
        DoCmd.RunSQL ("UPDATE Buchungen_Kasse Set Status = True WHERE Format([BuDate],'yyyymm') < Format(Date,'yyyymm')")
        'DoCmd.RunSQL "Update [buchungen_Kasse] Set Status = 1 Where Month(BuDate) < Month(Date) AND Status = 0"
        MsgBox "ausführungstest marke 2"

       
       
Marke3: MsgBox "marke 3"


Er soll oben bei VALSQL nur die Datenauswählen, die im vormonat gebucht wurden sind, und wo der status noch false ist also sprich in der tabelle nicht abgehakt.

Wenn das so ist soll er zu MArke 2 springen dort soll er dann die Datensätze "abhaken" die die oberen Bedingungen erfüllt haben. Das macht er ja auch. nur der user muss ein Datum eingeben und zwar das Datum, was er eigentlich aus der tabelle entnehmen sollte.


Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: