Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Francolino am Februar 15, 2015, 22:25:43

Titel: Zusammenfassen von Einträgen
Beitrag von: Francolino am Februar 15, 2015, 22:25:43
Hallo zusammen,

ich habe folgendes Problem und bin schon seit einigen Tagen fast am verzweifeln...
Hoffe ihr Spezialisten könnt mir helfen.
Zur Aufgabenstellung - ich habe eine Excel Tabelle in Access importiert.
In der Tabelle geht es um User, dazugehörige Benutzerrollen und Rollenbezeichnungen und Transaktionscodes (aus SAP).

Das Ziel ist ein über Access ein Formular zu entwickeln, bei dem ich einen User auswählen kann und mir dann als Ergebnis die ihm zugeordneten RolleN mit BezeichnungEN auszugeben.
Ich habe mir erst eine Abfrage erstellt, die mir anzeigt, welche Benutzer, welche Rollen haben.

Noch eine Anmerkung - ich habe für die Abfrage zwei weitere Tabellen zur Hilfe genommen,
in denen mir nur alle User als solche und alle Rollen als solche einzeln aufgeführt werden, ohne
Zusammenhang, das kommt dann in der Gesamttabelle.

Das wollte ich dann ins Formular packen, doch erstens wird mir immer nur eine Rolle zum ausgewählten Benutzer angezeigt und dann werden mir alle Benutzer mehrfach angezeigt für jede
einzelne Rolle. Doch ich möchte das zusammengefasst haben.

Ich hänge hier die entsprechenden Screenshots an und hoffe, dass ihr mir die Lösung aufzeigen könnt. Bitte bei Erklärungen daran denken, dass ich ein Access Anfänger bin ;-)

Danke für eure Mühen und eure Hilfe.
Grüße
Franco

Titel: Re: Zusammenfassen von Einträgen
Beitrag von: DF6GL am Februar 16, 2015, 08:54:05
Hallo,

als Quick&Dirty-Lösung (und demzufolge nicht zu empfehlen) käme folgendes in Betracht:

--ID-Felder aus den Tabellen AlleRollen und Benutzerliste entfernen

--Die Felder AlleRollen.Rolle und Benutzerliste.VollständigerName (Leerzeichen entfernen!) als Primärschlüssel ausführen.

-- 1:n-Beziehungen zwischen AlleRollen.Rolle und Gesamtliste2015.Rolle sowie zwischen Benutzerliste.VollständigerName und Gesamtliste2015.Benutzer herstellen.

-- die Abfragen wegwerfen.

--Formulare erstellen:
   Einzelformulare für AlleRollen und Benutzerliste
   Endlosformular für Gesamtliste2015
   Im Formular frmBenutzerliste ein UFO-Steuerelement einbauen, das das Formular frmGesamtliste anzeigt.

Wenn die Beziehungen wie oben angegeben erstellt wurden, dann sind die Eigenschaften Verknüpfen von/nach des UFO-Steuerelementes richtig gesetzt und frmBenutzer zeigt die einzelnen Benutzer mit ihren zugeordneten Rollen an.

Um nach einem User zu suchen, erstell im Formularkopf ein ungebundenes Kombifeld:

cmbSuchen

Steuerelementinhalt:  leer
Datensatzherkunft:  Select VollständigerName from Benutzerliste order by VollständigerName
Spaltenanzahl:1
Gebundene Spalte: 1
Spaltenbreiten: 4


mit dieser Ereignisprozedur "Nach Aktualisierung" des Kombis:

Sub cmbSuchen_Afterupdate()
Me.Filter = VollständigerName = '" & Me!cmbSuchen & "'"
Me.FilterOn=true
End Sub


Empfohlene Lösung:

Tabellen und Felder  besser benamsen. (Eindeutige Namen verwenden, Sonder- und Leerzeichen vermeiden).
ID-Felder mit Datentyp  Autowert einbauen.

