Access-o-Mania

Access-Forum (Deutsch/German) => Bericht => Thema gestartet von: Vertigo am Januar 07, 2019, 10:55:34

Titel: Wachenbuch Gelesen Namenanzeige
Beitrag von: Vertigo am Januar 07, 2019, 10:55:34
Hallo Leute,

also ich habe mich durch das Forum gelesen, aber nichts gefunden was mein Problem beheben könnte. (Korrigiert mich bitte, falls ich was überlesen haben sollte)

Folgendes Problem stellt sich meiner Access arbeit:

Ich habe ein Wachenbuch- Bericht(von TblWachenbuch) erstellt, da sind alle Einträge vorhanden die verfasst worden sind (S. Anhang), dort existiert nun auch einen gelesen Button, dieser Button speichert (sobald geklickt wird) den
Namen, Datum und die ID des Eintrags in "TblGelesen"

(Es gibt übrigens eine Loginform sodass jeder eine Eindeutige Kennung hat)


Ich will jetzt eigentlich einfach nur, dass er mir anzeigt (in einem Listenfeld?!) wer den jeweiligen Eintrag als gelesen markiert hat.

Ich habe es per SQL versucht:
SELECT NachnameGelesen
FROM TblGelesen
WHERE [IDGelesen]=[IDWachenbuch]
(Und ähnliche Möglichkeiten die ich durchprobierte)

führt aber zu keinem Ergebnis, lasse ich die Where-Klausel aus, dann tauchen natürlich brav alle Namen auf, aber ich bekomme keine Where Klausel hin, in welcher nur die Ergebnisse (/Namen) des jeweiligen Eintrags auftaucht.

Probleme die durchs Probieren auftauchen sind:
-Er verlangt einen Wert für die IDWachenbuch
-"Datentypenkonflikt im Ausdruck"


Ich habe das Gefühl das ich einfach etwas schlichtes übersehe.


Involvierte Elemente:
TblGelesen: (LFDNrGelesen,) IDGelesen, NachnameGelesen, DatumGelesen

TblWachenbuch: IDWachenbuch, DatumWachenbuch, NameWachenbuch, (...)


Vielen Dank für die Unterstützung
Titel: Re: Wachenbuch Gelesen Namenanzeige
Beitrag von: MzKlMu am Januar 07, 2019, 11:04:29
Hallo,
zeige lieber mal ein Bild des Beziehungsfensters, das angehängte Bild hilft eher nix.
Titel: Re: Wachenbuch Gelesen Namenanzeige
Beitrag von: Lachtaube am Januar 07, 2019, 11:37:35
Hallo,

Du willst doch dann die Einträge anzeigen, wenn Sie als nicht gelesen eingestuft werden. Es bedarf also einer Tabelle, in der die Datensätze als gelesen eingetragen werden. Um die ungelesenen Einträge zu ermitteln, kann der Abfrageassistent zur Inkonsistenzsuche herangezogen werden. Auf der linken Seite verwendest Du Deine fixe ID (kommt dann von der Anmeldung) und auf der rechten Seite lässt Du alle Einträge anzeigen, für die es keinen passenden Eintrag in der Tabelle gibt. Beim Lesen der Einträge kannst Du dann mittels Anfügeabfrage den Abschnitt in die Tabelle als gelesen markieren und austragen lassen.
Titel: Re: Wachenbuch Gelesen Namenanzeige
Beitrag von: Vertigo am Januar 07, 2019, 11:42:27
Sollte eigentlich passiert sein, dass die Beziehungen mit anhängen.


@Lachtaube:
Erstmal nicht, es soll neben den Einträgen nur angezeigt werden, wer den Button gelesen gedrückt hat.
Titel: Re: Wachenbuch Gelesen Namenanzeige
Beitrag von: MzKlMu am Januar 07, 2019, 12:10:34
Hallo,
eine Abfrage mit beiden Tabellen und der Verknüpfung sollte alle Datensätze zeigen mit übereinstimmender ID. Die Abfrage braucht (bzw. darf keines haben) kein Kriterium.

Hinweis:
Die Tabelle "TblWachenbuch" sollte ein Schlüsselfeld zur Person enthalten. Die  Namenserfassung in der "Gelesen" Tabelle ist ohnehin ersatzlos überflüssig, denn im Datensatz des Wachenbuchs ist der Name ja bekannt und das reicht.


Übrigens, was machst Du bei 2x Müller ?
Titel: Re: Wachenbuch Gelesen Namenanzeige
Beitrag von: Lachtaube am Januar 07, 2019, 12:15:16
Hallo,

so ist das ja auch falsch. Du meldest Dich an und erhältst eine eindeutige ID (von der Anmeldung). Mit dieser eindeutigen ID beziehst Du alle Inhalte der Tabelle info_wache, für die es noch keinen Eintrag in der Tabelle info gibt.
Titel: Re: Wachenbuch Gelesen Namenanzeige
Beitrag von: Vertigo am Januar 07, 2019, 13:25:37
Zitat von: MzKlMu am Januar 07, 2019, 12:10:34
Hallo,
eine Abfrage mit beiden Tabellen und der Verknüpfung sollte alle Datensätze zeigen mit übereinstimmender ID. Die Abfrage braucht (bzw. darf keines haben) kein Kriterium.

