MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 13.07.2019, 14:28   #16
knobbi38
MOF User
MOF User
Standard

Hallo Pavel,

anbei eine kleines Beispiel, angepaßt für ein Sub-Formular in der Datenblattansicht. Bei einem "normalen" Formular würde man Application.Screen.ActiveDatasheet abfragen.

Gruß Ulrich
Angehängte Dateien
Dateityp: zip HideColumn.zip (30,6 KB, 1x aufgerufen)

Geändert von knobbi38 (13.07.2019 um 14:32 Uhr).
knobbi38 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.07.2019, 14:57   #17
evar46
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Pavel,
kann man von Dir ein Bild Deines Beziehungsfenster bekommen, bitte?
Ich arbeite gerade an einer Klassenarbeits-Access DB und würde mich freuen, wenn Du mir helfen würdest, indem Du mein Tabellenmodell kommentierst.
https://www.ms-office-forum.net/foru...27#post1937127
Es sind natürlich auch alle anderen eingeladen. Ich will aber nicht aufdringlich wirken.

Geändert von evar46 (13.07.2019 um 15:18 Uhr).
evar46 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.07.2019, 17:07   #18
pavstern
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

@ebs17, die Körperverletzung tut mir Leid. Die verpixelten Flächen sind aber Absicht. Das sind die Namen meiner Schüler Ich bin da etwas penibel beim Datenschutz. Bei 100KB Limit für Bilder kann man aber auch keine Wunder erwarten. Es ging mir nur um die Aufteilung des Formulars und eine grobe Idee der Funktion.

@markusxy, danke Dir!!! Probiere ich aus, wenn ich hier ne Weile Ruhe hab. Danke noch mal für die Mühe!
pavstern ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.07.2019, 17:10   #19
pavstern
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

@Ulrich, danke!!!
Ihr seid klasse! Komme wahrscheinlich erst heute Nacht dazu aber ich bin mir jetzt schon sicher, dass mich das weiterbringt.
pavstern ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.07.2019, 17:21   #20
gpswanderer
MOF Guru
MOF Guru
Standard

Hallo,

Zitat:

Und da ich im Vorfeld nicht entscheiden kann, zu welchen Beobachtungsschwerpunkten ich was notieren will, soll auch die Tabelle wachsen können.

das ist das eigentliche Dilemma an der Geschichte.
Das wäre ein typischer Fall einer n:m Beziehung zur Erfassung der Notizen zum Beobachtungsschwerpunkt. Dann würde diese ganze Dynamik ersatzlos entfallen.

Wenn durch neue Daten Tabellenspalten hinzugefügt werden müssen, hat man ein falsches Datenmodell angelegt.
Dass der Tabellenaufbau falsch ist, kann man auch an den 4 Feldern für Betragen, Mitarbeit, Fleiß und Ordnung erkennen.

Ein Bild der Beziehungen würde mich auch mal interessieren.

__________________

Gruß
Klaus
Office2016, Win10

Geändert von gpswanderer (13.07.2019 um 17:36 Uhr).
gpswanderer ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.07.2019, 19:37   #21
knobbi38
MOF User
MOF User
Standard

Hallo Pavel,
noch ein Hinweis auf eine Seite, die eventuell für dein Vorhaben von Nutzen sein könnte (wobei es mehr um das Prinzip als solches geht):
https://team-moeller.de/?Add-Ins:TM-...assenGenerator

Ulrich
knobbi38 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.07.2019, 02:16   #22
pavstern
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Geschafft!
Ulrich, tut mir Leid, dass du es mir noch mal vorkauen musstest. Eigentlich hätte mir den Hinweis

Zitat:

an das "DataSheet", also ein Formular in der Datenblattansicht, kommt man nur über Screen.ActiveDatasheet heran.

reichen müssen. Sobald ich Zeit hatte, richtig darüber nachzudenken, dann hats auch schon geklappt. Das hat mir also am Ende gefehlt, um die leeren Spalten in der Datenblattansich ausblenden zu können.

Falls jemand Lust hat, hier ist mein Code mit paar Erklärungen
Es geht also darum,

Zitat:

eine fixe Anzahl von Steuerelementen ... dynamisch an ein Feld der Datensatzquelle binden. Danach ... die nicht genutzten Steuerelemente ausblenden.

Ulrichs Idee

Code:

