Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: MartinGrebe am Januar 15, 2020, 10:09:40

Titel: Übergabe von Daten aus einer Tabelle in ein Textfeld
Beitrag von: MartinGrebe am Januar 15, 2020, 10:09:40
Hallo liebe Forumsmitglieder,

ich habe folgendes Problem:

1. Eine Tabelle (Tätigkeiten) mit 6 Spalten (ID, Nummer, Liegenschaft, Ort, Tätigkeit, Kostenstelle)
2. Ein Formular (Eingabeformular) mit den entsprechenden Feldern aus der unter Punkt 1 genannten Tabelle

Nun möchte ich, dass wenn ich in dem Eingabeformular in dem Eingabefeld (Textfeld) mit der Bezeichung Tätigkeitsnummer
eine Nummer eingebe, mir Access automatisch anhand der Nummer die anderen Textfelder mit den entsprechenden Werten aus der Tabelle Tätigkeiten füllt. Ist so etwas möglich?

Vielen Dank für eure Antworten.
Titel: Re: Übergabe von Daten aus einer Tabelle in ein Textfeld
Beitrag von: MzKlMu am Januar 15, 2020, 11:24:52
Hallo,
möglich ja, aber wahrscheinlich überflüssig, im Regelfall wird nur der Primärschlüssel übertragen.

Wo landen dann die Daten des Formulars, ein Formular kann ja keine Daten speichern.
Titel: Re: Übergabe von Daten aus einer Tabelle in ein Textfeld
Beitrag von: MartinGrebe am Januar 15, 2020, 11:41:09
Darüber habe ich mir noch keine Gedanken gemacht, wo die Daten landen sollen.
Was wäre denn die beste Möglichkeit? Eine weitere Tabelle? Ein Bericht?
Die sollen später auch ausgewertet werden.
Titel: Re: Übergabe von Daten aus einer Tabelle in ein Textfeld
Beitrag von: Beaker s.a. am Januar 15, 2020, 16:04:58
Hallo Martin,
Binde das Form an die Tabelle (Datensatzherkunft) und die Textfelder an die
Tabellenfelder (Steuerelementinhalt).
Das Eingabefeld bleibt ungebunden (kein Inhalt in Steuerelementinhalt).
Bei den Ereignissen des Eingabefeldes stellst du bei "Nach Aktualisierung"
diese Eigenschaft auf "Ereignisprozedur" und klickst auf die ... in der Zeile.
Dann geht der VBEditor auf, und der Cursor steht zwischen diesen beiden
Zeilen
Private Sub NameDesEingabefeldes_AfterUpdate()

End Sub

Dort hinein schreibst du den folgenden Code

    With Me.Recordset
        .FindFirst "TaetigkeitID = " & Me.NameDesEingabefeldes
'ausgehend von einer vollständigen Eingabe der ID
'besser (anwendungsfreundlicher) evtl. ein Kombifeld (ungebunden),
'womit auch die folgende Prüfung obsolet wird
        If .NoMatch Then
            MsgBox "Kein Datensatz gefunden!"
        End If
    End With


gruss ekkehard
Titel: Re: Übergabe von Daten aus einer Tabelle in ein Textfeld
Beitrag von: MzKlMu am Januar 15, 2020, 16:55:19
Hallo,
@ekkehard
Deine Antwort passt jetzt aber nicht so recht.
Er hat ja noch gar keine Tabelle in der die Daten landen sollen, er findet zwar die entsprechende Tätigkeit aber wohin dann damit ?