Fremdschlüsselfelder (Datentyp Long) anstelle von Gesamtliste2015.Rolle und Gesamtliste2015.Benutzer einbauen und über diese Schlüsselfelder die Beziehungen erstellen.

Beim Suchen über das Kombifeld die Schlüsselfelder(-werte) verwenden.


Den Import der ext. Excelliste in  diese Konstellation mit geeigneten Anfügeabfragen durchführen.
Titel: Re: Zusammenfassen von Einträgen
Beitrag von: Francolino am Februar 20, 2015, 10:56:46
Hallo DF6GL,

"Die Felder AlleRollen.Rolle und Benutzerliste.VollständigerName (Leerzeichen entfernen!) als Primärschlüssel ausführen."
Ich kann doch die Leerzeichen vom Vollständigen Namen entfernen, weil das sonst die Lesbarkeit
einschränken würde. Und die Sonderzeichen kann ich auch nicht entfernen, weil diese so aus dem SAP
kommen. Es ist ja gewünscht, dass ich zukünftig es ja hin und wieder aktualisieren muss und somit
kommen die Bezeichnungen wieder so aus dem SAP.

"die Abfragen wegwerfen."
Und dann soll ich meine Formulare direkt aus den Tabellen entwerfen und nicht mehr aus den Abfragen - ist das so richtig? Weil wenn ich die Abfragen wegwerfe, funktionieren auch die Formulare nicht mehr.

"Tabellen und Felder  besser benamsen. (Eindeutige Namen verwenden, Sonder- und Leerzeichen vermeiden)."
Tabellen kann ich ja in tblAlleRollen, tblBenutzerliste und tblGesamtliste nennen. Die Feldbezeichnungen wären meines erachtens bereits eindeutig benamst (Rolle, Rollenbezeichnung und VollständigerName-hier das Leerzeichen sollte ich weg tun).


Zur empfohlenen Lösung: (dann sollte ich doch diese verfolgen, wenn das die elegantere ist)
"ID-Felder mit Datentyp  Autowert einbauen."
ID-Felder sind bereits mit dem Datentyp "Autowert"

"Fremdschlüsselfelder (Datentyp Long) anstelle von Gesamtliste2015.Rolle und Gesamtliste2015.Benutzer einbauen und über diese Schlüsselfelder die Beziehungen erstellen."
Das müsstest du mir etwas genauer erklären bzw. wie ich das mache.

Ich kann dir auch mal die Datei zukommen lassen, wenn es verständlicher ist.
Sollte bis Dienstag/Mittwoch die Lösung vorstellen.
Habe als Anhang mal die Testdateien angehängt, die meine Basis für die leere DB war.
Es kann sich ja jeder dran versuchen und mir das Ergebnis auch gerne per Mail senden an:
franco@gallitiello.de

Ich bekomm's net so wirklich hin.

Merci & Viele Grüße
Franco
Titel: Re: Zusammenfassen von Einträgen
Beitrag von: DF6GL am Februar 22, 2015, 21:52:06
Hallo,

"Leerzeichen entfernen!"   soll in den Tabellen- und Tabellenfeldnamen passieren, nicht in den Daten....

"die Abfragen wegwerfen."   bezieht sich auf die Abfrage, die ich im Beispiel des ersten Posts sehe. (Entgegen der Meinung Anderer hier benutze ich beim konzeptionellen Erstellen von Datenbank keine Abfragen für die Datenherkunft von Formularen, sondern setze nur den Tabellennamen ein.  Genau genommen erstellt aber hierbei Access trotzdem selber eine interne Abfrage... ).

""Tabellen und Felder  besser benamsen. "  :
Tabellen:
tblBenutzer
tblRollen
tblBenutzerRollen

Felder:
B_VollstaendigerName (Primärschlüssel)
B_Benutzername
B_Vorname
B_Nachname
.
.

R_Rolle  (Primärschlüssel)
R_Rollenbezeichnung

