Access-o-Mania

Access-Forum => Access-Hilfe => Thema gestartet von: Marcus Hahn am März 04, 2021, 08:57:37

Titel: Datenerfassung in Access
Beitrag von: Marcus Hahn am März 04, 2021, 08:57:37
Hallo zusammen
Vorweg: ich bin wirklich unerfahren mit Access, deshalb wende ich mich mal an Euch.

Was ich machen möchte:
An einigen vorher festgelegten Tagen (tblProbenabend) finden Übungen statt. Teilnahme der aktiven Mitglieder (tblKontakte) ist freiwillig, muss aber dokumentiert werden.

Wie ich mir das vorstelle: ich wähle den Termin und clicke mich auf einer Seite durch die Mitgliederliste (gefiltert nach "aktive") und clicke "ja".

Nach Ablauf des Jahres brauche ich eine Liste der Aktiven mit der Anzahl der wahrgenommenen Proben.

ich habe viel herumprobiert und gelesen, bin bislang nicht wirklich vorwärtsgekommen, vermutlich weil ich den Lösungsweg nicht verstehe. Kann mir jemand auf die Sprünge helfen?
Titel: Re: Datenerfassung in Access
Beitrag von: crystal am März 04, 2021, 12:17:33
Hallo Marcus,

ganz so einfach ist das nicht...

Zunächst Mal brauchst du eine weitere Tabelle tblTeilnahme. Hier müsste gespeichert werden, wer an welchen Proben teilgenommen hat. Diese Tabelle würde also aus folgenden Feldern bestehen müssen:
TNAuto - AutoId
TNProbenRef - Referenz auf tblProbenabend
TNKontaktRef - Referenz auf tblKontakte
TNTeilgenommen - Ja/Nein-Feld, eigentlich überflüssig, könnte aber hilfreich sein, wenn jemand dann doch nicht teilgenommen hat oder früher gegangen ist.

Anm.: diese Tabelle könnte dann auch noch um weitere Felder erweitert werden, z. B. Schulnote, Bemerkung usw.

Aber wie jetzt die Felder befüllen?

Am einfachsten wäre es mit einem Listenfeld und etwas VBA.

Als Datenquelle für das Listenfeld dient die Auswahl der aktiven Kontakte:
select KontaktID, KontaktName from tblKontakte where KontaktStatus = 'aktiv'
Wichtig: Multiselect und erweiterte Auswahl auf Ja stellen.

Nun könntest du dieses ungebundene Listenfeld in einem Formular darstellen und oben ein Feld Probendatum (Referenz auf tblProbenRef) sowie einen Button "Jetzt speichern".

Der Anwender würde also das Formular aufrufen und das ungebundene Probendatum auswählen (Kombobox). Im Listenfeld werden alle aktiven Kontakte angezeigt. Der Anwender kann nun die Teilnehmer markieren. Bei Klicken des Buttons "Jetzt speichern" müsste dann per VBA in tblTeilnahme für jeden markierten Kontakt ein neuer Datensatz angelegt werden, in dem jeweils die Referenz auf die Probe und die Referenz auf den Kontakt gespeichert wird (ggf. auch noch Teilgenommen: Ja).
Die Referenzfelder kann man sich dabei aus einer jeweils 0cm breiten Spalte der Kombobox bzw. des Listenfelds holen (s.o. Feld KontaktID).