@Martin
ZitatDarüber habe ich mir noch keine Gedanken gemacht, wo die Daten landen sollen.
Was wäre denn die beste Möglichkeit? Eine weitere Tabelle? Ein Bericht?
Sorry, aber so blauäugig kann man doch keine Datenbank anfangen. Es gibt keine beste Möglichkeit, es gibt nur eine Möglichkeit
Alle Daten einer Datenbank die Du speichern willst benötigen zwingend eine Tabelle,  Formulare und Berichte können keine Daten speichern.
Und die Tabellen die angelegt werden benötigen auch Beziehungen untereinander.
Für diese Beziehungen sind in den Tabellen Primärschlüssel und Fremdschlüssel erforderlich.
Formulare und Berichte bassieren dann auf diesen Tabellen, wobei im Regelfall die Tabellen gar nicht verwendet werden, sondern Abfragen. Abfragen desshalb, weil man meistens nur eine Auswahl der Daten benötigt und auch eine bestimmte Sortierung notwendig ist.
Wenn man eine zuverlässige Sortierung haben will, so müssen zwingend Abfragen verwendet werden. Und die Formulare und Berichte werden dann an diese Abfragen gebunden.

Das sind Basics zu Access, die man wissen muss, sonst kann man keine Datenbank machen.

Hier mal ein Link zur Einführung:
https://www.access-tutorial.de/


Titel: Re: Übergabe von Daten aus einer Tabelle in ein Textfeld
Beitrag von: Beaker s.a. am Januar 15, 2020, 17:11:08
Hallo Klaus,
ZitatEr hat ja noch gar keine Tabelle in der die Daten landen sollen
Hm, verstehe ich nicht
ZitatEine Tabelle (Tätigkeiten) mit 6 Spalten (ID, Nummer, Liegenschaft, Ort, Tätigkeit, Kostenstelle)
gruss ekkehard
Titel: Re: Übergabe von Daten aus einer Tabelle in ein Textfeld
Beitrag von: MzKlMu am Januar 15, 2020, 17:19:12
@ekkehard
eben, er hat nur eine Tabelle. Und aus der einen Tabelle will er die Daten ins Formular übertragen.
Und dann hatte ich gefragt, was dann mit den Daten im Formular geschehen soll.
Und diese Frage wurde wie folgt beantwortet:
ZitatDarüber habe ich mir noch keine Gedanken gemacht, wo die Daten landen sollen.
Das von ihm verwendete Formular ist ja auch ungebunden und enthält nur die gleichen Felder (bzw.Feldnamen) wie die eine Tabelle die er hat.
Titel: Re: Übergabe von Daten aus einer Tabelle in ein Textfeld
Beitrag von: DF6GL am Januar 15, 2020, 19:25:58
Hallo,

unberücksichtigt von der unbrauchbaren Tabellenkonstruktion könnte die "Übernahme" ja nach diesem Muster geschehen:

http://www.donkarl.com/?FAQ4.22

Das Prinzip lässt sich auch auf den markierten DS in einem Endlosform und der Nutzung des "Beim Anzeigen"-Ereignisses anwenden...
Titel: Re: Übergabe von Daten aus einer Tabelle in ein Textfeld
Beitrag von: MartinGrebe am Januar 16, 2020, 10:11:59
Ich habe mir jetzt eine zweite Tabelle angelegt, in der die Daten dann gespeichert werden sollen. Diese enthält die gleichen Spalten wie die Tabelle aus der die Daten ausgelesen werden sollen. Als Anschauung habe ich mal Screenshots beigefügt, wie ich mir das Ganze vorstelle.
Titel: Re: Übergabe von Daten aus einer Tabelle in ein Textfeld
Beitrag von: DF6GL am Januar 16, 2020, 12:43:14
Hallo,

um hier schneller weiterzukommen, lad die Db mal hier hoch, komprimiert/repariert und gezippt..


