Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: kingwambi am Mai 29, 2015, 09:09:10

Titel: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Mai 29, 2015, 09:09:10
Ich möchte mir "Formularvorlagen" machen. Ein Formular wird mit Grunddaten ausgefüllt und abgespeichert. Wenn ich mir die Vorlage aufrufe soll diese dupliziert und dann fertig ausgefüllt werden. Ich habe dies bis jetzt so gelöst, dass alle mit Kundennummer 9 beginnend Vorlagen sind - zb 91001 ist die erste Vorlage - dupliziert, neue Kd Nr, fertig ausgefüllt - passt. Jedoch soll es nicht passieren, dass die Vorlage überschrieben wird. Könnte man erreichen, dass alle mit Kundennummer 9 beginnend schreibgeschützt sind und vorher entsperrt werden müssen, damit man Sie bearbeiten kann? Wenn nein ev eine andere Idee wie dies lösbar wäre?
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: MzKlMu am Mai 29, 2015, 09:38:53
Hallo,
Formularvorlagen halt ich für verzichtbar. Zu was auch ?
Man hat ein Formular das die Daten entsprechend filtert.

Kannst Du mal den Sinn des Vorhabens besser beschreiben ?
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Mai 29, 2015, 10:14:44
Hallo - Ich habe Überprüfungsformulare für Gerätschaften - die Formulare geben die Prüfungsschritte vor (siehe Anhang). Für jedes Gerät ein eigenes Formular mit eigenen Prüfschritten. Diese werden nach und nach abgearbeitet. Um sich bei EINIGEN wiederholenden Varianten die Eingabe vieler Punkte zu sparen mache ich mir Vorlagen. Dann brauche ich nur noch die fehlenden Felder ausfüllen. Wie gesagt nicht immer - nicht bei allen - da wo es passt. Ich arbeite schon lange erfolgreich damit. Nur meine angefragten Punkte stören mich - es wäre toll wenn wir auf meine Fragen eingehen könnten - Danke
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: MzKlMu am Mai 29, 2015, 10:56:38
Hallo,
Du kannst in Abhängigkeit der 1. Ziffer der Kundennummer das Formular sperren.

Etwa so:
Private Sub Form_Current()
    Me.AllowEdits = Not Left(Kundennummer,1) = "9"
End Sub

Im Ereignis "Beim Anzeigen" des Formulars.
Du benötigst dann noch eine Hintertüt (z.B. Funktionstaste) zum Entsperren.
Me.AllowEdits = True

Zitatev eine andere Idee wie dies lösbar wäre?
ja, mit einem normalisierten Datenmodell. Dass das Datenmodell falsch ist, lässt sich alleine aus diesem Satz ableiten:
ZitatFür jedes Gerät ein eigenes Formular mit eigenen Prüfschritten
Hier wäre Handlungsbedarf.
Die Prüfungsschritte sollten alle in eine Tabelle, der Prüfungsschritt als Datensatz mit einem Fremdschlüssel zum Gerät mit dem definiert wird für welches Gerät der Schritt zutreffend ist. Dann eine Tabelle für die eigentliche Prüfungstermine mit Fremdschlüssel zum Gerät.
In das Formular für die Prüfung kommt dann ein Button um per Anfügeabfrage die zum Gerät passenden Schritte in eine Tabelle zur Erfassung der zu erfolgenden Prüfschritte.

Dann reicht ein Formular für alle Geräte. Und Vorlagen werden auch keine benötigt weil über die Beziehungen automatisch die zum Gerät gehörenden Schritte definiert sind.
Für eine neue Prüfung wird der Datensatz angelegt und per Kombi das Gerät gewählt. Der Rest geht automatisch. Übertragen werden nur die Schlüsselfelder.

Mit einem normalisierten Datenmodell braucht es keine Vorlagen. Du würdest Dich wundern, wie einfach das alles wäre.
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Mai 29, 2015, 12:42:37
Danke für die Antwort. Sorry - Ich komme nicht hin. Kundennummer ist ein Fremdschlüsselfeld. Ev hängts mit dem zusammen. Ich hätte eine kleine uralte Testdatenbank angehängt - nur zum Test. Könntest du bitte nachsehen / korrigieren was ich falsch mache. Sorry, VBA ist gar nicht meine Stärke. Vielen Dank schon mal
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: MaggieMay am Mai 29, 2015, 17:08:13
Hi,
Zitat von: kingwambi am Mai 29, 2015, 12:42:37Sorry - Ich komme nicht hin.
schau dir doch die Datensatzherkunft des Kombifeldes einmal ganz genau an und stelle fest, welches die gebundene Spalte ist.

