Januar 25, 2021, 08:14:10

Neuigkeiten:

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


Formular Gruppenmaßnahme

Begonnen von Kubus0815, Dezember 10, 2020, 10:41:15

⏪ vorheriges - nächstes ⏩

Kubus0815

Hallo zusammen.
Ich arbeite an einer Rinderdatenbank.
In dieser befinden sich zur Zeit 45 Rinder eindeutig erkennbar durch Ihre Ohrmarkennummer.
Nun würde ich gern 10 Rinder von Stall A nach Stall B umziehen.
Die Standorte sollen nachvollziehbar bleiben, d.h. wo die Tiere in der Vergangenheit wie lang waren.
Deshalb würde ich pro Tier/Umzug eine Zeile in tblStall schreiben.
Ich möchte nun beim Umzug die 10 Tiere per Kontrollkästchen markieren und für alle markierte Tiere in der tblStall einen Eintrag mit dem neuen Standort samt Datum und Ohrmarkennummer schreiben lassen.
Gibts da eine Möglichkeit?

DF6GL

Hallo,


na klar doch...

Zeige aber erst mal den Screenshot des Beziehungsfensters mit allen Tabellen und mit allen erkennbaren Tabellenfeldern

Kubus0815

Dezember 10, 2020, 13:02:02 #2 Letzte Bearbeitung: Dezember 10, 2020, 13:09:59 von Kubus0815
Servus Franz.

Da wohnen wir ja gar nicht soweit auseinander, ich bin 30min von Füssen entfernt.
Hier der Screenshot ich hoffe es ist alles drauf:

Die tblStall heißt jetzt tblStandortAktuell
Viele Grüße
Thomas

DF6GL

Hallo,

naja, ich bin am Nordwestende des BS zuhause....

-- Vermeide Sonder- und Leerzeichen in Namen! 
-- Benenne tblBestand in tblTiere um.
-- Benenne tblStandOrtAktuell in tblTierStandOrte um.
-- Nutze Autowert-Felder als Primärschlüssel. "Ohrmarke" ist technisch ungünstig, weil Datentyp TEXT. Vergibt aber für "Ohrmarke" zusätzlich einen eindeutigen Index.
-- Benenne die Primärschlüsselfelder eindeutig über die gesamten Tabellen gesehen (tblTiere--> "TierID")
-- "DatZugang" in tblTiere entfällt. Ein "Zugang" wird mit dem ersten Datensatz in tblTierStandOrte definiert.


Wenn ein Tier den Standort wechselt, bedeutet das lediglich einen neuen DS in tblTierStandorte mit dem aktuellen Datum. ("Datum" auch umbenennen in z. B. mit Prefix aus Tabellennamen-Abkürzung: "TSO_Datum")


Weitere Normalisierung ist denkbar:  tblMedikamente.Art, tblTiere.Rasse

tblStandorte ist ebenfalls zu erweitern.

ZitatIch möchte nun beim Umzug die 10 Tiere per Kontrollkästchen markieren und für alle markierte Tiere in der tblStall einen Eintrag mit dem neuen Standort samt Datum und Ohrmarkennummer schreiben lassen.


Dazu ist zunächst ein "Markierungsfeld (Ja/Nein) in tblTiere erforderlich.

Im Formular "frmTiere"  (jede Tabelle erhält ein individuelles Form) kann dieses Kontrollkästchen dann zur Markierung der einzelnen Tiere herangezogen werden.

In einem ungebundenen Kombifeld mit Datensatzherkunft zu Tabelle tblStandorte wird der Standort ausgewählt, zu dem umgezogen werden soll.
Mittels Button und einer Anfügeanfrage werden die markierten Tiere als neue DS an tblTierStandorte angehängt.

Beaker s.a.

Hallo Franz,
Ich schon wieder.
ZitatDazu ist zunächst ein "Markierungsfeld (Ja/Nein) in tblTiere erforderlich.
Muss das sein? Ein Listfeld mit Mehrfachauswahl sollte doch reichen.
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

DF6GL

Hallo Eckehard,

ich auch  ;)


Ich bezog mich auf die Frage des TS: 

Zitat...die 10 Tiere per Kontrollkästchen markieren ...

was ich (je nachdem, wie der ganze Umzugsablauf im Detail aussieht) sowieso bevorzuge.

Die Markierungen im Kombifeld sind temporär, sprich vergänglich, die gespeicherten Markierungen dagegen nicht.
Es kann ja sein, das der Umzug über längere Zeit (in einem Formular) geplant werden soll/muss und erst danach die Durchführung des Umzugs stattfindet. Zwischendurch wurde die DB (mehrmals) geschlossen und somit sind die Kombifeld-Markierungen verloren.

So, jetzt Du wieder....  8)   :)  :)

Beaker s.a.

Hallo Franz,
Ja, das ist natürlich einen Schritt weitergedacht.
Es war von mir aber auch als Frage formuliert.

gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

ebs17