Beschreibe (nochmal) anhand der authentischen Namen genau, wo, wann und was passieren soll.
Titel: Re: Übergabe von Daten aus einer Tabelle in ein Textfeld
Beitrag von: MartinGrebe am Januar 16, 2020, 13:17:13
In der Tabelle "Tätigkeiten" sind folgende Spalten vorhanden: ID, Nummer, Liegenschaft, Ort, Tätigkeit, Kostenstelle.
In dem Formular "Eingabeformular" habe ich die entsprechenden Felder mit den Bezeichnungen aus der Tabelle "Tätigkeiten" angelegt. Wenn ich nun in dem Formular in das Textfeld "Nummer" die Nummer der Tätigkeit eingebe, dann sollen die anderen Felder in dem Formular automatisch mit den entsprechenden Daten "gefüllt" werden (d.H. Liegenschaft, Ort, Tätigkeit, Kostenstelle) in dem jeweiligen Feld des Formulares. Diese Daten aus dem Formular sollen dann in die Tabelle "Tätigkeiten Auswertung" in die entsprechenden Spalten übertragen und zur weiteren Verwendung (Auswertung, etc.) verwendet werden.
Titel: Re: Übergabe von Daten aus einer Tabelle in ein Textfeld
Beitrag von: Beaker s.a. am Januar 16, 2020, 13:53:41
Hallo,
Also ich verstehe das immer weniger.
Wozu zwei gleiche Tabellen?
Das es sich bei "Tätigkeiten" *) um einen Import handelt ist für mich auch nicht
ersichtlich.
"Auswertung" hört sich bei mir eher nach Abfrage und/oder Bericht an.
gruss ekkehard

*) Sonderzeichen in Objektname sollten vermieden werden, sie müssen sonst bei
jedem Bezug darauf [geklammert] werden.

edit:
noch was; - die Bedeutung der Felder ist mir auch eher unklar
Titel: Re: Übergabe von Daten aus einer Tabelle in ein Textfeld
Beitrag von: MartinGrebe am Januar 16, 2020, 14:07:35
In der Tabelle "Tätigkeiten" stehen die entsprechenden Daten die ich benötige wenn ich die Nummer der entsprechenden Tätigkeit im Formular eingebe und die anderen Felder dann mit den Werten der jeweiligen Tätigkeit gefüllt werden sollen.
In der zweiten Tabelle sollten die in dem Formular eingegebenen/gefüllten Felder dann abgespeichert werden.
Eine Auswertung soll dann später durchgeführt werden in der man sieht für welche Kostenstelle z.B. welche Tätigkeiten ausgeführt worden sind. Die Datenbank enthält nur Beispiele, die Objektnamen werden noch angepasst. Die Bedeutungen der Felder dienen auch nur erstmal als Beispiel.

Konkret geht es darum, dass die Mitarbeiter unseres gemeindlichen Bauhofes verschiedene Tätigkeiten an verschienden Objekten in verschiedenen Ortsteilen durchführen. Diese sollen in einer Datenbank eingegeben werden um später die einzelnen Objekte oder Ortsteile oder Tätigkeiten auswerten zu können um z.B. Gebühren zu kalkulieren. Um nicht jedesmal die Tätigkeit oder den Ort einzugeben, soll das ganze über eine spezifische Nummer gelöst werden, die eingegeben wird und die anderen Daten stehen dann entsprechend der eingegebenen Nummer automatisch zur Verfügung und werden in die entsprechenden Felder eingetragen.
Titel: Re: Übergabe von Daten aus einer Tabelle in ein Textfeld
Beitrag von: MzKlMu am Januar 16, 2020, 14:19:57
Hallo,
in der 2 Tabelle (...Auswertung) gibt es das feld zeit, daher vermute ich mal es geht um eine Zeiterfassung für eine Tätigkeit. Da gehört dann aber auch ein Datum dazu.
Wenn das wirklich so ist, so ist das Vorhaben wie bereits in #1 vermutet ersatzlos überflüssig. Es muss nur der Primärschlüssel der Tätigkeit übertragen werden.
Wenn man Datum und Zeit über ein Unterformauar erfasst das über die Schlüsselfelder verknüpft wird, erfolgt die Übertragung automatisch.
Im Anhang die geänderte DB die auf meiner Annahme mit der zeiterfassung beruht.