Public Function SteuerelementeZuweisen()
    Dim rs As DAO.Recordset, i As Integer
    Dim cContTextBox, cContLabel As Control
    Dim Spaltenname, TextfeldName, BezFeldName As String
    
         
        Set rs = CurrentDb.OpenRecordset(Me.RecordSource)   'die Datensatzquelle wird während der Bedienung des Formulars
                                                            'weiter oben nach Unterrichtsfach und Klasse gefiltert,
                                                            'damit nur die relevanten Datensätze und Felder in der Übersicht auftauchen
        
        For i = 3 To 10                     'ich fange an bei 3 zu zählen, da davor unveränderliche Daten in der Abfrage sind,
                                            'die ich ganz normal ausgebe bzw. überspringe
            
            TextfeldName = "Textfeld" & i   'im Detailbereich liegen (momentan) 7 leere Textfelder
                                            'mit den Namen Textfeld3 bis Textfeld10
            BezFeldName = "BezFeld" & i     '...und 7 Bezeichnungsfelder
            
            Set cContTextBox = Screen.ActiveDatasheet.Controls(TextfeldName) 'Screen.ActiveDatasheet. deswegen,
                                            'weil es Änderungen im Datenblatt bewirken soll. Danke Ulrich!
            Set cContLabel = Screen.ActiveDatasheet.Controls(BezFeldName)
            
            If i < rs.Fields.Count Then     'solange die Anzahl der Spalten in der Datensatzquelle nicht überschritten ist
                                            'werden den leeren Textfeldern Spalten aus der Datensatzquelle zugewiesen
                                            'und sichtbar gemacht
                Spaltenname = rs.Fields(i).Name
                cContTextBox.ControlSource = Spaltenname
                cContTextBox.ColumnHidden = 0
                        
                cContLabel.Caption = Spaltenname
                        
            Else                            'der Rest von den 7 leeren Textfeldern wird ausgeblendet.
                cContTextBox.ColumnHidden = -1
            End If
        Next
        
End Function
Ausgelöst wird es beim Laden des Formulars und beim Ändern des Unterrichtsfaches.

Also noch mal vielen Dank!!!

Da die ganze Idee hier recht viel Anstoß gefunden hat, liefere ich auf Nachfrage noch paar Infos für Interessierte nach.
Anbei meine Beziehungsübersicht. Die Inhalte einiger Tabellen sind noch Platzhalter.

@gpswanderer und andere, ich verstehe eure Idee einer n:m (bzw. 1:n)-Beziehung. Dadurch würde ich allerdings auf den Primärschlüssel in den einzelnen dia_Tabellen (wo die Beobachtungsnotizen gespeichert werden) verzichten müssen. Ich sehe den Reiz, dass ich so pro Schüler mehrere Notizen in jedem Beobachtungsschwerpunkt speichern könnte. Ich brauche aber in der Regel EINEN Iststand pro Kind und Beobachtungsschwerpunkt. Außerdem lebt die ganze Idee davon, dass ich im Sitzplan (siehe Screenshot) mehrere Schüler markiere und ihnen mit wenigen Klicks einen gewissen (ihnen gemeinsamen) Kommentar in die Beobachtungsspalte reinschreibe. Bei einer 1:n-Bezieung würde der Kommentar mehrfach pro Schüler in der Tabelle landen, da ich es an die SchülerID knüpfe. Mir geht es also nicht darum, viele Notizen pro Schwerpunkt zu sammeln, sondern die Beobachtung zum jew. Schwerpunkt möglichst schnell aktuell zu halten.
Und wenn ich doch mehrere Angaben festhalten will, kann ich sie mit einem Trennstrich und ggf. Datum versehen in einer "Zelle" speichern und später bspw. per Array auswerten.

Ich würde die Beziehungsstruktur also nicht als falsch bezeichnen, sie bildet einfach das ab, was ich brauche.
Oder sehe ich das falsch?

@evar46, ich bin mir nicht sicher, dass dir meine Beziehungsübersicht hilft, da sich unsere Anliegen doch recht unterscheiden. Aber wer weiß. Ich bleibe auch gerne im Kontakt, vielleicht können wir uns unterstützen.
Angehängte Grafiken
Dateityp: png Beziehungsplan.png (58,0 KB, 16x aufgerufen)
Dateityp: png formDiagnostik.png (59,2 KB, 6x aufgerufen)
pavstern ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.07.2019, 09:26   #23
markusxy
MOF Meister
MOF Meister
Standard