An die anderen Spalten des Kombifeldes kommst du über die Column-Eigenschaft, die Zählung beginnt bei 0.

Und noch ein Tipp:
Beim Testen im Unterbrechungsmodus, kannst du dir den Inhalt von Variablen und Steuerelementen ansehen.
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: MzKlMu am Mai 29, 2015, 18:12:30
Hallo,
ich halte das Datenmodell der Test DB für unbrauchbar. Ist die echte DB auch so (oder ähnlich) aufgebaut ?

Bist Du an einem korrekten Datenmodell interessiert ?

Übrigens, dass Datenmodell falsch ist, hat Dir Franz am 2.1.2015 schon mal mitgeteilt, hast Du aber leider kommentarlos ignoriert.

http://www.access-o-mania.de/forum/index.php?topic=19971.msg110706#msg110706
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Mai 31, 2015, 09:05:44
Hallo Klaus, die echte DB ist nicht so aber ähnlich aufgebaut. Die Testdatenbank ist das kleinste was ich auf die schnelle mit der passenden Größe hatte. Dass sie nicht gut ist ist mir klar, da hatten wir auch schon mal darüber gesprochen. Da ich mit meiner richtigen Datenbank schon länger erfolgreich arbeite (bis auf mein derzeitiges Problem) würde ich dies nicht gerne abändern. Mit meiner Beispieldatenbank kann ich mir aber vorstellen, wie es abzuändern ist, dass es bei mir funktioniert. Ich entschuldige mich höflichst über die Qualität der Testdatenbank.
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Mai 31, 2015, 09:13:59
Hallo MaggyMay, danke für deine Beteiligung! Ich nehme nund die Daten der Testdatenbank. Die gebundene Spalte ist das Feld Kundennr aus der Tabelle Kunden. Gebundene Spalte 1. Wie müsste ich dies nun fomulieren? LG Jürgen
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Juni 01, 2015, 09:36:59
Guten Morgen - ich habe eine neue Testdatenbank erstellt. Mit dem Fremdschlüsselfeld Kundennummer habe ich es nicht hinbekommen, aber Versuchsweise wenn im Namen Vorlage steht. Nun zu meinen Fragen:
- wie formuliere ich es damit es mit dem Fremdschlüsselfeld funktioniert
- ich bekomme beim duplizieren eine Fehlermeldung "Unzulässsige Verwendung von Null"
- wo / wie muss ich die Entsperrfunktion mit einer Funktionstaste "Me.AllowEdits = True" einrichten?
LG Jürgen
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: DF6GL am Juni 01, 2015, 10:16:37
Hallo,

lies zunächst u. st. Link 1a (evtl. auch Link 1) und versuch das zu verstehen und auf Deine Datenkonstellation anzuwenden. Danach fängst Du nochmal von vorne an....


Zudem beachte die Tipps von hier:  http://www.donkarl.com/?FAQ1.5
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: MaggieMay am Juni 01, 2015, 11:16:10
Hallo,
Zitat von: kingwambi am Mai 31, 2015, 09:13:59Die gebundene Spalte ist das Feld Kundennr aus der Tabelle Kunden. Gebundene Spalte 1.
die erste Spalte ist aber die ID und nicht das Feld "Kundennr" - deshalb sagte ich, schau es dir genau an.

Das heißt, du hättest einfach nur auf die zweite Spalte zugreifen müssen, damit die Prüfung erfolgreich ist:    Me.AllowEdits = Not Left(Kundennr_F.Column(1), 1) = "9"
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Juni 01, 2015, 11:24:30
Hallo Maggie May, danke für die Antwort auf meine Frage. Ich dachte es beginnt bei 0. Dann wäre 0 die ID und 1 die Kundennr. Wie müsste es nun richtig heißen? LG Jürgen
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Juni 01, 2015, 11:25:49
Sorry hab den Rest nicht gesehen - werde es sofort versuchen.
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Juni 01, 2015, 11:45:06
Hallo Maggie - es kommt die Meldung: Fehler beim Kompilieren, Methode oder Datenobjekt nicht gefunden.
Der Code:
Private Sub Form_Current()
        Me.AllowEdits = Not Left(Kundennr_F.Column(1), 1) = "9"

