Hallo zusammen!
Ich bin jetzt richtig auf den Geschmack der Datenbankerstellung gekommen. ;)
Hier soll für mein Hobby (Naturbrut v. Brahma/Amrocks) eine kleine DB für meine Nachzuchterfolge entstehen.
Folgend nur Beispieldaten zur Klärung des Vorhabens bzw. meines Problems
Tabellen:
tbl_Geschlecht
tbl_Geflügel
tbl_Nachzucht
Ich habe schon etliche Forenbeiträge zu ähnlichen Themen gelesen und bin leider nicht wirklich weitergekommen. Stichwort - virtuelle Tabelle_1
Im gezeigten Versuch habe ich den PK tbl_Geflügel auf die beiden FK in tbl_Nachzucht bezogen.
Leider funktioniert das so nicht.
Frage: Ist das so überhaupt möglich?
Alternative:
Ich erstelle für die Elterntiere halt zwei Tabelle und verweise dann jeweils den PK von der tbl_Hähne und tbl_Hennen auf die jeweiligen FK in der tbl_Nachzucht.
Gruß Hans
Hallo,
ZitatFrage: Ist das so überhaupt möglich?
Ja, das ist möglich und auch richtig so. Es gibt keine Alternative.
Bild 3 ist auch korrekt so.
ZitatLeider funktioniert das so nicht.
was soll man mit einer solchen Aussage anfangen ?
Wo hast Du jetzt Probleme bzw. was funktioniert nicht ?
Zitatwas soll man mit einer solchen Aussage anfangen ?
Wo hast Du jetzt Probleme bzw. was funktioniert nicht ?
Wie man beim Bild Gefluegel sieht, werden die Nachzuchten nicht angezeigt. Das ist mein Problem!
Sollte da nicht im Unterdatenblatt was angezeigt werden?
Hallo,
was soll denn da angezeigt werden bzw. was willst Du da sehen ?
Das ist eine Tabelle die einfach alle Geflügel enthält.
Die Tabelle mit dem Geflügel hat doch mit der virtuellen Tabelle nichts zu tun.
Wo kommt denn da das Feld IDNachzucht her (auf dem Bild) ?
Das darf es da nicht geben.
Hi Klaus,
na ich will da eigentlich die Ausgabe für die Nachzucht sehen.
Die Verweise sind doch so angelegt und auch das Untertabellenblatt ist entsprechend angelegt.
Ich dachte, ich sehe dort auf anhieb die Nachzucht von dem Hahn bzw der Henne..
Gruß Hans
Hallo,
das geht nur über die Tabelle mit den Nachzuchten.
Ich würde den Tabellenaufbau anders gestalten. Leider ist (hoffentlich nur temporär) Allen Brownes Webseite zur Zeit nicht erreichbar - deshalb hier ein Link über das Internetarchiv mit Beispiel Pferdezucht (https://web.archive.org/web/20080615150636/http://allenbrowne.com:80/ser-06.html).
Hallo!
Danke Lachtaube, interessanter Ansatz. Werde wohl vorerst bei Klaus seiner Variante bleiben.
Zitatdas geht nur über die Tabelle mit den Nachzuchten.
OK, das verstehe ich dann.
Nun habe ich aber bei meiner Abfrage für die Nachzuchten das nächste Problem.
Mir wird leider nur ein Datensatz angezeigt, obwohl ich zwei Nachkommen eingegeben habe.
Wo habe ich denn nun wieder einen Fehler eingebaut?
Im Anhang sind die Bilder.
Hallo,
das Geschlecht in der Nachzuchtabelle muss raus, das führt auch zum Fehler. Das Feld macht in dieser Tabelle auch keinen Sinn, denn das Geschlecht ist ja in der Geflügeltabelle bereits definiert. Aber jetzt keine Beziehung des Geschlechts zur virtuellen Tabelle anlegen, das wäre auch überflüssig.
Ganz großen Dank!! Es funktioniert wunderbar....
Gruß Hans
Erweiterung der BD
Nabend!
Jetzt möchte ich gerne die Datenbank erweitern und stehe wieder vor einer gedanklichen Blockade.
Es kommt eine neue Tabelle für Tierarztuntersuchungen dazu.
tbl_Untersuchung
Datum
TierArzt
Grund
Kosten
Mein Problem besteht nun darin, die Tabelle richtig zu verknüpfen bzw die Beziehungen zu definieren.
Die Eltertiere als auch die Nachkömmlinge sollen in der tbl_Untersuchung erfasst werden können.
Gruß Hans
Hallo,
auch die Nachkömmlinge sind in der Tabelle "Geflügel" zu erfassen.
Die Untersuchungen sind dann mit der Geflügeltabelle n:1 zu verknüpfen.
Ok, ich werde mich morgen weiter ans Werk machen und berichten.
Vielen Dank und gute Nacht an alle!!
Guten Morgen Klaus!
In meiner Tabellenstruktur gibt es aber für die Elterntiere und die Nachtkömmlinge eine eigene Tabelle.
Wie stelle ich das nun an, dass ich alle in eine Tabelle bekomme ohne meine bisherige Struktur zu zerstören.
In der jetzigen Form kann ich ja nicht auf die beiden Tabellen Geflügel und Nachkömmlinge verweisen, da sonst z.B. bei einer Untersuchung ID die gleiche Geflügel ID und Nachkömmlinge ID auftreten kann.
Das Problem würde auch auftreten wenn ich meine DB um die Hasenzucht erweitere.
Gruß Hans
Wie willst Du denn die nächste Generation erfassen, ohne die Nachzucht in die Tiertabelle zu übertragen? Jedes Tier hat genau eine (ggf. unbekannte) Mutter und einen (ggf. unbekannten) Vater, ein Geschlechtsmerkmal, ein (ggf. unbekanntes) Geburtsdatum, ein (ggf. unbekanntes) Sterbedatum und vielleicht bei einer Zucht auch ein Anschaffungs- und ein Abgabedatum, bei mehreren Zuchten ein Verweis auf eine Tierart (ggf. über eine Rasse ausgewiesen), vielleicht noch eine einzigartige Markierung (Beringung, Earmark, etc.), uva. andere prägnante Merkmale, wie Farbgebung, Fell-Muster, etc.. Für alle Tiere gilt jedoch, dass jedes Elternteil jeweils einen Datensatz in der Tiertabelle darstellt.
Analog übertragen auf andere Formen hätte man gleiche Strukturen bei der Darstellung einer Firmen-Hierachie (allerdings mit nur einem möglichen Vorgesetzten [Elternteil]) vorliegen. Zu oberst kommt der Chef (ohne Vorgesetzten); Bereichsleiter weisen den Chef als Vorgesetzten; Abteilungsleiter jeweils ihren Bereichsleiter, Meister/Gruppenleiter ihren Abteilungsleiter, Mitarbeiter ihren Meister/Gruppenleiter aus.
Hallo,
ZitatIn meiner Tabellenstruktur gibt es aber für die Elterntiere und die Nachtkömmlinge eine eigene Tabelle.
das ist falsch. Alle Tiere kommen in eine Tabelle. Das mit 2 Tabellen kannst Du nicht lassen.
Die Nachzuchten werden ja dann auch zu Geflügel, das gibt mit 2 Tabellen ein heilloses Durcheinander.
Siehe Bild.
Kannst Du bitte die DB mal mit einigen Spieldaten hier hochladen.
Hallo!
ZitatDas mit 2 Tabellen kannst Du nicht lassen.
Ja, mit den Tabellen hab ich so meine Schwierigkeiten.
ZitatDie Nachzuchten werden ja dann auch zu Geflügel, das gibt mit 2 Tabellen ein heilloses Durcheinander.
Muss ich dann die tbl_Nachzucht jetzt löschen oder bleibt sie erhalten zur Eingabe der Elterntiere?
Ich lade die Test.mdb mal hoch.
Gruß Hans
Hallo,
ZitatMuss ich dann die tbl_Nachzucht jetzt löschen oder bleibt sie erhalten zur Eingabe der Elterntiere?
natürlich muss die erhalten bleiben. Ich habe sie ja auch nicht durchgestrichen. Über diese Tabelle kannst die komplette Zuchthierarchie abbilden und nachvollziehen. Das ist neben der Geflügeltabelle die wichtigste Tabelle.
Zum Beispiel:
Auch die Hasen und das Geflügel gehören in eine Tabelle. Da Du ohnehin eine Tabelle für die Tierart hast, kannst Du ja unterscheiden. Wenn Du getrennte Tabellen hast, macht eine Tabelle für die Tierart keinen Sinn.
Und statt Hasenname und Geflügelname schreibst Du Tiername.
Baue das mal um und lade dann noch mal hoch.
PS:
Verwende keine Umlaute in den Feldnamen (Geflügel > Gefluegel).
Wie schon zuvor erwähnt, gehören alle Tiere in eine Tabelle (analog zu Allen Brownes Pferdezucht - jedoch zusätzlich noch mit dem Tierart-Attribut ausgestattet). Ich würde persönlich auch auf Banalitäten wie eine Geschlechtstabelle verzichten, weil die 3 kurzen Ausprägungen (w, m, n) schließlich für alle Ewigkeit in Stein gemeißelt sind und durch eine einfache Gültigkeitsregel gut gegen Fehleintragungen abgesichert werden können.
PS: es fehlt natürlich ein Unterscheidungsmerkmal, denn die Tiere (speziell Jungtiere) werden kaum auf ihren Namen - wenn überhaupt - hören. Geburtdatum, Sterbedatum, etc. muss man auch noch nachtragen.
Ich habe meine Struktur jetzt nach euren Angaben und meinem Verständnis umgestellt und finde es natürlich wesentlich übersichtlicher(logischer).
Nur mit den Nachzuchten habe ich noch meine Schwierigkeiten.
Muss ich jetzt in der tbl_Tiere einen FK von der tbl_Nachzucht setzen um zu wissen welches Tier welche Eltern hat?
LachtaubeZitates fehlt natürlich ein Unterscheidungsmerkmal
Hier handelt es sich nur um eine Beispiel DB um das ganze Konstrukt zu verstehen. Natürlich werden noch einige Attribute dazukommen wenn der Bauplan erstmal stimmt.
Gruß Hans
Die Nachzuchttabelle beinhaltet wenig Aussagekraft, weil daraus nicht hervorgeht, wer, wann durch welche Eltern geboren wurde, sondern allerhöchstens, dass ein Paar eine Geburt (und dann noch ohne Datum) hatte.
ZitatDie Nachzuchttabelle beinhaltet wenig Aussagekraft, weil daraus nicht hervorgeht, wer, wann durch welche Eltern geboren wurde
Das stimmt nicht ganz so. In dieser Tabelle sind genau die ID Daten der Eltern erfasst.
z.B. ID_Nachkömmling -> ID_Vater -> ID Mutter
Zitatund dann noch ohne Datum
Ich habe doch oben geschrieben, das dieses Konstrukt zum verstehen der ganzen Sache dient. Ein Feld z.B für Geburtsdatum kommt natürlich noch hinzu wenn alles sauber erstellt ist.
Mir geht es erstmal um eine funktionierende Tabellenstruktur.
Das hat mir jetzt nicht geholfen!
Wie bekomme ich die Nachzuchten in die Tabelle Tiere mit einer sauberen Verknüpfung?
Oder soll ich einfach die tbl_Tiere um die Felder ID_Mutter u ID_Vater ergänzen und dort die ID's der Elterntiere eintragen.
Gruß Hans
Hallo,
@Lachtaube
ich kann Dir auch nicht ganz folgen (was natürlich auch an mir liegen kann).
Wo siehst Du den Vorteil des Aufbaus mit 3 Tiertabellen (2 davon virtuell) ?
Wenn ich jedes Tier das geboren wurde in der Tiertabelle erfasse (mit Geburtsdatum) kann ich doch in einem Hafo das Tier anzeigen und im Ufo über Kombis die beiden Elterntiere auswählen und dann auch anzeigen. Der in #19 skizzierte Aufbau braucht in der Nachzuchttabelle kein Geburtsdatum, das steht ja in der Tiertabelle schon drin.
Klaus, In der vorliegenden Form fehlen doch die ganzen Iformationen zum Tier - nur die Elterninfos wären vorhanden. Selbst wenn die Infos vorlägen, müssten sie doch in die Tiertabelle übertragen werden, damit sich auch Nachzuchttiere paaren ließen.
Nimm jedoch die Nachzuchttabelle und verschiebe ihre Felder gedanklich in die Tiertabelle - dann liegen alle Infos zu einem Tier, die ja auch alle von der selben Natur sind, in einer Tabelle vor.
Diese Datenform kann selbstverständlich genauso in Unterformularen verwendet werden - jeweils ein Kombifeld für jedes Elternteil sollte aber auch genügen, es sei denn, dass ich die Eltern nachtragen muss (wenn man auf NotInList im Kombifeld verzichten will).
Hallo,
ja jetzt habe ich verstanden.
@Hans
folge dem Vorschlag von Lachtaube aus #18, nur so geht es. Aus dem jetzigen Aufbau kann man nur die Elterntiere bestimmen, aber nicht von welchem Tier das die Eltern sind.
Hallo Klaus und Lachtaube!
Ich versuche es mal nach #18 zu bauen aber so richtig habe ich es noch nicht verstanden..
Hoffentlich geht mir beim experimentieren ein Licht auf.
Ich werde berichten!!
Gruß Hans
Da sind wir wieder!
Ich muss ehrlich gestehen, dass ich dieses Konstrukt noch nicht zu 100% verstehe aber es klappt.
An dieser Stelle Danke!
Jetzt habe ich ein Problen mit der Abfrage für alle Tiere, in der mir leider nur die Nachzuchten angezeigt werden. Ich möchte aber alle Tiere angezeigt bekommen inkl Elternnamen und auch die Tiere von denen die Eltern unbekannt sind.
Also in denen die Felder leer sind.
Gibt es da eine Möglichkeit?
Nachtrag:
Hab jetzt zwei Tiereinträge mit Mutter k.A. und Vater k.A. vorgenommen und in der Abfrage entsprechend gefiltert bei den Nachzuchten mit Nicht Wie "Mutter k.A.'.
Wäre das so auch eine saubere Lösung?
Nachtrag 2
Um Millisekunden zu spät gelesen @Klaus.. Klappt und zeigt alles an.
Danke Danke
Gruß Hans und DB liegt bei...
Hallo,
klicke die Beziehungslinien zu den beiden virtuellen Tabellen doppelt und stelle Beziehungstyp 3 ein.
Letztes Problem für heute!
Habe ein Formular zur Eingabe der Tiere erstellt frm_Tiere. Funktioniert auch so weit.
Aus den Feldern IDTierArt und Tier_Mutter_F habe ich cbo Boxen gemacht und möchte mir die Eingabe erleichtern.
Es sollen mir nun auch nur alle weiblichen Tiere der entsprechenden TierArt gezeigt werden und da liegt das Problem. Es werden mir nur alle weiblichen Tiere der TierArt Geflügel angezeigt.
Die Filterung für das Feld IDTierArt_F habe ich über Kriterien -> Aufbauen erstellt.
Wie [Formulare]![frm_Tiere]![cboIDTierArt]
Ich verstehe einfach nicht warum es nicht funktioniert. Gebe ich dort den Wert händisch ein funktioniert die Filterung.
DB ist dabei
Gruß Hans und gute Nacht für heute!
Hallo,
Me.Requery aktualisiert das Formular, aber nicht das Kombi, das Kombi muss gezielt aktualisiert werden.
Außerdem muss die Aktualisierung des Kombis auch in das Formularereignis "Beim Anzeigen", damit das Kombi an die aktuelle Anzeige angepasst wird.
Ändere wie folgt:
Private Sub cboIDTierArt_AfterUpdate()
Me.Tier_Mutter_F.Requery
End Sub
Private Sub Form_Current()
Me.Tier_Mutter_F.Requery
End Sub
Guten Morgen!
Wieder ein großes Dankeschön an @Klaus!
Ich habe mal Dein Beispiel etwas überarbeitet und hoffe, dass es in die richtige Richtung geht.
Hallo Lachtaube!
Auch dir ein ganz großes Dankeschön für deine Hilfe.
Das hilft mir sehr bei meinem Vorhaben..
PS: der geschriebene Code ist mir echt ne Nummer zu hoch, da bin ich noch lange nicht
Gruß Hans
Hallo zusammen!
Ich bastel trotz der super Vorlage von @Lachtaube an meiner eigenen Version weiter herum.
Möchte den aktuellen Stand mal vorstellen und natürlich ein kleines Problemchen äußern.
Bitte nicht auf das Design achten, das will ich alles später hübsch machen.
Es dreht sich hier wieder um das NachzuchtFormular. Bin mit meiner Leistung bis hier erstmal zufrieden und es funktioniert bis auf eine Kleinigkeit.
Funktion:
Es werden alle Kinder angezeit -> funktioniert
kann mit den oberen Kombis nach belieben filtern -> funktioniert fast (siehe Bild)
bei neuem Datensatz werden nur Tiere nach Geschlecht und der Rasse angezeigt -> funktioniert
das alles mit eurer Hilfe .... :D :D :D Danke
Gruß Hans und DB liegt bei falls Bedarf besteht
Hallo,
so einfach ist das nicht. Du filterst ja mit dem Joker (*) und Wie (Like). Das heißt, wenn Du nach 2 filterst, wird auch 12 gefunden oder 21 oder 222 oder 112 usw. also egal wo die 2 in der Zahl steht wird der Datensatz angezeigt bzw. gefunden. Bei einer einstelligen Zahl/Zeichen geht das, aber mit mehr nicht.
Das Formular muss auf einer ungefilterten Abfrage beruhen (also keine Formularbezüge) und je nach Auswahl der Kombis muss der Filter per VBA zusammengesetzt werden und dann angewendet.
Das ist deutlich mehr Aufwand.
Am einfachsten ist es, wenn man alle Daten anzeigt, dann in den Kombis auswählt was man sehen will und dann mit einem Button "Filtern" den Filter anwendet.
Du hast jetzt 4 Kombis im Formularkopf, somit ergeben sich 4²=16 Filterkombinationen, die Du einzeln zusammenbauen musst.
Hallo,
bin wieder zurück aus dem Wochenende. Danke für deine Antwort @Klaus.
Ich werde mich mal an den VBA-Basierten Filter heranwagen und berichten.
Viele Grüße Hans
Nachtrag
Habe mich an die Filterung per VBA gertraut und NAJA, ich weiß mal wieder nicht weiter.
Die Filterung funktioniert und gibt auch nur die ID 2 anstatt 12 aus. Leider funktioniert danach der LöschButton und alle anderen cbo's nicht mehr.
Müsste ich jetzt für jedes cbo ein VBA Filter bauen wie für das cbo_searchMutter?
DB wieder dabei
Gruß Hans
Diese Problem recht simple gelöst.
Private Sub LoeschButton_Click()
Dim AllShow As String
AllShow = "SELECT * from qry_Nachzucht"
Me.RecordSource = AllShow
End Sub
Damit wird mir wieder alles angezeigt.
Gruß Hans
Hallo,
so auch: ;D
Private Sub LoeschButton_Click()
Me.RecordSource = "SELECT * from qry_Nachzucht"
End Sub
Hallo!!
Mit dem Formular für Nachwuchs bin ich so gut wie fertig und recht zufrieden. Nun stehe ich beim Bericht für das Formular vor einem neuen Problem und weiß nicht weiter.
Im erstellen Bericht habe ich Textfelder erstellt und mit den berechneten Werten (Bild 1) aus dem Formular gefüllt.
Das habe ich über VBA gemacht (Bild 2) , dass funktioniert aber nur wenn ich eines der Felder im Bericht anklicke. (Bild 4).
Ansonsten wird mir leider nix angezeigt. (Bild 3).
Habe schon mit Me.Requery probiert aber leider ohne Erfolg. Hat jemand eine Idee woran es liegen könnte??
Gruß Hans
Nachtrag:
Ich setze das Thema auf gelöst und stelle die letzte Frage nochmal unter einem neuen Beitrag. Hat ja auch eigentlich nix mit diesem Thema zu tun.