Zitat: von pavstern Beitrag anzeigen

Da die ganze Idee hier recht viel Anstoß gefunden hat, liefere ich auf Nachfrage noch paar Infos für Interessierte nach.

Das ist aber erfreulich.
Richtig und falsch bei Datenmodellen ist recht schwierig und ich halte wenig davon Datenmodelle für andere zu erstellen.
Bei mir ist immer der erste Schritt mich mit dem nötigen Output und den Usern zu beschäftigen, bevor ich mich ans Datenmodell mache.

Für den Programmierer geht es aber auch oft darum, wie nachträgliche Erweiterungen umgesetzt werden.

Wenn ich dann sehe, dass du 7 identische Tabellen hast (die könntest du ja locker auf einen zusammenlegen. Nur ein Spalte mehr für den Bezug zum Fach/Thema), dann weiß ich auch, dass ich im einen Fall 7 Tabellen oder eine Tabelle anpassen muss. Dass geht dann weiter über die abhängigen Objekte usw.
Wenn ich aber nur in einer Tabelle ein Anpassung benötige, dann ist dein Modell möglicherweise besser.
Aber es spielt ja keine Rolle, die Arbeit hast ja eh du.
markusxy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.07.2019, 10:09   #24
gpswanderer
MOF Guru
MOF Guru
Standard

Hallo,
da solltest Du aber noch mal darüber nachdenken.

Zitat:

ich verstehe eure Idee einer n:m (bzw. 1:n)-Beziehung.

Eine n:m Beziehung sind zwei 1:n Beziehungen, da geht auch kein Primärschlüssel verloren.

Zitat:

Bei einer 1:n-Bezieung würde der Kommentar mehrfach pro Schüler in der Tabelle landen, da ich es an die SchülerID knüpfe.

Auch diese Annahme ist falsch. In einer n:m Tabelle kommt ja noch ein weiteres Schlüsselfeld (zur Schwerpunkttabelle) und damit gibt es je Schüler und Schwerpunkt einen Datensatz.
Die dia Tabellen gehören in eine Tabelle zusammengefasst. Für die Titel der dia Tabellen ist eine weitere Tabelle erforderlich die die dia Tabellen mit dem Schüler verbindet. Das wird dann die besagte n:m Tabelle.
Die Beziehung zwischen den jetzigen dia Tabelle und dem Schüler kann auch nicht stimmen. Das kann doch keine 1:1 Beziehung sein, oder hat der Schüler nur eine einzige Note im Betragen ?

Zitat:

Und wenn ich doch mehrere Angaben festhalten will, kann ich sie mit einem Trennstrich und ggf. Datum versehen in einer "Zelle" speichern und später bspw. per Array auswerten.

Das ist in einer Datenbank ein No-Go und verstößt bereits gegen die 1.Normalform (atomare Inhalte).

Die ganze Struktur enthält sehr viele handwerkliche Fehler. Du solltest Dich mit den Grundlagen zum Aufbau einer relationalen Datenbank beschäftigen. Du solltest Dir auch mal den Entwurf von evar46 ansehen, das scheint mir auch für Deinen Fall geeignet. Und da kannst Du auch einige (3 Stück) n:m Beziehungen sehen.

Auch die beiden anderen Tabellen bedürfen der Überarbeitung.
Da fehlen noch Tabellen, z.B. Medikamente/Alergien, denn auch da gilt, nicht mehrere Werte in einem Feld. Und schon gar nicht Medikamente und Alergien vermischt.

Mal noch eine Frage: In welcher/welchen Tabelle(n) wolltest Du jetzt Felder per Klick hinzufügen ?

Siehe hierzu:
https://www.hdm-stuttgart.de/~riekert/lehre/db-kelz/
und
https://www.access-tutorial.de/

Und nicht zuletzt:
Die Feldnamen mit den vielen Leer und Sonderzeichen sind eine Katastrophe.
Du wirst gezwungen sein, für jeden Feldnamen den Du verwendest (egal wo, Abfragen, Formularbezüge, VBA usw.) ein [] Klammerpaar verwenden zu müssen. Das wird Dich noch ziemlich nerven.

__________________

Gruß
Klaus
Office2016, Win10