End Sub
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: MzKlMu am Juni 01, 2015, 12:01:28
Hallo,
welchen Namen hat das Kombifeld das die Kundennr_F anzeigt ?
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Juni 01, 2015, 12:13:55
Hallo - das wars - Kombinationsfeld28 - dann ging es - Danke!
beim duplizieren kommt nun eine Fehlermeldung "Unzulässsige Verwendung von Null" - wie soll ich hier vorgehen? LG
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: MaggieMay am Juni 01, 2015, 12:37:35
Füge den folgenden Befehl als ersten ins Current-Ereignis ein:
    If Me.NewRecord Then Exit Sub
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Juni 01, 2015, 12:41:20
nichts - wenn ich den (Schreibschutz)Code lösche geht's wieder - LG
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: MaggieMay am Juni 01, 2015, 13:02:17
Ich hatte meine Antwort nochmal geändert - falls du es nicht bemerkt hast, s.o.
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Juni 01, 2015, 13:21:16
Hallo - ja hab ich übersehen - Danke. So richtig? Wenn ja, dann kommt
"Der Befehl oder die Aktion einfügen ist zurzeit nicht verfügbar" - aber nur beim gerade schreibgeschützten.

Private Sub Form_Current()

If Me.NewRecord Then Exit Sub

        Me.AllowEdits = Not Left(Kombinationsfeld28.Column(1), 1) = "9"
                 

End Sub


Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: MaggieMay am Juni 01, 2015, 14:41:00
Dann musst du halt den Schreibschutz vor dem Kopieren aufheben oder das Kopieren in dem Fall unterbinden.
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Juni 01, 2015, 14:54:12
Datensätze mit Kundenummer beginnend 9 sollen nicht geändert werden können - darum der Schreibschutz. Erst nach dem duplizieren soll das neu erstellte beliebig geändert werden können.
Welche Idee hättest du hierfür?
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Juni 01, 2015, 15:05:29
ich hab vor den Befehl "Me.AllowEdits = True" gesetzt - das funktioniert nun. Ich meld mich gleich wegen meinem nächsten Problem, das sich sicher gleich zeigt. Danke- LG
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: MaggieMay am Juni 01, 2015, 15:08:49
Also musst du vor dem Kopieren den evtl. vorhandenen Schreibschutz entfernen.

Aber ändern kannst du den Datensatz nicht, weil die Kundennummer weiterhin mit 9 beginnt, da musst du dir also noch etwas anderes ausdenken.
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Juni 01, 2015, 15:18:37
Hi - nein funktioniert perfekt. Dem neuen Datensatz kann ich nach dem duplizieren eine andere Kundennummer geben und weiter bearbeiten. Das einzige was mir nun noch fehlt ist wie ich den Schreibschutz per Funktionstaste aufheben könnte. Danke - LG
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: MaggieMay am Juni 01, 2015, 16:11:42
Wie du den Schreibschutz aufhebst weißt du doch, was genau ist dein Problem?

Übrigens ist der Schreibschutz direkt nach dem Kopieren noch gar nicht wieder gesetzt, du kannst also sofort ändern - aber auch nur dann.
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Juni 01, 2015, 17:25:01
Hallo - ich möchte zb mit der F3 Taste den Schreibschutz aufheben. Wie formuliere ich dies? LG
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Juni 02, 2015, 10:53:29
Hallo - was an dem Code zum entsperren mit der F3 Taste stimmt nicht? LG Jürgen

Private Sub Form_Current()

If Me.NewRecord Then Exit Sub

        Me.AllowEdits = Not Left(Kundennr.Column(1), 1) = "9"
       
        Application.OnKey "{F3}", "Me.AllowEdits = True"
End Sub
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: MaggieMay am Juni 02, 2015, 13:05:23
Hi,
Zitatwas an dem Code [...] stimmt nicht?
was sagt denn der Compiler dazu?! ;-)

Zur Belegung von Tasten mit Befehlen erstellt man ein Makro mit dem Namen "AutoKeys". Näheres dazu sollte sich in der Access-Hilfe finden lassen.
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Juni 02, 2015, 14:35:12
Hallo - sorry aber da ich mit Makros noch weniger Erfahrung habe als mit VBA muss ich für dich bescheuerte Fragen stellen. Ich habe in der Hilfe, in Google und Youtube gesucht bin aber für mich nicht wirklich fündig geworden, da ja das AllowEdits nirgends hinterlegt ist. Ich hoffe du hilfst mir hier weiter. Ich habe das was ich gemacht habe als Bild angehängt. Wie würde es richtig aussehen - Danke
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: MzKlMu am Juni 02, 2015, 15:04:30
Hallo,
das kannst Du Dir alles sparen, das ist relativ einfach auch ohne Makros und Autokey.
Hinterlege im Formularereignis "Bei Taste" folgenden Code:
Private Sub Form_KeyPress(KeyAscii As Integer)
    If KeyAscii = 25 Then '25 = F3
        Me.AllowEdits = True
        MsgBox "Datensatz ist freigegeben"
    End If
End Sub