Zitateinen Schritt weitergedacht
Wenn es dann mehrere Auswahlvorgänge geben könnte, die sich zeitlich überschneiden würden - von der erstmals fixierten Idee bis zu einer Umsetzung könnte es ja länger dauern - müsste man die Ja/Nein-Felder in der Tiere-Tabelle in eine m:n-Beziehung Tiere-Auswahlvariante ersetzen.
Mit freundlichem Glück Auf!

Eberhard

Kubus0815

Dezember 15, 2020, 21:43:47 #8 Letzte Bearbeitung: Dezember 15, 2020, 21:48:48 von Kubus0815
Hallo Franz,
die Normailisierungstipps setze ich gerade um.
Dabei ist die habe ich überlegt ob das DatZugang nicht bleiben sollte und sogar durch DatAbgang ergänzt werden sollte, um einfach die Mastdauer berechnen zu können? Ausserdem würde ich DatAbgang dazu verwenden um in Formularen nur aktive Tiere anzeigen zu lassen wenn das Abgangsdatum leer ist.
ZitatWeitere Normalisierung ist denkbar:  tblMedikamente.Art, tblTiere.Rasse
Die Medikamentenart habe ich bereits zur Auswahl in einem Kombinationsfeld eingestellt

ZitatEs kann ja sein, das der Umzug über längere Zeit (in einem Formular) geplant werden soll/muss und erst danach die Durchführung des Umzugs stattfindet.

Nein das ist nicht notwendig, der Umzug in der Datenbank wird sofort vollzogen.

ZitatEs kann ja sein, das der Umzug über längere Zeit (in einem Formular) geplant werden soll/muss und erst danach die Durchführung des Umzugs stattfindet.

Gibt´s dafür noch weiterführende Tipps/Beispiele.

Viele Grüße Thomas

Kubus0815

Hallo nochmal.
Ich komme hier einfach nicht weiter.
Nochmal zum Verständnis:
Ich erstelle ein Formular mit Listenfeld Ohrmarke und Mehrfachauswahl, ein Textfeld Datum und ein Kombifeld Standort.
Ich erstelle einen Button mit Ereignisprozedur bei Click.
Den Code hätte ich mir irgendwie so vorgestellt.

Sub btnKopieren_Click()
Private Sub Befehl1_Click()

Me.Dirty = False
CurrentDb.Execute "Insert into tblTierStandorte (TierStandortDat,Ohrmarke,StandortID) select TierStandortDat,StandortEingOhrm,StandortID  from frmStandortEingabe where ID = " & Me!ID, dbFailOnError
End Sub
 
ab "where" weiß ich nicht was gemeint ist.
Hätte jemand einen Tipp für mich?


DF6GL

Hallo,


Zitatab "where" weiß ich nicht was gemeint ist.


Zitatwhere ID = " & Me!ID, dbFailOnError

Damit ist gemeint, dass der DS herangezogen wird, der den ID-Wert des Form-Textfeldes "ID" besitzt.  Das geht aber nur, wenn das Form gebunden ist, was bei Dir scheinbar nicht der Fall ist ("Ich erstelle ein Formular.. ").

dbFailOnError sorgt dafür, dass eine Fehlermeldung im Fehlerfall (auf SQL-Ebene)  erzeugt wird.


Notfalls lad die Db hier hoch, komprimiert/repariert und gezippt

Kubus0815

Ich habe jetzt nochmal versucht eine Anfügeabfrage aus einem gebundenen Formular heraus zu erstellen, was mir leider nicht gelungen ist.
Ich habe es mit einem button mit Ereignisprozedur versucht.
Dabei wollte ich die Parameter aus dem gebundenen Formular auslesen und in der Tabelle anfügen lassen.
Scheinbar können aus einem form aber keine Werte ausgelesen werden?
Wie ist denn hier die richtige Vorgehensweise?


MzKlMu

Hallo,
natürlich können aus einem Formular Daten ausgelesen werden. Zeige bzw erkläre deine Versuche.
Gruß
Klaus

Kubus0815

Hallo Klaus,

hier der Code meines Buttons:
Private Sub Befehl59_Click()
CurrentDb.Execute "INSERT INTO tblTierStandorte ( TierStandorteID, Ohrmarke, TierStandortDat, StandortID )SELECT frmTSG.TierStandorteID, frmTSG.Ohrmarke, frmTSG.TierStandortDat, frmTSG.StandortID FROM frmTSG"

End Sub

Gruß Thomas

MzKlMu

Januar 18, 2021, 09:34:53 #14 Letzte Bearbeitung: Januar 18, 2021, 09:51:55 von MzKlMu
Hallo,
versuche es so (ungetestet):
CurrentDb.Execute "INSERT INTO tblTierStandorte ( TierStandorteID, Ohrmarke, TierStandortDat, StandortID )VALUES(" _
                  & Me.TierStandorteID & ",'" & Me.Ohrmarke & "'," & "Int(Me.TierStandortDat) &", " & Me.StandortID"
Texte sind in Hochkomma einzuschließen und das Datum habe ich in eine Ganzzahl gewandelt wegen der SQL konformen Übergabe von Datumswerten.
Gruß
Klaus