BR_Benutzer  (Fremdschlüssel)
BR_Rolle        (Fremdschlüssel)
BR_Transaktionscode
BR_Transaktionstext

im Falle, dass die Quick&Dirty-Lösung zum Einsatz kommt.

Formulare:

frmBenutzer  (Einzelform, mit UFO_St-El. für frmBenutzerrollen, verknüpft über die Schlüsselfelder.)
frmRollen      (Einzelform)
frmBenutzerrollen  (Endlosform)


Die "empfohlene" Lösung hat hier vermutlich keine größeren Vorteile, wenn man die permanente Aktualisierung der Excel-Tabelle (bzw. des SAP-Outputs) berücksichtigt. Die hierbei nötige Vorarbeit an geeigneten  Import-Anfügeabfragen entfällt bei der Q&D-Lösung.
Titel: Re: Zusammenfassen von Einträgen
Beitrag von: Francolino am Februar 23, 2015, 15:22:40
Hallo DF6GL,

ich bin schon einmal ein Stückchen weiter gekommen.
Jetzt kann ich die Benutzer (B_VollstaendigerName) auswählen (diese werden nicht mehrfach angezeigt) und die dazugehörigen BR_Rollen werden mir ausgegeben.
Doch nicht nur die BR_Rollen, sondern auch der BR_Transaktionscode und -text und ID. Diese Dinge möchte ich aber nicht in dieser Auswertung haben.
Wie bekomme ich diese web und vor allem die Einträge von BR_Rolle nur einfach und nicht mehrfach ausgegeben. Dies muss ich dann auch auf die Benutzer mit den Rollen als Ausgabe übertragen.

Die Daten habe ich zum Verständis ebenfalls mit hochgeladen.
Mach gleich weiter, wenn ich eine Antwort erhalte.

Habe jetzt eine neue Test_DB angelegt - kannst du dir anschauen

Vielen Dank und Grüße
Franco
Titel: Re: Zusammenfassen von Einträgen
Beitrag von: MaggieMay am Februar 23, 2015, 15:33:49
Hi,

du musst doch nur die überflüssigen Datenfelder aus dem Formular und aus der zugrunde liegenden Abfrage rausnehmen.

Das heißt natürlich auch, dass du Formulare als Unterformular einsetzen musst und nicht die Tabellen. Eine Abfrage ginge natürlich auch. Mit "Select Distinct ..." bekommst du die doppeleten Einträge weg.
Titel: Re: Zusammenfassen von Einträgen
Beitrag von: Francolino am Februar 23, 2015, 16:12:13
@MaggieMay:
siehe Antworten von GF6DL... keine Abfragen, sondern gleich die Daten in den Formularen anzeigen lassen.

Ich habe doch ein Unterformular drin.
"SELECT Distinct" ergab eben nicht das gewünschte Ergebnis.

Teste es selbst und lade mir deinen Versionsvorschlag hier wieder hoch.
Bin gespannt.
Danke.
Titel: Re: Zusammenfassen von Einträgen
Beitrag von: MaggieMay am Februar 23, 2015, 16:16:22
Mach es einfach wie ich es gesagt habe, denn anders kann es nicht funktionieren.

Erstelle eine Abfrage, bspw. "sel_Rollen" mit folgendem Code:SELECT DISTINCT tblGesamtliste.BR_Benutzer, tbdRollen.R_Rolle, tbdRollen.R_Rollenbezeichnung
FROM tbdRollen INNER JOIN tblGesamtliste ON tbdRollen.R_Rolle = tblGesamtliste.BR_Rolle;
und setze sie im Ufo von frmBenutzer anstelle der Tabelle ein.

Die Aussage von DF6GL wurde möglicherweise unter anderen Voraussetzungen gemacht.
(ich habe nicht alles gelesen)
Titel: Re: Zusammenfassen von Einträgen
Beitrag von: Francolino am Februar 23, 2015, 16:58:36
Hi MaggieMay,