Bitte auch mal die Beziehungen im Beziehungsfenster ansehen.
Titel: Re: Übergabe von Daten aus einer Tabelle in ein Textfeld
Beitrag von: MartinGrebe am Januar 16, 2020, 14:26:33
Die Annahme mit der Zeiterfassung ist richtig. Was in der Datenbank aber noch nicht funktioniert,
ist die Eingabe der jeweiligen Tätigkeitsnummer in dem Feld Nummer. Oder habe ich etwas übersehen?
Wenn ich z.B. in dem Feld Nummer eine 2 eingebe ändern sich die anderen Felder nicht, dort steht dann immer noch überall "Test 1" obwohl dann überall "Test 2" dort stehen müsste.
Titel: Re: Übergabe von Daten aus einer Tabelle in ein Textfeld
Beitrag von: Beaker s.a. am Januar 16, 2020, 14:33:59
Hallo Martin,
Da fehlen IMO einige Tabellen um deinen Anforderungen gerecht
zu werden. Mit dem, was man jetzt sieht, mindestens
Liegenschaften
Orte
Kostenstellen
Mitarbeiter
Taetigkeiten reduziert sich auf die Felder T_ID, Nummer (?), Taetigkeit (Bezeichnung?). Die T_ID kommt als Fremdschlüssel in die Tabelle "Liegenschaften" (vermutlich).
Die doppelte Tabelle ist überflüssig. Weitere Hinweise kann ich auf Grund
des mangelnden Wissens über die abzubildende Realität nicht geben.
Zu raten wäre dir, dich mit den Links (1 und 1a) in Franz' Postings zu beschäftigen, und dir vielleicht dieses Tool herunter zu laden: http://www.buch.andreasstern.de/adamo.php (http://www.buch.andreasstern.de/adamo.php)
ZitatWenn ich z.B. in dem Feld Nummer eine 2 eingebe ändern sich die anderen Felder nicht
Dann passe den von mir früher geposteten Code auf das richtige Feld zum Finden an.

Private Sub NameDesEingabefeldes_AfterUpdate()

    With Me.Recordset
        .FindFirst "Nummer = " & Me.NameDesEingabefeldes
'ausgehend von einer vollständigen Eingabe der Nummer
'besser (anwendungsfreundlicher) evtl. ein Kombifeld (ungebunden),
'womit auch die folgende Prüfung obsolet wird
        If .NoMatch Then
            MsgBox "Kein Datensatz gefunden!"
        End If
    End With
End Sub


gruss ekkehard
Titel: Re: Übergabe von Daten aus einer Tabelle in ein Textfeld
Beitrag von: MartinGrebe am Januar 16, 2020, 14:40:12
Ich werde mal versuchen, den von dir geposteten Code zu modifizieren und ich werde mir auch mal das von dir empfohlene Tool herunterladen und mir mal anschauen. Anscheinend ist mein Problem doch etwas kompliziert...
Titel: Re: Übergabe von Daten aus einer Tabelle in ein Textfeld
Beitrag von: MzKlMu am Januar 16, 2020, 14:50:52
Hallo,
hast Du Dir eigentlich jemals den Link in #4 angesehen, den ich dort gepostet habe?
ZitatWenn ich z.B. in dem Feld Nummer eine 2 eingebe ändern sich die anderen Felder nicht,
Das geht natürlich nicht, wenn Du in ein solches Feld was einträgst, so änderst Du ja die bestehenden Daten. Du brauchst ein extra Feld zum Suchen einer Tätigkeit das ungebunden sein muss und das man am Besten als Kombifeld anlegt.
Ansonsten schließe ich mich der Meinung von ekkehard an, da sind noch mehr Tabellen erforderlich. Das kann man nicht einfach so mal machen.

