Juni 15, 2021, 22:15:55

Neuigkeiten:

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


Datenerfassung in Access

Begonnen von Marcus Hahn, März 04, 2021, 08:57:37

⏪ vorheriges - nächstes ⏩

Marcus Hahn

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.

Marcus Hahn

Mist, ich hab die Namen verwechselt - die Lösung von Crystal fand ich sehr ansprechend- sollte das heißen...

crystal

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
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...

Marcus Hahn

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....

DF6GL

März 10, 2021, 14:17:43 #19 Letzte Bearbeitung: März 10, 2021, 14:23:31 von DF6GL
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.

Marcus Hahn

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.

DF6GL

März 10, 2021, 14:47:09 #21 Letzte Bearbeitung: März 10, 2021, 14:54:42 von DF6GL
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)

Marcus Hahn

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.

MzKlMu

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

Marcus Hahn

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.

Marcus Hahn

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...

MzKlMu

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

Marcus Hahn

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?

DF6GL

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.

Marcus Hahn

OK, das mache ich.
Ich wollte nur zeigen, wo ich langfristig hin möchte, nicht daß ich einen völlig falschen Weg einschlage....