Hinweis:
Die Tabelle "TblWachenbuch" sollte ein Schlüsselfeld zur Person enthalten. Die  Namenserfassung in der "Gelesen" Tabelle ist ohnehin ersatzlos überflüssig, denn im Datensatz des Wachenbuchs ist der Name ja bekannt und das reicht.


Übrigens, was machst Du bei 2x Müller ?

Also wenn ich kein Kriterium setze, dann zeigt er mir alle Datensätze aus 'Gelesen' an?!


Das Schlüsselfeld ist der Name. Aber in der Tabelle Gelesen wird festgehalten wer den Eintrag wirklich gelesen hat und im Wachenbuch werden die erfasst, die die jeweiligen Einträge verfasst haben.

Die Namensdopplung ist bei uns erstmal irrelevant.



Zitat von: Lachtaube am Januar 07, 2019, 12:15:16
Hallo,

so ist das ja auch falsch. Du meldest Dich an und erhältst eine eindeutige ID (von der Anmeldung). Mit dieser eindeutigen ID beziehst Du alle Inhalte der Tabelle info_wache, für die es noch keinen Eintrag in der Tabelle info gibt.



So in etwa? Aber wie sieht dann die Abfrage für das Listenfeld aus?


Titel: Re: Wachenbuch Gelesen Namenanzeige
Beitrag von: Lachtaube am Januar 07, 2019, 13:41:29
SELECT i.info_id,
       i.datum,
       i.info,
FROM   INFO AS i
       LEFT JOIN INFO_WACHE AS iw
              ON i.info_id = iw.info_id
WHERE  iw.info_id IS NULL AND
       iw.wach_id IS NULL;
Titel: Re: Wachenbuch Gelesen Namenanzeige
Beitrag von: Vertigo am Januar 07, 2019, 14:45:53
Zitat von: Lachtaube am Januar 07, 2019, 13:41:29
SELECT i.info_id,
       i.datum,
       i.info,
FROM   INFO AS i
       LEFT JOIN INFO_WACHE AS iw
              ON i.info_id = iw.info_id
WHERE  iw.info_id IS NULL AND
       iw.wach_id IS NULL;


Das lässt sich nicht übertragen.
FROM TblGelesen akzeptiert er noch aber den LEFTJOIN TblWachenbuch nicht mehr.

"Syntaxfehler in FROM-Klausel."

Was bedeutet das? Woran kann das liegen?
Titel: Re: Wachenbuch Gelesen Namenanzeige
Beitrag von: Lachtaube am Januar 07, 2019, 15:58:46
Hallo,
ich verwende überall Autowerte bzw. lange Ganzzahlen, sofern es sich um Fremdschlüsselfelder handelt.
Titel: Re: Wachenbuch Gelesen Namenanzeige
Beitrag von: PhilS am Januar 07, 2019, 18:11:14
Zitat von: Vertigo am Januar 07, 2019, 14:45:53
FROM TblGelesen akzeptiert er noch aber den LEFTJOIN TblWachenbuch nicht mehr.

"Syntaxfehler in FROM-Klausel."
LEFT JOIN sind zwei Worte. - Falls das nicht nur ein Tippfehler hier im Forum war.
Titel: Re: Wachenbuch Gelesen Namenanzeige
Beitrag von: Vertigo am Januar 14, 2019, 09:50:14
Das war nur ein Tippfehler hier im Forum, leider weiß ich nicht woran das liegen soll, er akzeptiert die Wachenbuch Tabelle nicht.
Titel: Re: Wachenbuch Gelesen Namenanzeige
Beitrag von: DF6GL am Januar 14, 2019, 11:43:09
Hallo,

TblGelesen ist überflüssig. Die Felder "Nachnamegelesen"  (---> sollte eher "UserID_f" als Fremdschlüssel des eingeloggten Users sein) und "DatumGelesen" gehören in tblWachenbuch. 



Mit einer verknüpfenden Abfrage über die User-Tabelle und tblWachenbuch   mit den Kriterien
.... Where DatumGelesen is Null And  UserID_f = " & lngUserID

werden alle ungelesenen Einträge des betreffenden Users angezeigt.


Alle gelesenen Einträge:

.... Where DatumGelesen is not Null And  UserID_f = " & lngUserID


Alle Beziehungen sollten als 1:n Typ 1 erstellt werden.




(Habe nicht alle Forenbeiträge gelesen)
Titel: Re: Wachenbuch Gelesen Namenanzeige
Beitrag von: Vertigo am Januar 14, 2019, 13:37:53
Wie bekomme ich denn in die Tabelle des Wachenbuchs den Eintrag, wer auf diesen Gelesen-Button gedrückt hat? Das Problem bisher war halt immer, dass das Ganze ein Bericht ist und er nichts bearbeiten lässt, daher die Lösung zu einer neuen Tabelle, wo hinterlegt ist, in welchem Eintrag und welcher Benutzer den Gelesen-Button gedrückt hat.