Im Anhang noch die geänderte DB mit dem Kombi. Ansonsten rate ich Dir dringend Dich mit den Grundlagen zu beschäftigen. Und erst dann mal den Link den Ekkehard gepostet hat.
Es fällt Dir dann meiner Meinung nach leichter das Tool anzuwenden.
Titel: Re: Übergabe von Daten aus einer Tabelle in ein Textfeld
Beitrag von: MartinGrebe am Januar 16, 2020, 15:02:53
Ich danke euch erstmal für die Antworten. Und ich werde mir dann auch den Link von dir ansehen und das Tool. Mal schauen, ob ich dann weiterkomme. Ich werde euch auf dem Laufenden halten. Vielen, vielen Dank erstmal.
Titel: Re: Übergabe von Daten aus einer Tabelle in ein Textfeld
Beitrag von: Beaker s.a. am Januar 16, 2020, 15:04:40
Hallo Klaus,
ZitatUnd erst dann mal den Link den Ekkehard gepostet hat.
Es fällt Dir dann meiner Meinung nach leichter das Tool anzuwenden.
Normal formuliere ich meinen Hinweis auf adamo in Zusammenhang mit Franz'
Links auch in dieser Richtung.
Zitat... um das Gelesene/Gelernte praktisch zu üben/umzusetzen empfehle ich ...
gruss ekkehard
Titel: Re: Übergabe von Daten aus einer Tabelle in ein Textfeld
Beitrag von: MartinGrebe am Januar 23, 2020, 10:20:02
Bevor ich jetzt weitermache, habe ich nach Recherchen erstmal folgendes im "Kleinen" versucht (siehe Datenbank im Anhang). Leider funktioniert das nicht, irgendwo ist ein Fehler drin. Oder funktioniert das so überhaupt nicht, wie ich es jetzt versucht habe?
In der ersten Zeile des Formulars wird eine Zahl eingegeben, die die Tätigkeitsnummer definiert. Nach Eingabe der Zahl soll in der zweiten Zeile die Tätigkeit ausgegeben werden, die aufgrund der eingegebenen Zahl gesucht wird.


Titel: Re: Übergabe von Daten aus einer Tabelle in ein Textfeld
Beitrag von: Beaker s.a. am Januar 23, 2020, 15:57:19
Hallo Martin,
Sorry, aber so wird das nichts. Du MUSST dich mit den Basics zu relationalen
Datenbanken beschäftigen; - wichtigstes Stichwort: Normalisierung.
Die passenden Links hast du hier schon mehrfach bekommen.

Auch wenn dich das nicht weiterbringt (s.u.), der Ausdruck im Formularfeld
"Taetigkeit" muss so aussehen
=DomWert("[Taetigkeit]";"[Taetigkeitennummern]";"[Nummer] =" & [Formulare]![Eingabeformular]![Taetigkeitsnr])
Auf diese Weise bekommst du aber den Text nicht in die Auswertungs-Tabelle,
die ja DS-Herkunft des Formulars ist, da du das Feld so nicht mehr an das Feld
"Taetigkeit" binden kannst. Und das ist der erste Stolperstein deines nicht vor-
handenen Datenmodells.
Im Prinzip (Angaben bezogen auf Beziehungsbild):
für die unteren drei Felder in "Taetigkeitennummern" sind eigene Tabellen anzu-
legen; - Liegenschaften sind ein eigenes Objekt, Ortsteile und Kostenstellen sind
Vorhaltetabellen. Zu einer solchen wird dann auch diese Tabelle und sollte dann
vielleicht einfach nur "Taetigkeiten" heissen. Dazu noch eine Tabelle für die Mit-
arbeiter und die Tabelle "Taetigkeitenauswertung" wird überflüssig.
Mit den richtigen Beziehungen
- Liegenschaften befinden sich an einem Ort,
- Tätigkeiten werden von Mitarbeiter(n) an Liegenschaft(en) durchgeführt und
werden Kostenstelle(en) zugeordnet,
sind dann Auswertungen jeder Art kein Riesenproblem mehr.
Für eine genaue Zeiterfassung brauchst du dann noch mind. eine weitere Tabelle.

gruss ekkehard
Titel: Re: Übergabe von Daten aus einer Tabelle in ein Textfeld
Beitrag von: MzKlMu am Januar 23, 2020, 16:19:50
Hallo,
@Martin
ich hatte Dir in #13 ein Beispiel angehängt. Davon hast Du nichts übernommen.
Dein neuer Versuch ist unbrauchbar. Orientiere Dich an dem Beispiel von mir.

Die Tabellen die Ekkehard erwähnt hat, müssen da noch dazu.

In #4 hatte ich Dir einen Link gepostet, schon mal angesehen ?

Du musst Dich mit den Grundlagen beschäftigen, sonst kannst Du keine Datenbank machen.