habe gerade die Abfrage erstellt und zusätzlich als UFO eingefügt.
Bringt 1:1 das gleiche Ergebnis.
Sonst probiere es aus und lade die geänderte DB hoch.
Danke.
Titel: Re: Zusammenfassen von Einträgen
Beitrag von: DF6GL am Februar 23, 2015, 17:22:35
Hallo,


Anzeigen (aller Daten) und (komprimierte) Auswertungen sind ja nun zwei unterschiedliche Dinge....


Was genau willst Du denn nun auswerten?  (Wie heißt die Frage(n), die beantwortet werden soll? bzw. sollen?) 
Und wo(mit) sollen die Ergebnisse dargestellt werden?
Titel: Re: Zusammenfassen von Einträgen
Beitrag von: Francolino am Februar 23, 2015, 18:16:39
Hallo,

die Fragen, die beantwortet werden sollen, lauten:

Wenn ich einen Benutzer über das Kombifeld auswähle, soll mir alle dazugehörigen Rollen ausgegeben werden (im Formular). Das sollte dann, wenn möglich per Mail gesendet werden können.

Dann muss ich eine Rolle über das Kombifeld auswählen können und es soll mir alle Benutzer
ausgegeben werden, die zu der Rolle gehören. Wenn möglich auch per Mail gesendet werden.

Wenn ich das habe, muss ich weiter eine Rolle auswählen und dann sollen alle Transaktionen dazu ausgegeben werden.

Dann muss ich es auf Transaktionen ausweiten, d.h. die Transaktion auswählen und
es soll die Benutzer ausgegeben werden, die diese enthalten.
Weiter welche Transaktionen (Kombifeld) stecken in welchen Rollen.

Und dann noch Transaktion auswählen und als Ausgabe sollen die Rollen sein, die diese enthalten.

Das sind die Fragen, die beantwortet werden sollen.
Und als Darstellung bieten sich eben doch die Formulare an, weil das auswählen kann (über das Kombifeld), was man wissen möchte und im Unteren Teil möchte ich das Ergebnis haben, was ich dann eben per Mail versenden kann, falls Änderungen gewünscht sind.

Vielleicht hatte ich mich davor etwas missverständlich ausgedrückt.

Danke für die Hilfen.
Grüße
Franco
Titel: Re: Zusammenfassen von Einträgen
Beitrag von: DF6GL am Februar 23, 2015, 21:43:37
Hallo,


anbei die Beispiel-Lösung zur ersten Frage/Aufgabe.

Die anderen "Auswertungen" folgen  ähnlichen Prinzip.

Die Abfragen können auch für z. B. Berichte herangezogen werden.
Titel: Re: Zusammenfassen von Einträgen
Beitrag von: MaggieMay am Februar 24, 2015, 00:03:54
Hallo,
Zitat von: Francolino am Februar 23, 2015, 16:58:36habe gerade die Abfrage erstellt und zusätzlich als UFO eingefügt.
Bringt 1:1 das gleiche Ergebnis.
beschreibe bitte nicht das Ergebnis sondern zeige deinen Versuch, d.h. lade deine Test-DB hoch, damit man sieht wie du das umgesetzt hast und dir erklären kann was daran falsch war. Das halte ich immer noch für die bessere Vorgehensweise, als lauffähige Beispiele zu posten, die blind übernommen aber nicht verstanden werden.
Titel: Re: Zusammenfassen von Einträgen
Beitrag von: Francolino am Februar 24, 2015, 10:02:02
Hallo zusammen,

anbei meine Test_DB. Wir haben eigentlich schon fast die Lösung.
Es muss nur noch funktionieren, dass im UFO nur die Spalte "Benutzer" bzw. "Rollen" angezeigt wird und darin eben keine Doppelten Werte ausgegeben werden. Das dürfte für euch doch kein Problem darstellen.

Die Abfrage an sich funktioniert mit dem richtigen Ergebnis.
Nur das Ufo stellt es falsch dar.