Achtung, die Formulareigenschaft "Tastenvorschau" muss auf Ja stehen.
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Juni 02, 2015, 15:23:54
Hallo Klaus, wenn ich das einfach in die Zeile reinkopiere (Ausdrucksgenerator) dann bekomme ich die Meldung, dass das Objekt nicht gefunden wurde. Wenn ich Codegenerator nehme und dies einfüge bekomme ich keinen Fehler es tut sich aber nichts wenn ich die F3 Taste drücke. Was mache ich falsch? LG Jürgen
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: MzKlMu am Juni 02, 2015, 15:42:23
Hallo,
das ist VBA Code, der hat im Ausdrucksgenerator nichts zu suchen.
Ereignis wählen, Code reinkopieren.

Steht dann [Ereignisprozedur] in der Zeile ?
Wird die MsgBox angezeigt ?
Ist die Tastenvorschau des Formulars auf Ja gestellt ?`
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Juni 02, 2015, 15:51:48
Hallo - hab ein Bild angehängt. Es steht Ereignisprozedur drinnen. Die MSG Box wird nicht angezeigt - entsperrt auch nicht. Tastenvorschau ist auf Ja.
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: MaggieMay am Juni 02, 2015, 16:14:43
Hi,

der Code stimmt nicht, verwende besser die VBA-Konstante vbKeyF3.
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Juni 02, 2015, 16:15:55
es dürfte an der 25 liegen. ich habe mal 114 versucht - dann lässt es sich mit der Taste "R" entsperren. Was könnte es für F3 geben?
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Juni 02, 2015, 16:19:00
So? dann entsperrt er auf jede Taste die ich drücke.

Private Sub Form_KeyPress(KeyAscii As Integer)
    If vbKeyF3 Then
        Me.AllowEdits = True
        MsgBox "Datensatz ist freigegeben"
    End If
End Sub
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: MaggieMay am Juni 02, 2015, 16:21:37
Der Vergleich mit der Eingabe muss natürlich drin bleiben!
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Juni 02, 2015, 16:25:01
sorry das sagt mir jetzt nichts. könntest du mir bitte den code senden - danke
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Juni 02, 2015, 16:32:07
So wahrscheinlich - mit F3 geht's aber auch nicht - mit ESC zb schon - hättest du eine Idee?

Private Sub Form_KeyPress(KeyAscii As Integer)
    If KeyAscii = vbKeyF3 Then
        Me.AllowEdits = True
        MsgBox "Datensatz ist freigegeben"
    End If
End Sub
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: MaggieMay am Juni 02, 2015, 16:32:32
If KeyAscii = vbKeyF3
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Juni 02, 2015, 16:48:10
Hättest du noch eine Idee wieso es mit Escape geht und mit F3 nicht?
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: MzKlMu am Juni 02, 2015, 17:39:21
Hallo,
bei mir funktioniert das mit der 25.

Lasse Dir mal mit einer Msgbox KeyAscii ausgeben.

?vbKeyF3 im Direktbereich ergibt 114, aber auf die 114 abgefragt geht es nicht.
Bin im Moment ratlos, das habe ich schon öfter gemacht.
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Juni 02, 2015, 21:29:59
Hallo - ich werde es bei der ESC Taste belassen - ist mir schon lieber als die F3. Ich möchte mich recht herzlich für die Hilfestellung und die Geduld mit mir bei allen Beteiligten bedanken. Da nun (hoffentlich) alles abgearbeitet ist werde ich den Thread schließen. LG Jürgen
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: MaggieMay am Juni 03, 2015, 00:01:44
Sorry, wenn ich das noch anfüge, aber die Escape-Taste halte ich für ziemlich ungeeignet, da sie doch in der Regel für das Abbrechen eines Vorgangs bzw. einer Aktion eingesetzt wird.

Bei einem Test hat sich herausgestellt, dass das KeyPress-Ereignis durch F3 gar nicht ausgelöst wird.   ???

Funktionieren tut aber folgendes:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyF3 Then Me.AllowEdits = True
End Sub


BTW:
KeyAscii und KeyCode ist offensichtlich nicht dasselbe.
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: kingwambi am Juni 03, 2015, 07:22:39
Guten Morgen, schläfst du denn nie? Danke dass du dir (um die Zeit) noch gedanken darüber gemacht hast ;D!! Bist die Beste :-*! Ich habe es noch um die MSG Box erweitert - funktioniert perfekt. Wünsche dir noch einen wunderschönen Tag. LG Jürgen

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyF3 Then
    Me.AllowEdits = True
    MsgBox "Datensatz ist freigegeben"
    End If
End Sub
Titel: Re: Formular - Vorlage / Schreibschutz
Beitrag von: MaggieMay am Juni 03, 2015, 12:22:53
Hi,
Zitatschläfst du denn nie?
aber sicher doch, bspw. morgens um sieben! :-)