Neuigkeiten:

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

Mobiles Hauptmenü

Zusammenfassen von Einträgen

Begonnen von Francolino, Februar 15, 2015, 22:25:43

⏪ vorheriges - nächstes ⏩

Francolino

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

Freundliche Grüße
Franco

DF6GL

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.

Francolino

#2
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
Freundliche Grüße
Franco

DF6GL

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.

Francolino

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
Freundliche Grüße
Franco

MaggieMay

#5
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.
Freundliche Grüße
MaggieMay

Francolino

@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.
Freundliche Grüße
Franco

MaggieMay

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)
Freundliche Grüße
MaggieMay

Francolino

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.
Freundliche Grüße
Franco

DF6GL

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?

Francolino

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
Freundliche Grüße
Franco

DF6GL

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.

MaggieMay

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.
Freundliche Grüße
MaggieMay

Francolino

#13
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
Freundliche Grüße
Franco

MaggieMay

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?
Freundliche Grüße
MaggieMay