Am Schluss muss ich noch einen Button oder ähnlich haben, damit man mir den abgefragten Datensatz per Mail senden kann.

Grüße
Titel: Re: Zusammenfassen von Einträgen
Beitrag von: MaggieMay am Februar 24, 2015, 11:34:18
Hi,
ZitatDie Abfrage an sich funktioniert mit dem richtigen Ergebnis.
Nur das Ufo stellt es falsch dar.
das ist ja auch kein Wunder, wenn die Basis des Unterformulars "qryRollen-Unterformular" eine ganz andere Abfrage ist.  ::)

Wie stellst du dir das denn vor mit dem Versenden eines Datensatzes, in welcher Form soll der in der Email dargestellt werden?
Titel: Re: Zusammenfassen von Einträgen
Beitrag von: Francolino am Februar 24, 2015, 13:32:14
Hi MaggieMay,

welche Basis ist im Ufo falsch. Ich habe das Hauptformular geöffnet und ziehe darin die Abfrage per drag&drop rein - klicke auf fertigstellen und erhalte dann
das Ergebnis.
Dann pass es mir doch bitte kurz an und hänge es an oder per screenshot was du meinst.

mit dem Versenden stelle ich es mir so vor, dass ich einen Button habe,
auf das ich klicke und mir der angezeigte Datensatz als Anhang oder in Textform versendet wird. Es darf auch eine fest hinterlegte Emailadresse
hinterlegt sein.
Geht sowas überhaupt?
Grüße

Titel: Re: Zusammenfassen von Einträgen
Beitrag von: MaggieMay am Februar 24, 2015, 13:39:59
Dies ist die Datensatzherkunft des Unterformulars "qryRollen-Unterformular":
SELECT [tblGesamtliste].[BR_Benutzer], [tbdRollen].[R_Rolle], [tbdRollen].[R_Rollenbezeichnung]
FROM tbdRollen INNER JOIN tblGesamtliste ON [tbdRollen].[R_Rolle] =[tblGesamtliste].[BR_Rolle];


und dies ist der SQL-Code der Abfrage "qryRollen":
SELECT DISTINCT tblGesamtliste.BR_Benutzer, tbdRollen.R_Rolle, tbdRollen.R_Rollenbezeichnung
FROM tbdRollen INNER JOIN tblGesamtliste ON tbdRollen.R_Rolle = tblGesamtliste.BR_Rolle;


Siehst du nun den entscheidenden Unterschied?

BTW: Wenn du schon eine gespeicherte Abfrage hast, sollte sie auch eingesetzt werden.
Titel: Re: Zusammenfassen von Einträgen
Beitrag von: DF6GL am Februar 24, 2015, 13:52:35
HAllo,

@Francolino

"Geht sowas überhaupt?"

Hast Du überhaupt mal mein hochgeladenes DB-Beispiel angesehen??
Titel: Re: Zusammenfassen von Einträgen
Beitrag von: Francolino am Februar 24, 2015, 18:21:15
@MaggieMay:
Oh man - jetzt war ich selbst schon kurz davor und hab euch noch weiter genervt. Hatte halt gedacht, wenn die Abfrage stimmt und diese per
Drag&Drop rein ziehe, dass dann auch das Ergebnis stimmen muss.

Somit haben wir das mit den Formularen schon alle 3 gemeinsam geschafft! :-)

@DF6GL:
hatte die Test_DB heute Vormittag geöffnet und es war mir leider nicht
aufgefallen, dass unten der Button integriert war.

Nun meine heutige Bitte:
könntest du mir erläutern, wie der Button erstellt wird?

Worauf ich schon gekommen bin, ist das Steuerelement "Schaltfläche".
Und jetzt weiß ich nicht welche Kategorie bzw. Aktion ich nehmen soll, weil
die passende - sende Datensatz als Anhang in Email nicht dabei ist, bzw.
ich erkenne/ sehe es nicht.