Geändert von gpswanderer (14.07.2019 um 10:28 Uhr).
gpswanderer ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.07.2019, 11:27   #25
knobbi38
MOF User
MOF User
Standard

Hallo Pavel,

kleine Korrektur für die Dim-Anweisungen:
Code:

Public Function SteuerelementeZuweisen()
    Dim rs As DAO.Recordset
    Dim cContTextBox as Control, cContLabel As Control
    Dim Spaltenname as String, TextfeldName as String
    Dim BezFeldName As String
    Dim i As Long
    ...
Was deine Tabellen betrifft, solltest du auf jeden Fall den Rat beherzigen, Leerzeichen und Sonderzeichen aus den Feldnamen zu entfernen. Ich persönlich verzichte normalerweise auch auf den Unterstrich und verwende "CamelCase" für die Bezeichner. Ausnahme: Bezeichner, die dynamisch zusammengesetzt werden und der Unterstrich als "Trennzeichen" dient.

Ein andere Sache ist die Verwendung einer UUID als PrimaryKey. Da würde ich doch die gängigere Variante mit einem Long bevorzugen. Die UUID ist nämlich manchmal recht "sperrig" zu handhaben und bringt in diesem Fall keine Vorteile.

Gruß Ulrich
knobbi38 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.07.2019, 23:45   #26
pavstern
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Ulrich,

wie immer, vielen Dank!
Das mit den Leerzeichen in Tabellenbezeichnungen und dem Primärschlüssel habe ich leider so geerbt. Die kommen so aus unserer Schuldatenbank, aus der ich meine Stammdaten habe. Für den späteren Datenupdate (wenn neue Schüler kommen, wenn ich mir aktualisierte Daten hole etc.) wollte ich die Bezeichnungen lieber so lassen.

Die Dim-Schreibweise wird geändert.

Pavel
pavstern ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.07.2019, 04:20   #27
pavstern
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo gpswanderer,

danke dir für dein umfangreiches Kommentar.
Nach dem ich dein (entschuldige) "Rumgemotze" von wegen

Zitat:

handwerkliche Fehler

etc. runtergeschluckt hab (bin kein Datenbankprogrammierer sondern Grundschullehrer und suche nur nach einer Alternative zum Stift und tausenden von Zetteln)
hab ich mir noch mal die n:m-Beziehungen angeschaut und möglicherweise endlich kapiert (siehe Bild).

Ok, du hast schon Recht. Das hat ja was. Ich brauche die Beobachtungskriterien nicht spaltenweise ausgeben, sondern habe sie zeilenweise in der Spalte Kriterien gespeichert. Dann ist es sicherlich einfacher per Formular weitere Beobachtungskriterien zu erfinden und die Übersicht der Beobachtungen muss nicht dynamisch erstellt werden. Richtig?

Es bleibt wahrscheinlich dabei, dass ich es im Prinzip in 1:1-Beiziehung nutze, da ich in aller Regel nur einen immer wieder aktualisierten Wert pro Beobachtungskriterium brauche aber wenn ich doch mal mehrere Einträge machen will, dann ist es ja möglich und einfacher auswertbar.

Nun ja, ich danke euch allen!
Ich habe ein/zwei Stündchen Schlaf, einen weiteren Tag mit den Kindern und dann noch viel Arbeit vor mir

Pavel
Angehängte Grafiken
Dateityp: png Beobachtung.png (8,5 KB, 7x aufgerufen)
pavstern ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.07.2019, 08:10   #28
ebs17
MOF Guru
MOF Guru
Standard

Zitat:

da ich in aller Regel nur einen immer wieder aktualisierten Wert pro Beobachtungskriterium brauche

Das entspricht der Logik eines Wegwerfzettels.
Wenn man die Datenbank als Datenbank gebraucht, können nicht nur, sondern es werden garantiert mehrere Einträge über Zeiträume wie Schuljahr, Monat, Woche, Tag auftreten.
Daher wird dann auch die Thematik zeitliche Zuordnung und zuvorige Vergabe eines jeweiligen Zeitstempels eine größere Bedeutung erlangen.

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}:{11}:{12} <= geklammerte Zahlen sind Einzelthemen
Dein Dankeschön: DBWiki => Spende

Geändert von ebs17 (15.07.2019 um 08:23 Uhr).
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:34 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.