Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Formular - Vorlage / Schreibschutz

Begonnen von kingwambi, Mai 29, 2015, 09:09:10

⏪ vorheriges - nächstes ⏩

kingwambi

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?

MzKlMu

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 ?
Gruß Klaus

kingwambi

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

MzKlMu

#3
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.
Gruß Klaus

kingwambi

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

MaggieMay

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.
Freundliche Grüße
MaggieMay

MzKlMu

#6
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
Gruß Klaus

kingwambi

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.

kingwambi

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

kingwambi

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

DF6GL

#10
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
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

MaggieMay

#11
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"
Freundliche Grüße
MaggieMay

kingwambi

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

kingwambi

Sorry hab den Rest nicht gesehen - werde es sofort versuchen.

kingwambi

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