Und wie mache ich dann weiter - hast du als Ereignis "Beim Klicken" ein
Makro-Generator, Ausdrucks-Generator oder Code-Generator genommen?
Den Code habe ich ja bei dir gesehen.

Viele Grüße
Franco
Titel: Re: Zusammenfassen von Einträgen
Beitrag von: DF6GL am Februar 24, 2015, 19:12:39
Hallo,

eine Schaltfläche hat als Ereignis-Eigenschaft u. a. "Beim Klicken", der man den Ausdruck "[Ereignisprozedur]" zuweisen kann.  Klick auf die rechts stehenden 3 Pünktchen und der darauf folgenden Auswahl-Möglichkeit "Code Generator", die die Erstellung eines VBA-Ereignisprozedur-Gerüstes zur Folge hat. Dieses Gerüst kann nun mit passenden Code gefüllt werden, der dann während der Laufzeit ausgeführt wird, wenn die Schaltfläche angeklickt wird.

Makros benutze ich nicht in aller Regel nicht (von den Docmd-Methoden mal abgesehen) , genauso wenig den Ausdrucksgenerator.


ZitatUnd jetzt weiß ich nicht welche Kategorie bzw. Aktion ich nehmen soll, weil
die passende - sende Datensatz als Anhang in Email nicht dabei ist, bzw.
ich erkenne/ sehe es nicht.

Im Vorfeld haben wir doch eine Abfrage mit Formular-Steuerelement-Verweis für das Kriterium erstellt.  Diese Abfrage wird mit Docmd.Sendobject als Anhang im angegebenen Format (hier als xls-Datei)  in einem neuen Mail-Fenster  angebunden...
Titel: Re: Zusammenfassen von Einträgen
Beitrag von: Francolino am Februar 24, 2015, 20:43:24
Hallo DF6GL,

ok, wie ich den "button" erstelle, habe ich verstanden.
Doch wenn ich die von mir erstellte Abfrage als Excel einbinde, erhalte ich nur die gesamte Liste.
Die Abfrage benötige ich so, für die Ausgabe im Formular.

Deswegen dachte ich, dass ich das Unterformular als Excel in die Mail einbinde.
Doch das geht leider nicht.
Wie bekomme ich jetzt beides noch hin?
Siehe Datei im Anhang.
Danke.
Titel: Re: Zusammenfassen von Einträgen
Beitrag von: MaggieMay am Februar 24, 2015, 20:56:00
Hi,

wie kommt es, dass du die Unterschiede nicht erkennst? In der Beispiel-DB von DF6GL wird eine Abfrage exportiert, du jedoch exportierst das Unterformular, wie auch immer das mit diesem Code funktionieren mag:
DoCmd.SendObject acSendQuery, "qryRollen-Unterformular", ...

Außerdem ist deine Abfrage "qryRollen" im Gegensatz zu der aus der Beispiel-DB nicht gefiltert.
Titel: Re: Zusammenfassen von Einträgen
Beitrag von: Francolino am Februar 24, 2015, 21:27:15
Hi zusammen,

ok - jetzt habe ich's. Hatte den Unterschied nicht erkannt, weil ich immer noch andere Dinge
nebenher mache.
Dann hatte ich mir zwar die Abfrage von DF6GL angeschaut, aber als ich die Abfrage als solche
ausgeführt hatte, kam ein Popup hoch mit der Dateneingabe. Das kam mir komisch vor.
Aber im Formular (was ja schlussendlich) veröffentlicht wird, macht das durchaus sinn.

Jetzt weite ich es auf die anderen Fragen aus mit Transaktionen zu Rolle usw.
Am Schluss muss ich dann noch unser Logo in Transparent einbauen oder ich passen den Hintergrund im Formularkopf in weiß an, je nachdem was besser geht.

Viele herzlichen Dank euch beiden!
Beste Grüße
Franco

Ich danke euch beiden für die tatkräftige und ausdauernde Unterstützung mit mir als Neuling.