Am Ende des Jahres kannst du dann diese Tabelle auswerten (da müsste evtl. noch ein Feld "TNProbenDatum" dazu - oder was im Sinne der Normalisierung besser wäre: du holst das Datum per JOIN aus der Proben-Tabelle.

Nicht ganz einfach für einen Beginner. Mal sehen, vielleicht bastel ich dir ein Beispiel...

Es sei denn, jemand hat eine bessere Idee.

Gruß,
crystal
Titel: Re: Datenerfassung in Access
Beitrag von: Beaker s.a. am März 04, 2021, 13:13:09
Hallo,
Och, so schwierig ist das nicht.
Anbei ein abstraktes Beispiel. Es müssen nur die Namen der Tabellen
geändert werden (N = Abende, M = Teilnehmer). Die Formulare haben
als Datensatzquelle keine Abfrage sondern direkten Zugriff auf die
jeweilige Tabelle. Muss also auch nur geändert werden (wenn's die
Autokorrektur es nicht macht).
Natürlich müssen auch noch die benötigten Felder angelegt (siehe
"weitere Felder") in den Tabellen, und auf den Formularen eingefügt
werden.
Die einzige Abfrage im Beispiel ist die DS-Herkunft des Listfeldes im
Form "frmEntitaeten_N".
Das Listfeld mit Mehrfachauswahl und der daneben platzierte Button
ermöglichen eine schnelle Erfassung der Teilnehmer zu einem Abend.

gruss ekkehard
Titel: Re: Datenerfassung in Access
Beitrag von: crystal am März 04, 2021, 20:31:33
Hallo,
eine sehr schöne Lösung, Ekkehard!

Inzwischen habe ich meine Quick-And-Dirty-Demo auch fertig. Ist vielleicht noch einfacher zu verstehen...

Beim Basteln sind mir noch folgende Dinge eingefallen:
1. Wenn die Listbox Überschriften enthält, ändert sich der Index der selektierten Zeilen. Daher die Korrektur mit dem Feld intOffset.
2a. Man könnte das Formular frmTeilnahmen ja mehrfach aufrufen und weitere Datensätze erzeugen, obwohl die vielleicht schon existieren. Um die Zeilen in qryTeilnahmen dann nicht mehrfach zu finden, habe ich DISTINCT zugefügt.
2b. Alternativ müsste man beim Speichern prüfen, ob ein entsprechender Datensatz schon existiert.
3. qryTeilnahmen kann dann als Abfrage für einen Bericht dienen, der die Anzahlen der Einträge darstellt. Dazu fehlt dann noch ein GROUP BY...
4. Ein Kontakt könnte ja im Laufe des Jahres inaktiv werden. Deshalb wird der Status in qryTeilnahmen nicht geprüft, sondern nur dargestellt.
5. Formulare für die Erfassung von Proben und Kontakten habe ich nicht gebaut. Demo-Daten kann man ja einfach direkt in die Tabellen schreiben.
6. Da Name und Vorname nicht zwingend eindeutig sein müssen, habe ich in qryTeilnahmen die KontaktId zugefügt. Ein anderes Unterscheidungs-Merkmal könnte z. B. das Geburtsdatum sein.
7. qryTeilnahmen müsste um die Eingabe des gewünschten Jahres erweitert werden...

Verbesserungen sind durchaus erwünscht!

Viel Spaß,
crystal
Titel: Re: Datenerfassung in Access
Beitrag von: Marcus Hahn am März 05, 2021, 10:17:02
Erstmal vielen Dank für die Mühe.
Ich habe echt Mühe, das nachzuvollziehen, weil ich die Syntax nicht kenne.
Ich bekomme "Datentypenkonflikte" bei "SELECT [tblKontakte].[Personal-ID], [tblKontakte].[Vorname], [tblKontakte].[Nachname] FROM tblKontakte WHERE tblKontakte.[Abteilung] = 'Aktive'; "
und weiß nicht warum.
Bei mir steht allerdings auch keine Checkbox "ja" sondern der Wert "Aktive" als Abteilungsname den ich filtern möchte, ich hab noch die Jugend- und Altersabteilung in der Mitgliederliste.

Die Datenerfassung hab ich nicht verstanden, muss ich zugeben: wenn ich die Beispieldatei öffne, stehen in dem Formular immer die 3 gleichen Namen. Auch wenn ich noch eine Probe hinzufüge, ist "Ja" bereits eingefügt....
Ich denke ich sollte mal das teilen, was ich bislang gebastelt habe...Sie dürfen in diesem Board keine Dateianhänge sehen.
Titel: Re: Datenerfassung in Access
Beitrag von: crystal am März 05, 2021, 10:53:21
Hallo Marcus,
dein Fehler liegt darin, dass im Feld "Abteilung" NICHT der Klartext, sondern der betreffende Schlüssel aus der tblAbteilung gespeichert wird (Datenfeld-Typ: Zahl!). Du hast in diesem Feld eine Nachschlage definiert, was man dringend vermeiden sollte!!! Das "Nachschlagen" kannst du an der Oberfläche, also im Formular machen - NIE in der Tabelle selbst!!!

Also müsstest du auch nach dieser Zahl selektieren oder - wenn es denn der Klartext sein soll - tblAbteilung mit einbinden:
Sie dürfen in diesem Board keine Dateianhänge sehen.

Entsprechend auch in der Abfrage des Listenfelds.

Die Datenerfassung hab ich nicht verstanden, muss ich zugeben: wenn ich die Beispieldatei öffne, stehen in dem Formular immer die 3 gleichen Namen. Auch wenn ich noch eine Probe hinzufüge, ist "Ja" bereits eingefügt....

Ist doch klar: es werden im Listenfeld nur die aktiven Leute angezeigt. Das sind ja in meiner Demo-DB genau 3. das "Ja" steht für Aktiv, NICHT für Teilnahme.
Die Teilnahme wird erst  durch den Button "Jetzt speichern" gespeichert und zwar für alle Kontakte, die im Listenfeld markiert werden. das fehlt aber in deinem Formular!
Das Feld "Teilgenommen" in deiner Tabelle tblÜbungsteilnahme kannst du dir sparen. Teilgenommen haben alle kontakte, die für das betr. Probendatum in der Tabelle existieren!

Dein Beziehungsfenster ist falsch, da es einige Verknüpfungen nicht aufweist und Abfragen enthält.

BITTE: verwende in deinen Namen keine Sonderzeichen, auch keine Umlaute, keine Minuszeichen und keine Leerzeichen!!! Dieser Hinweis findet sich allein in diesem Forum gefühlt 2-Tausend mal!
Titel: Re: Datenerfassung in Access
Beitrag von: Marcus Hahn am März 05, 2021, 13:58:58
Vielen Dank für die flotte Unterstützung - auch wenn ich nicht wirklich sicher bin, ob ich das alles verstanden habe - wie gesagt, ich hab mich ein wenig eingelesen und rumprobiert, aber ich bin halt echt Neuling in Access, bin ja schon stolz, daß da überhaupt was funktioniert. Ich werde die Namen ändern - Daß Bindestriche nicht erlaubt sind und Leerzeichen war mir nicht bewusst, sorry. Ich gelobe Besserung.  :-[  Wenn ich das geändert habe, würde ich mich gerne noch mal melden, wenn ich darf...
Titel: Re: Datenerfassung in Access
Beitrag von: crystal am März 05, 2021, 14:27:39
Zitat von: undefinedWenn ich das geändert habe, würde ich mich gerne noch mal melden, wenn ich darf...

Aber immer! Schau dir mal in meiner Demo an, was beim Button "Jetzt speichern" passiert (im Entwurfsmodus auf Ereignis klicken und den Code anschauen).
Titel: Re: Datenerfassung in Access
Beitrag von: Beaker s.a. am März 05, 2021, 16:51:56
@crystal
Da hast du dich aber nicht sehr angestrengt bei deinem Beispiel.
1. Deine Beziehungen halte ich für fragwürdig. Bei mir gibt es LEFT/RIGHT-Joins
nur in Abfragen.
2. Dem Kombi fehlt der Code zum Navigieren.
3. Dein Listfeld zeigt nur die aktiven Kontakte, schliesst die bereits zugeordneten
aber nicht aus. Da es in tblTeilnahmen auch keinen Mehrfelderindex auf die FKs
gibt, sind doppelte Zuordnungen möglich.
4. Deinen Code zum Speichern in die n:m finde ich ziemlich umständlich. Hast du
es dir bei mir angeschaut. Das ganze Offset-Gedöhns ist doch völlig überflüssig.
Die Auflistung ".ItemsSelected" brauchst du doch nicht über den Zeilenindex durch
zu gehen, die gibt autom. die gebundene Spalte zurück.

gruss ekkehard
Titel: Re: Datenerfassung in Access
Beitrag von: crystal am März 05, 2021, 18:54:33
@Beaker s.a.
Ja - du hast Recht. Ist ja auch nur eine Quick-and-dirty-Demo.

zu 1. Was spricht dagegen, die Joins schon im Beziehungsfenster komplett zu definieren? Wieso wird diese Option im Beziehungsfenster angeboten?

zu 2. Was soll das für Code sein? Falls du damit meinst, nach Änderung der Kombobox auf einen anderen DS zu wechseln: ist ja nicht vorgesehen.
Mein Formular ist ungebunden, also quasi nur als eine Eingabehilfe gedacht. Es ist nicht dazu gedacht, einmal getroffene Teilnahmen im Nachhinein zu sichten oder zu ändern. Dabei würden übrigens auch andere Probleme auftauchen (Kontakt gehört inzwischen zu einer anderen Abteilung, neuer Kontakt). Hier war der Threadstarter vielleicht auch etwas zu ungenau in seiner Vorgabe (s. a. Titel: DatenERFASSUNG).

zu 3. Das hatte ich bereits erwähnt (s. Post #3, 2a und b).

zu 4. Ja, aber über .column(x,y) kann eben auch auf andere Spalten der Liste zugreifen; Offset-Gedöns: Macht der Gewohnheit, weil ich öfter ganze Listen betrachten muss und falls irgendwann doch Überschriften dargestellt werden...
Übrigens gehe ich ja genau die .ItemsSelected-Auflistung durch, nicht die ganze Liste.


Wenn man anders vorgehen würde, also zu einer Probe in einem UFo alle "Aktiv"-Kontakte markieren, die teilgenommen haben, müsste man das Ufo erst mit allen "Aktiv"-Kontakten füllen (per VBA) oder sie einzeln per Kombobox selektieren (unhandlich, fehleranfällig), um dann z. B. Häkchen bei "Teilgenommen" setzen. Auch dabei kann es dann zu Schwierigkeiten kommen (wie werden Kontakte hinzugefügt, die erst später eingegeben oder schlicht vergessen wurden; was, wenn sich die "Abteilung" ändert; darf es möglich sein, die Teilnahme nachträglich zu ändern -> Dokumentationspflicht?). Außerdem würde die Tabelle dann für jede Probe auch mit all den "Aktiv"-Kontakten gefüllt werden, die nicht teilgenommen haben.

Ist vielleicht zu viel verlangt, aber du kannst meine Demo natürlich gern korrigieren und erweitern. Dann hätten andere auch was davon.

Gruß,
crystal

ps:
"Wer sich über Kritik ärgert, gibt zu, dass sie verdient war." (Tacitus) Ich freue mich über deine Kritik, behaupte aber nicht, dass sie völlig unberechtigt ist; würde mir nur etwas detailliertere Angaben wünschen.
Titel: Re: Datenerfassung in Access
Beitrag von: Beaker s.a. am März 06, 2021, 14:18:47
@crystal
zu 1. Datenbanktechnisch kann ich das leider auch nicht erklären, da müsste
ein Profi ran. Ich habe es jedenfalls sonst noch nie gesehen, geschweige denn
selber gemacht. Ich will ja nicht behaupten, dass es nicht vielleicht Fälle gibt,
wo es Sinn macht, - aber hier?

zu 2. O.K., dir ging es nur darum den FK fest zu halten. Ich versuche in meinen
Beispielen möglichst auch schon die einfachsten Funktionalitäten darzustellen.
Dies war allerdings auch nicht auf die Schnelle zusammengeklickt, sondern war
schon "vorbereitet".

zu. 3. Hatte ich nicht mehr im Auge, - ansonsten siehe 2.

zu 4. Andere Spalten brauchst du hier aber nicht. Aber O.K., wenn du das so zu
sagen immer als Vorlage benutzt, wieso nicht.

zum Rest: Wieso UFo? Ein UFo auf Basis der n:m dient hier doch der Anzeige
der Teilnehmer einer ausgewählten Probe, und u.U. der Erfassung einzelner
Teilnehmer, die
Zitaterst später eingegeben oder schlicht vergessen wurden
Ansonsten übernimmt das doch (in "Masse") das Listfeld und der Button.
Wo da jetzt eine "Abteilung" herkommt erschliesst mir nicht.

Wenn in einer Anwendung zwischen "aktiv/inaktiv" unterschieden werden muss,
verwende ich eine gespeicherte Abfrage auf die jeweilige Tabelle und beziehe
mich in allen anderen Abfragen nur auf diese
SELECT * FROM Tabelle WHERE aktiv = True("*" hier erlaubt)

Mich an deinem Beispiel zu vergreifen fehlt mir die Zeit. I.Ü. bin ich der
Meinung, sorry wenn ich das mal so behaupte, die bessere Lösung gezeigt zu
haben.

gruss ekkehard
Titel: Re: Datenerfassung in Access
Beitrag von: crystal am März 07, 2021, 10:07:43
@Beaker s.a.
In Marcus' Beispiel steht im Feld Abteilung z. B. "Aktive" als Referenz auf die Tabelle tblAbteilung...
Wie du hatte ich beim Lesen von "Aktiv" zunächst auch an ein J/N-Feld gedacht...

Naja - genaues Lesen bildet nicht nur, sondern kann auch Fehler vermeiden.

Gruß,
crystal
Titel: Re: Datenerfassung in Access
Beitrag von: ebs17 am März 07, 2021, 14:45:48
ZitatWas spricht dagegen, die Joins schon im Beziehungsfenster komplett zu definieren?
Das Beziehungsfelder stellt Beziehungen (=> Relations) dar. Beziehungen sind Datenbankobjekte mit klaren Eigenschaften (=> Primärschlüssel - Fremdschlüssel). Von links/rechts ist da keine Rede.
In der Demo: Sekundärtabelle/Fremdschlüssel LEFT JOIN Primärtabelle/Primärschlüssel - was genau soll damit definiert werden??
Mit Einstellung der referentiellen Integrität, die hier fehlt, aber immer sinnvoll und funktional ist und somit vorhanden sein sollte, greift obige "Einstellung" voll ins Leere. Fremdschlüssel ohne zugehörigen Primärschlüssel - das ist nicht denkbar als Standard.

Ein JOIN (=> Verknüpfung) in einer Abfrage(!) kann Beziehungen nachahmen, was ja oft recht sinnvoll ist. Das, was man per Normalisierung auseinander genommen hat, setzt man dann wieder zur wohlgefälligen "Tabelle" zusammen. Ein JOIN kann aber auch ganz anderes als einen PK und einen FK der gleichen Beziehung verknüpfen. Hier würde die Aufgabenstellung an die Abfrage die Art und Weise einer Verknüpfung bestimmen, da kann auch aus links einfach rechts werden, oder man braucht Schlüsselgleichheit (INNER JOIN). Voreinstellung ist so etwas, dass man den linken Blinker gleich zusätzlich abschaltet/abklemmt, weil man üblicherweise nur nach rechts abbiegt.
Verknüpfungen müssen zudem nicht per JOIN vorgenommen werden, ein Theta-Join findet bspw. in der WHERE-Klausel statt, vieles andere dann auch, was ein JOIN nicht kann.

Die sogenannte Vordefinition macht nur dort etwas Sinn, wo man sich im Abfrageeditor etwas zusammenklickt und da als Vorschläge zu Verknüpfungen vorhandene Beziehungen mit ihrem Kram bekommt. Wer sich also auf diesen Assistenten stützt, sollte den Assistenten fit machen und hoffentlich keine eigenen Überlegungen hinsichtlich Anforderungen haben, sonst müsste man ja doch eigene Gedanken haben und diese umsetzen können.

Es ist also ein wenig mehr zu betrachten als ein paar Striche mit möglicherweise einer Pfeilspitze dran.

Wenn man ein Beispiel oder eine Demo bereitstellt, sollte man nicht solchen Unsinn hineinschreiben. Ein nächster hält das für abschreibenswert und vervielfältigt Unsinn.
Titel: Re: Datenerfassung in Access
Beitrag von: crystal am März 07, 2021, 18:55:54
@ebs17
Einmal abgesehen von der schwer zu akzeptierenden Polemik in deiner Antwort halte ich es nach wie vor für richtig, bereits im Beziehungsfenster Joins komplett zu definieren. Ich halte das schlicht für logisch. In anderen DBMS (SQL-Server, Oracle etc. pp.) macht man das meines Wissens übrigens auch.

Wenn man später Queries mit den schon verknüpften Tabellen erstellt, sind die Joins auch gleich richtig und man braucht sich in der Datenblatt-Ansicht nicht zu wundern.

Und warum sollte man einen erstmalig und nach reiflicher Überlegung als Left definierten Join nachträglich auf Right ändern wollen??? Das macht für mich keinen Sinn, denn man sollte sich m. E. schon genau überlegen, welche "Richtung" ein Join hat. Davon abgesehen könnte man den Join-Typ in einer Abfrage auch noch ändern, vielleicht zu Testzwecken.

Ich finde keine triftigen Argumente, so nicht vorzugehen. Ist nicht gerade das Beziehungsfester ("Datenmodell") dazu gedacht, Beziehungen optisch einleuchtend und einfach darzustellen? Eine Beziehung erst in einer Query richtig zu definieren, führt m. E. nur zur Verwirrung. Eine Query mit Left, eine andere mit Right, eine dritte mit Inner Join - was sollte das denn bringen? Doch wohl nur unerwartete Ergebnisse und schwer zu findende Fehler.

Verzichtet man im Beziehungsfenster auf die korrekte Definition der Joins, ist es nur noch eine optische Darstellung der Tabellen und man sieht lediglich, das gewisse Felder eine PK-FK-Beziehung haben. Ich habe nun wirklich schon viele Datenmodelle fremder Anwendungen gesehen und in aller Regel sind da die Pfeilspitzen oder Buchstaben/Symbole an den richtigen Stellen.

Referenzielle Integrität und Löschweitergabe habe nicht nicht eingestellt, da es sich um eine Demo handelt und man so zu Testzwecken einzelne Datensätze noch löschen oder umdefinieren kann. Auch das halte ich für legitim und mache das meist so, bis meine Anwendung "in Produktion" geht.

Insgesamt ist deine Antwort - wie so oft - eher verwirrend, zu schwammig und führt eher zur Verängstigung und Verunsicherung des Lesers, besonders das unglücklich gewählte Beispiel (vor allem, wenn er Neuling ist). Ich vermisse zudem eindeutige Argumente.

Fazit und Empfehlung: glaube nicht unkritisch alles, was andere so für richtig halten.

Gruß,
crystal
Titel: Re: Datenerfassung in Access
Beitrag von: ebs17 am März 07, 2021, 19:52:42
Zitatglaube nicht unkritisch alles, was andere so für richtig halten
Ja bitte, und zwar in allen Richtungen und bei allen beteiligten Personen.

Über die Beschäftigung mit fachlichen Grundlagen kann man dann auch Glauben per Wissen ersetzen.
Titel: Re: Datenerfassung in Access
Beitrag von: Marcus Hahn am März 08, 2021, 18:43:16
Hallo zusammen - es tut mir echt leid, hier Streit ausgelöst zu haben, das lag wirklich nicht in meiner Absicht.
Ich hatte ja erwähnt, ich bin Neuling in Access und ich brauche ein bisschen Führung, deshalb hab ich möglicherweise Begriffe benutzt, die Missverständlich sind.
Ich habe versucht die Lösungswege von Crystal und Beaker nachzuvollziehen, da war die Lösung von Beaker sehr ansprechend. (nachdem ich begriffen habe, daß man für den jeweiligen Probeabend alle Namen anclicken und dann alle speichern kann)
Die Lösung von Beaker hab ich versucht, bin aber gescheitert, da hab ich schlicht nicht begriffen, wo ich was eintragen könnte. Ich werde mir das bestimmt noch mal ansehen, aber momentan versuche ich die andere Variante. Ich bin noch am umstricken und für hier werde ich das Backend-file nochmal anonymisieren und dann stelle ich das wieder hier rein. Bin für koonstruktive Vorschläge echt dankbar, aber bitte denkt daran, ich bin Neuling hier mit dem Programmm.
Titel: Re: Datenerfassung in Access
Beitrag von: Marcus Hahn am März 08, 2021, 19:27:09
Mist, ich hab die Namen verwechselt - die Lösung von Crystal fand ich sehr ansprechend- sollte das heißen...
Titel: Re: Datenerfassung in Access
Beitrag von: crystal am März 09, 2021, 19:39:32
Hallo Marcus,
alles kein Problem -  den "Streit" hast ja nicht du ausgelöst, sondern die Menschen, die Kommentare geschrieben haben, mich eingeschlossen.
Und schließlich habe ich einige Kommentare kritisiert, was nun mal in meiner Natur liegt und sich gegen die Kommentatoren selbst und ihre z. T. etwas "gewöhnungsbedürftige" Art richtet, anderen durch Weglassen detaillierter Informationen oder "Schulmeister-Verhalten" letztlich eben doch nicht zu helfen.

Ich wurde hier für meine Kritik schon des Öfteren z. T. hart kritisiert. Das macht mir aber letztlich nichts aus, denn es belegt nur, dass manch einer eben nicht wirklich fähig oder bereit zu sein scheint, konstruktiv und umfassend zu informieren, so dass auch andere lernen können. Wenn ich "Unfug" schreibe, wäre ich sehr froh, wenn jemand mir das detailliert nachweisen würde, eben damit andere auch etwas davon haben. Aber da kämpfe ich wohl wie einst Don Chichotte...

Also bitte: richte deine fragen gerne und jederzeit an das Forum! Lass dich nicht von Antworten irritieren, die du nicht unmittelbar verstehen oder nachvollziehen kannst, sondern bitte darum, konkretere Angaben zu machen und - vor allem - probiere selbst und versuche, Dingen auf den Grund zu gehen! Wir lernen am Besten aus Misserfolgen.

Mein Apell an alle lautet zum wiederholten Male: versucht auf die Fragen möglichst detailliert einzugehen, nutzt eure Erfahrung, um hinter die Kulissen zu schauen und den Sinn hinter den Fragen zu verstehen. Gerade Neulinge sind oft noch nicht in der Lage, Zusammenhänge vollständig darzulegen. "Experten" sollten hier ihres tun, diese fehlenden Randbedingungen gedanklich zu konstruieren und ggf. behutsam nachzufragen, statt abgehobene informationstheoretische Ratschläge zu geben, die ein Neuling nicht verstehen kann. Kaum etwas ist frustrierender, als von einem solchen Forum wie diesem keine konkrete, zielgerichtete, wohlwollende, konstruktive und selbstlose Hilfe zu erhalten.

Meine Quick-and-dirty-Demo kann sicher funktional so erweitert werden, dass sie praxistauglich(er) wird. Ich will dich dabei gerne unterstützen und bin gespannt darauf, wie du selbst in der Thematik weiterkommst!

Gruß,
crystal
Titel: Re: Datenerfassung in Access
Beitrag von: Marcus Hahn am März 10, 2021, 11:49:37
Hallo Crystal
Ich bin noch am umstricken des ganzen und hab nicht jeden Tag Zeit dafür, deshalb dauert das grade länger.
Ja, ich hab tatsächlich erst mal ein ganz konkretes Problem. Ich hab die VB-Programmierung übernommen, bekomme aber die Fehlermeldung "Laufzeitfehler 3265" Element in dieser Auflistung nicht gefunden.
Der Debugger markiert diese Zeile in gelb: "!TeilnahmeID = cboUEbungsabend.Column(0)"
Hier bräuchte ich einen Hinweis, nach was ich suchen muss....
Titel: Re: Datenerfassung in Access
Beitrag von: DF6GL am März 10, 2021, 14:17:43
Hallo,

wenn Du die "übernommene  VB-Programmierung" (woher übernommen?) vollständig posten würdest, könnte vielleicht ein konkrete Antwort die Folge sein.


Ausgehend von der Fehlermeldung ist zu vermuten, dass es

"TeilnahmeID" als Feld in einem Recordset (?)  nicht gibt.


Zudem ist es ratsam, bei Nutzung von Steuerelementen explizit das aktuelle Form-Objekt anzugeben (Me!cboUEbungsabend.Column(0))

oder bei Recordset-Elementen das entspr. Recordset-Objekt:   rs!TeilnahmeID  ,  sofern keine With/EndWith-Konstruktion vorhanden ist, was hier eben nicht erkennbar ist.
Titel: Re: Datenerfassung in Access
Beitrag von: Marcus Hahn am März 10, 2021, 14:28:35
Mit "Übernommen" meinte ich übernommen aus dem Beispiel, das crystal erstellt hatte.
Was ist denn nun ein Recordset schon wieder? oder eine "With/EndWith-Konstruktion"?
Ich verneige mich ehrfürchtig, denn ich habe nicht die geringste Ahnung was das sein könnte.
Titel: Re: Datenerfassung in Access
Beitrag von: DF6GL am März 10, 2021, 14:47:09
Hallo,

naja, dann poste doch mal den vollständigen Code ....


Recordset und With/End With sind grundlegendste Dinge in der VBA-Programmierung.  Wenn Du diese nicht kennst, solltest Du Dich wirklich zunächst mit den allgemeinen Grundlagen zur VBA-Programmierung beschäftigen, ansonsten helfen Dir alle Vorschläge und Codeschnipsel bedingt und nur bis zum nächsten Schlagloch weiter.

Wir müssen uns hier schon der allgemein verständlichen Ausdrucksweise bzgl. der DB-Entwicklung bedienen, sonst verstehen wir uns nicht.



Und selbstständig kommst Du gar nicht zum Ziel.
Schau also mal nach, ob es sowas wie "Set rs = Currentdb.Openrecordset(......)"   , worauf sich dann TeilnahmeID beziehen kann:

.
.
.
With rs
.
.
.
.
   !TeilnahmeID = Me!cboUEbungsabend.Column(0)
.
.
.
End With
.
.




Logisch betrachtet wäre solcher Code ("!TeilnahmeID = Me!cboUEbungsabend.Column(0)") eher Nonsense, sofern es sich bei "TeilnahmeID" um ein Primärschlüsselfeld in einer Tabelle handelt.


Vielleicht ist aber bloß "Me" vergessen:

Me!TeinahmeID= Me!cboUEbungsabend.Column(0)

wobei der vorherige Satz nicht seine Aussage verliert und weshalb es sinnvoll wäre, den kompletten Code zu posten, wie anfangs gefordert.....


Und vielleicht noch besser, lade Deine gesamte aktuelle(!) DB hier hoch (repariert/komprimiert und gezippt)
Titel: Re: Datenerfassung in Access
Beitrag von: Marcus Hahn am März 10, 2021, 16:50:28
Ja, das wird das Beste sein.
Ich hab sie jetzt mal hier als .zip reingestellt, komprimiert und repariert.
Die frmTeilnahmenUEbungen hab ich noch nicht im Menu.
Titel: Re: Datenerfassung in Access
Beitrag von: MzKlMu am März 10, 2021, 17:05:48
Hallo,
Deine Beziehungen sind alle falsch. Beziehungen laufen immer über den Primärschlüssel und in der anderen Tabelle ein extra Feld als Fremdschlüssel. Außerdem kann man über 2 Autowerte keine Beziehung anlegen, das sind ja Autowert, da kann man nicht sicherstellen, dass die immer gleich laufen und damit scheiden sie als Fremdschlüsselfeld aus.

Die Formauler habe ich mir gar nicht erst angesehen, denn wenn die Beziehungen richtig sind, können die Formulare so nicht mehr verwendet werden.

Was ist denn die Tabelle Personalliste, da gibt es ja auch Vor und Nachname.

Was wird denn die Aufgabe der DB ?
Titel: Re: Datenerfassung in Access
Beitrag von: Marcus Hahn am März 10, 2021, 17:36:26
Alle falsch? Mist. Da muss ich was verkehrt verknüpft haben, beim anonymisieren, ich hab die tblKontakte eigentlich als externes file, das ich jetzt für das Forum ausgetauscht habe.

Ich hatte den Grundgedanken, daß ich einfach elektronisch eine Anwesenheitsliste führe, die ich später auswerten kann.
Es gibt Probeabende (UEbungsIDtblUEbungdatumthema) an denen ich die Teilnahme dokumentieren muss (Versicherung u. andere Gründe)
Die Basis des Ganzen ist eine Personalliste (tblKontakte) aus der ich die Namen der Mitglieder der Abteilung "Aktive" hole, das Probedatum wähle die Anwesenden markiere (das ist das VBA von Crystal) und speichere.
Titel: Re: Datenerfassung in Access
Beitrag von: Marcus Hahn am März 10, 2021, 17:57:25
OK, ich bin nochmal in mich gegangen und hab glaub ich meinen Fehler verstanden.
Ich denke, nun läuft es besser... :)
Jedenfalls hab ich die Fehlermeldung wegbekommen.
Also kann ich dann langsam mit der Gestaltung der Auswertung beginnen, oder?
Ich nehme erst mal eine Hürde nach der Anderen...

Danke für die Hilfe...
Titel: Re: Datenerfassung in Access
Beitrag von: MzKlMu am März 10, 2021, 19:22:01
Hallo,
es ist grundsätzlich referentielle Integrität einzustellen. Die Beziehung zwischen Kontakte und Personalliste ist falsch, hier sind 2 Autowerte in Beziehung gesetzt das geht nicht.
Der Sinn der Tabelle Personalliste erschließt sich mir nicht. Ist das das Personal das zu einem Kontakt gehört.
In den Beziehung sollte man immer den Typ 1 einstellen, der wird am häufigsten gebraucht. Die anderen Beziehungsarten können zu nicht aktualisierbaren Abfragen führen und dann müssten sie in Abfragen ohnehin geändert werden.

Wirf die Nachschlagefelder in den Tabellen wieder raus, die macht man nicht in Tabellen. Die machen nur in Formularen Sinn. Nachschlagefelder in Tabellen führen zu Fehlern die sich gerade der Anfänger nicht erklären kann. Also, mache normale Textfelder wieder draus. An die Fremdschlüsselfelder hängst Du dann ein _F an- PersonalID (PS) > PersonalID_F (FS).
Der Tabelle Dienstgrade spendierst Du noch ein Autowertfeld als PS, Texte sind als PS nicht geeignet.
Titel: Re: Datenerfassung in Access
Beitrag von: Marcus Hahn am März 11, 2021, 10:10:55
Hallo und vielen Dank für die Tips
Die "Personalliste ist ein Relikt aus einem Versuch, zu filtern.
PS sind Primärschlüssel, Mit den Nachschlagefeldern hab ich die Dienstgrade und Abteilungen eingeschränkt, oder meinst Du was anderes?
Ich stehe noch vor so manchem Rätsel. In der frmTeilnahmenUEbungen ist die Zeile mit der Übung erst mal leer, das verstehe ich erstmal gar nicht, außerdem sollte auch das Datum angezeigt werden.
Irgendwann soll das mal automatisch auf das nächstliegende Datum springen.
Momentan kann man den Termin mehrfach auswählen und speichern. Ich stelle mir vor, daß die Felder wieder so angezeigt werden, wie sie gespeichert wurden, also eine edit-funktion, sozusagen...
Gibt es überhaupt eine Möglichkeit, das so zu basteln?
Titel: Re: Datenerfassung in Access
Beitrag von: DF6GL am März 11, 2021, 10:22:40
Hallo,

bring doch erst mal die Tabellen(konstruktion) in Ordnung, bevor Du Dich mit Formularen und den darin abzubildenden Arbeitsabläufen beschäftigst. Am besten löscht Du einfach die Abfragen und die Formulare.


Folge den Ratschlägen von Klaus und setz die um. Danach lädst Du die DB wieder hier hoch.
Titel: Re: Datenerfassung in Access
Beitrag von: Marcus Hahn am März 11, 2021, 10:50:03
OK, das mache ich.
Ich wollte nur zeigen, wo ich langfristig hin möchte, nicht daß ich einen völlig falschen Weg einschlage....
Titel: Re: Datenerfassung in Access
Beitrag von: Beaker s.a. am März 12, 2021, 16:27:11
Hallo,
ZitatWas ist denn nun ein Recordset schon wieder? oder eine "With/EndWith-Konstruktion"?
Auf meiner Tastatur gibt es oben links eine Taste auf der früher mal "F1" stand.

Zum Datenmodell sach ich nu nix mehr.

gruss ekkehard
Titel: Re: Datenerfassung in Access
Beitrag von: Marcus Hahn am April 01, 2021, 19:16:46
stimmt. F1 steht bei mir auch drauf.  :) - sorry, da war ich grade echt überfordert.

also, ich hab jetzt mal das Ding so weit überarbeitet, ich hoffe ich hab keine der Anforderungen übersehen.

Bin gespannt...
Titel: Re: Datenerfassung in Access
Beitrag von: Marcus Hahn am April 13, 2021, 16:36:02
Hallo Leute, ich wär wirklich dankbar für Tips, wie ich weiterkommen könnte.
Alles willkommen, ich bin lernwillig....
Liebe Grüße
Marcus
Titel: Re: Datenerfassung in Access
Beitrag von: MzKlMu am April 13, 2021, 16:52:57
Hallo,
was ist mit den beiden Tabellen ohne Beziehungen ?
Titel: Re: Datenerfassung in Access
Beitrag von: Marcus Hahn am April 13, 2021, 17:07:00
Die beiden Tabellen, die da ohne Beziehngen sind, sollen später mal die Auswahl einschränken bei der Erfassung neuer Kontakte. Es sind die möglichen Dienstgrade und die Abteilungen für die ich die Daten erfassen möchte.
Ich hatte die Beiden bisher als Datenquelle für die Tabelle Kontake, das soll ich wohl besser für die Formulare verwenden, hieß es hier...
Titel: Re: Datenerfassung in Access
Beitrag von: Marcus Hahn am Juli 05, 2021, 09:14:56
Hab nach langer Zeit endlich mal wieder dran gedacht, hier noch mal Hilfe zu suchen...
Zwischenzeitlich hab ich wegen der Probenteilnahmen Zettel angefangen und in Excel übernommen, weil ich nicht weiterkomme. das gefällt mir aber nicht.
Konkretes Ziel erst mal:
Wie schaffe ich es, die Probeteilnahmen editierbar zu machen und wie kann ich das später auswerten?
Also wer hat Von Datum-Bis Datum wie oft teilgenommen und war wie oft entschuldigt?
Liebe Grüße
Marcus
Titel: Re: Datenerfassung in Access
Beitrag von: ebs17 am Juli 05, 2021, 11:57:38
ZitatWie schaffe ich es, die Probeteilnahmen editierbar zu machen
Ein Datensatz in einer Tabelle sollte gemäß den hinterlegten Definitionen immer editierbar sein. Man liegt also auf der sicheren Seite, wenn man sich zum Editieren auf Datensätze dieser Tabelle beschränkt und dazu eben nicht den ganzen möglichen sonstigen Stuff mitschleppt.

Zitatwie kann ich das später auswerten?
In einer Datenbank typischerweise mit Abfragen.

Eine Abfrage wäre etwas Konkretes und würde also für eine Erstellung konkrete Kenntnis des Datenmodells, der Bedingungen und recht auch der real existierenden Daten, alles zum jetzigen Zeitpunkt, erfordern.