Mein Ziel ist es zu sehen wer den Eintrag als gelesen markiert hat und somit bestätigt Ihn auch vernommen zu haben.
Titel: Re: Wachenbuch Gelesen Namenanzeige
Beitrag von: DF6GL am Januar 14, 2019, 15:50:01
Hallo,

ein Bericht in Berichtsansicht reagiert auf das Klickereignis eines Buttons, der offensichtlich ja vorhanden ist.

Dort wird eine Aktualisierungsanfrage hinterlegt, die im betroffenen Eintrag das Datum und die Userid setzt.
Titel: Re: Wachenbuch Gelesen Namenanzeige
Beitrag von: Vertigo am Januar 28, 2019, 08:23:12
Also das Ganze funktioniert immer noch nicht wie ich das möchte.

Also im Wachenbuch habe ich die diversen Einträge und recht neben dem Gelesen-Button soll die Liste der Namen stehen, die den jeweiligen Eintrag bereits als Gelesen angeklickt haben.
Er kann aber kein Bezug zu der der Nummer des Eintrages herstellen.
Sobald der Bericht öffnet, fragt er nach der WachenbuchID Nummer, sobald die eingegeben ist, zeigt er auch die richtigen Werte an, aber eben nicht automatisch und auch nicht auf den Eintrag bezogen.


SELECT TblGelesen.NameGelesen
FROM TblGelesen
WHERE (((TblGelesen.IDGelesen)=[Me].[IDWachenbuch]));


Wobei ich einfach nicht weiß, wie ich das 'Me' ersetzen soll, damit der Bezug auf den jeweiligen Eintrag liegt.


Grüße
Titel: Re: Wachenbuch Gelesen Namenanzeige
Beitrag von: DF6GL am Januar 28, 2019, 09:01:41
Hallo,

ich verstehe die Beschreibung nicht..

Sollen nun die Daten in einem Listenfeld(?) im Form ausgegebenen
oder soll ein Bericht mit den Daten bei Klick auf einen Button geöffnet werden?

Im SQL-Statement muss es in der Where-Condition als Verweis auf ein Formularfeld so lauten:

SELECT TblGelesen.NameGelesen
FROM TblGelesen
WHERE (((TblGelesen.IDGelesen) = Forms!frmWachenbuch!IDWachenbuch  ));

Dabei ist es nötig, dass das Form geöffnet (geladen) ist.


Wenn ein Bericht mit gefilterten Daten beim Klick auf einen Button geöffnet werden soll (Kriterium im Where-Condition-Parameter):

Datenherkunft für den Bericht:
SELECT * FROM TblGelesen



Sub cmdBerichtOeffnen_Click()
   Docmd.OpenReport "rptWachenbuch", acPreView, , "IDGelesen=" & Me!IDWachenbuch
End Sub
Titel: Re: Wachenbuch Gelesen Namenanzeige
Beitrag von: Vertigo am Januar 28, 2019, 10:49:34
Es ist ja ein Bericht und kein Formular.
Ich will einfach nur eine Liste mit den Kollegen haben, die den Eintrag als gelesen markiert haben. Die klicken auf den Button (bestätigen damit, dass der jeweilige Eintrag gelesen wurde) und dann erscheinen im Feld daneben alle Namen, die diesen Eintrag gelesen haben. (siehe Anhang)

Das Problem ist, dass er keinen Bezug zum Eintrag herstellt. Es wird beim Öffnen des Berichts immer nach der WachenbuchID gefragt.
Und da es ja eine Liste ist, soll die einfach beim Öffnen (?!) aktualisiert werden.
Titel: Re: Wachenbuch Gelesen Namenanzeige
Beitrag von: Vertigo am Januar 28, 2019, 11:36:08
Also ich habe es jetzt mit einem Unterformular gelöst, wollte das zwar ohne lösen, aber es erfüllt zunächst seinen Zweck.
Titel: Re: Wachenbuch Gelesen Namenanzeige
Beitrag von: DF6GL am Januar 28, 2019, 15:59:17
Hallo,

das ominöse Textfeld im Endlosform muss ein Listenfeld-Steuerelement sein mit folgender Datensatzherkunft:

SELECT NameGelesen  FROM TblGelesen WHERE IDGelesen = [IDWachenbuch]

Evtl. muss im Ereignis "beim Anzeigen" noch ein Me!LstNameGelesen.Requery eingefügt werden.

Bei einem Bericht in Berichtsansicht könnte es Probleme mit der Aktualisierung des Listenfeldes geben (es gibt kein Ereignis "Beim Anzeigen"). Bei der Seitenansicht ist das "BeimFormatieren"-Ereignis für Requery zu benutzen.




Wenn es sich um einen Berict handelt