Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Accesser11 am März 17, 2011, 15:13:25

Titel: Abfrage-Ergebnis in einer Zeile
Beitrag von: Accesser11 am März 17, 2011, 15:13:25
Hallo zusammen

Wie kann man bewerkstelligen, dass bei einer Abfrage mit Zwischen-Tabellen, das Ergebnis auf einer Zeile angezeigt wird?

Beispiel:

Abfrage-Ergebnis Ist:





NameSprache
MusterDeutsch
MusterEnglisch
MusterFranzösisch

Abfrage-Ergebnis Soll:



NameSpracheSpracheSprache
MusterDeutschEnglischFranzösisch

Vielen Dank und Gruss
Accesser11
Titel: Re: Abfrage-Ergebnis in einer Zeile
Beitrag von: Jonny am März 17, 2011, 15:47:07
Hallo,

so wie ich das sehe brauchst Du eine Abfrage vom Typ Kreuztabelle (siehe Abfrageassi).

Gruß

Johann
Titel: Re: Abfrage-Ergebnis in einer Zeile
Beitrag von: Accesser11 am März 18, 2011, 11:05:53
Hallo zusammen

Kann mir dazu jemand helfen? Ich kapiere die Kreuztabelle nicht so ganz.

Danke und Gruss
Accesser11
Titel: Re: Abfrage-Ergebnis in einer Zeile
Beitrag von: Accesser11 am März 18, 2011, 15:54:34
Niemand eine Idee?
Titel: Re: Abfrage-Ergebnis in einer Zeile
Beitrag von: oma am März 18, 2011, 16:16:31
Hallo Accesser,

dir kann geholfen werden ;D

Übernehme eine kleine Funktion in ein Modul deiner DB:

Public Function SZ(Feld As String) As String

strSQL = "SELECT Sprache FROM DeineTabelle WHERE Nachname ='" & Feld & "'"
Set rs = DBEngine(0)(0).OpenRecordset(strSQL)

Do While rs.EOF = False
  SZ = SZ & " " & rs!Sprache
  rs.MoveNext
Loop

End Function


mit dieser Funktion erstellst du eine Abfrage:

SELECT Nachname, SZ([Nachname]) AS Ausgabe
FROM DeineTabelle
GROUP BY Nachname



u. damit bekommst du deine gewünschte Darstellung.


Gruß Oma
Titel: Re: Abfrage-Ergebnis in einer Zeile
Beitrag von: Accesser11 am März 21, 2011, 11:25:04
Hallo oma

Vielen Dank.

Darf ich dich bitten den Code noch kurz zu dokumentieren, da ich ihn nicht genau verstehe?
Wohin muss ich das Statement schreiben, damit die Funktion erkannt wird?

Besten Dank und Gruss
Accesser11
Titel: Re: Abfrage-Ergebnis in einer Zeile
Beitrag von: oma am März 21, 2011, 14:22:26
Hallo Accesser,

schau mal in das Beispiel.
In der Tabelle1 sehen alle Werte; im Modul ModulText ist die Funktion SZ,
In der Abfrage qryZeileSpalte wird für jeden Namen (Nachname, da Name resereviertes Wort in Access) die Funktion aufgerufen.

Gruß Oma

[Anhang gelöscht durch Administrator]
Titel: Re: Abfrage-Ergebnis in einer Zeile
Beitrag von: Accesser11 am März 24, 2011, 08:13:38
Hallo zusammen

Bei mir funktioniert das von "oma" leider nicht.
Liegt es vielleicht daran, da ich Zwischen-Tabellen habe?

Gibt es auch die Möglichkeit neue Spalten zu generieren, wie im Beispiel (siehe Post 1), so dass nicht mehrere Werte in einer Zeile stehen?

Vielen Dank und Gruss
Accesser11
Titel: Re: Abfrage-Ergebnis in einer Zeile
Beitrag von: oma am März 24, 2011, 10:18:32
Hallo Accesser,

dann mache mal eine kleine DB mit ein paar anonyme Daten u. stelle sie ins Forum.

Gruß Oma
Titel: Re: Abfrage-Ergebnis in einer Zeile
Beitrag von: Accesser11 am März 28, 2011, 14:24:59
Hallo Oma

Sorry für die späte Antwort und ein grosses Dankeschön für deine Hilfe!!!  ;)
Allgemein kann ich auch fragen, wie macht ihr das mit der Filterung mit Zwischen-Tabellen?

Danke und Gruss
Accesser11


[Anhang gelöscht durch Administrator]
Titel: Re: Abfrage-Ergebnis in einer Zeile
Beitrag von: oma am März 28, 2011, 16:17:11
Hallo,

schau dir mal die überarbeitete DB an.
Habe als erstes aus Tabelle tblPersonSprache die Nachschlagefelder entfernt (ist von Übel!) u. in Tabelle tblPerson Nachname statt Name (Name reserviertes Wort in Access)


Dann ist es etwas anders wie in meinem ersten Beispiel; aber mit Abfrage qryPersonenSprache ist wieder der gleiche Stand u. Abfrage qrySprachen liefert das gewünschte Ergebnis.

Falls noch Unklarheiten bitte Nachfragen

Gruß Oma

[Anhang gelöscht durch Administrator]
Titel: Re: Abfrage-Ergebnis in einer Zeile
Beitrag von: Accesser11 am Mai 02, 2011, 11:14:25
Hallo,

Sorry für die sehr sehr späte Antwort! :(

Ich möchte es gerne so dargestellt haben, ist dies so auch möglich?



NameDeutschFranzösischEnglisch
Musterxx

Dies wäre die Ideale Lösung.
Ausserdem sollte bei der neuen Lösung möglich sein, dass noch weitere Spalten nach diesem Prinzip berücksichtigt werden können. (--> Siehe angefügte DB)
Am Schluss wird die Abfrage dann in ein Excel exportiert.

Vielen Dank für deine Hilfe! ;)

Dankbare Grüsse
Accesser11

[Anhang gelöscht durch Administrator]
Titel: Re: Abfrage-Ergebnis in einer Zeile
Beitrag von: oma am Mai 02, 2011, 12:01:43
Hallo,

eine einfache Lösung (ohne X) wäre eine Kreuztabelle qrySprache_Neu1wie folgt:

TRANSFORM Count(qryPersonenSprache.Sprache) AS [Anzahl von Sprache]
SELECT qryPersonenSprache.Nachname AS Nachname, qryPersonenSprache.Vorname AS Vorname
FROM qryPersonenSprache
GROUP BY qryPersonenSprache.Nachname, qryPersonenSprache.Vorname
PIVOT qryPersonenSprache.Sprache



wenn du unbedingt deine  "X" haben willst , mache eine zweite Abfrage mit der Kreuztabelle wie folgt:

SELECT qrySprachen_Neu1.Nachname, qrySprachen_Neu1.Vorname,
IIf([Englisch]=1,"X","") AS Engl,
IIf([Französisch]=1,"X","") AS Franz,
IIf([Italienisch]=1,"X","") AS Ital
FROM qrySprachen_Neu1


Gruß Oma
Titel: Re: Abfrage-Ergebnis in einer Zeile
Beitrag von: oma am Mai 02, 2011, 12:20:30
Hallo,

naja besser wäre schon eine Lösung, in der du in tblPersonSprache das "X" verewigst,
dann evt. so:


TRANSFORM First(qryPersonenSprache.AV) AS [ErsterWert von AV]
SELECT qryPersonenSprache.Nachname AS Nachname, qryPersonenSprache.Vorname AS Vorname
FROM qryPersonenSprache
GROUP BY qryPersonenSprache.Nachname, qryPersonenSprache.Vorname
PIVOT qryPersonenSprache.Sprache;



Gruß Oma

[Anhang gelöscht durch Administrator]
Titel: Re: Abfrage-Ergebnis in einer Zeile
Beitrag von: Accesser11 am Mai 02, 2011, 13:59:24
Hallo,

Vielen Dank für die schnelle Hilfe, echt super!!! :)

Ist es auch noch möglich nach dem gleichen Prinzip gleichzeitig die Autos anzeigen zu lassen? (--> siehe qryPerson_v1.1.zip)

Besten Dank und viele Grüsse
Accesser11
Titel: Re: Abfrage-Ergebnis in einer Zeile
Beitrag von: oma am Mai 02, 2011, 18:09:12
Hallo,

dazu habe ich dir doch schon eine Lösung mitgeteilt!!

http://www.access-o-mania.de/forum/index.php?topic=14122.msg81083#msg81083


Gruß Oma

[Anhang gelöscht durch Administrator]
Titel: Re: Abfrage-Ergebnis in einer Zeile
Beitrag von: Accesser11 am Mai 05, 2011, 14:08:06
Hallo oma

Zitatdazu habe ich dir doch schon eine Lösung mitgeteilt!!
Ja, sorry mir ist leider dabei ein Fehler unterlaufen, habe irgendwie zwei Themen dazu erstellt.  >:(

Zitathttp://www.access-o-mania.de/forum/index.php?topic=14122.msg81083#msg81083
Leider sind da entweder nur die Sprachen oder die Autos berücksichtigt worden und nicht gleichzeitig beides (Sprachen + Autos).

Ich möchte gerne nochmals auf den ersten Lösungsansatz mit der Funktion zurückkommen.

Momentan ist mit dieser Lösung das Abfrageergebnis wie folgt:



NameSprache
MusterDeutsch Italienisch Französisch

Ich möchte die Ausgabe jedoch so haben:



NameDeutschItalienischFranzösisch
Musterxxx

Ist die zweite Ausgabe mit der Funktion "SZ" oder mit sonst was möglich? ;)

Danke & Gruss
Accesser11
Titel: Re: Abfrage-Ergebnis in einer Zeile
Beitrag von: oma am Mai 05, 2011, 15:23:02
Hallo,

ZitatIch möchte die Ausgabe jedoch so haben:
Name Deutsch Italienisch Französisch
Muster x x x

willst du mich auf den Arm nehmen oder Testen???


die Lösung habe ich dir doch auch schon in #13 mitgeteilt!!!!!
Dort ist in Abfrage   qrySprachenNeu_3 dein gewünschtes Ergebnis (wofür du  dich dann auch bedankt hast)

Zitat
ZitatLeider sind da entweder nur die Sprachen oder die Autos berücksichtigt worden und nicht gleichzeitig beides (Sprachen + Autos).

Ds ist natürlich nicht möglich, in einer Kreuztabelle steht im Kreuz einer Spalte u. einer Zeile immer nur ein Wert!

Gruß Oma
Titel: Re: Abfrage-Ergebnis in einer Zeile
Beitrag von: Accesser11 am Mai 05, 2011, 16:08:38
Hallo

Zitatwillst du mich auf den Arm nehmen oder Testen???

Dies habe ich ja X-Male bereits geschrieben, dass ich es in einer Abfrage haben will!
Ich will dir natürlich nicht unnötige Arbeit machen, sorry deswegen. ;)

Zur Erzielung, dass jeder Datensatz auf einer Zeile dargestellt wird, muss ich für dies mehrere Abfragen (wie #13) miteinander verbinden? Wenn ja, wie würde dies funktionieren?
Am Schluss möchte ich alles ins Excel exportieren. ;)

Vielen Dank und Gruss
Accesser11
Titel: Re: Abfrage-Ergebnis in einer Zeile
Beitrag von: oma am Mai 05, 2011, 16:59:30
Hallo,

natürlich lassen sich verschiedene Kreuztabellen zusammenfassen:

Hallo,

naturlich kannst du mehhrere Kreuztabellen zusammenfügen:

SELECT
qryPerson.Name,
   
qryPerson.English,
qryPerson.French,
qryPerson.German,
qryPerson.Italian,

qryPersonCar.Audi,
qryPersonCar.BMW,
qryPersonCar.VW

FROM qryPerson INNER JOIN qryPersonCar ON qryPerson.Name=qryPersonCar.Name;



Anbei auch die DB als Beispiel

Gruß Oma
Titel: Re: Abfrage-Ergebnis in einer Zeile
Beitrag von: oma am Mai 05, 2011, 17:06:01
anbei auch die DB...

[Anhang gelöscht durch Administrator]
Titel: Re: Abfrage-Ergebnis in einer Zeile
Beitrag von: Accesser11 am Mai 06, 2011, 10:11:24
Hallo,

Vielen vielen Dank für deine Hilfe! ;)

Ich habe noch ein kleines Problem festgestellt. Wenn man in der Tabelle "tbl_Person_cross_Language" den Datensatz mit der "PK_ID" --> 8 löscht, dann erscheint eine Fehlermeldung, dass es "Italian" nicht finden konnte. Dieser wird verursacht, weil in "qryPerson" diese Spalte nicht berücksichtigt wird, jedoch in "qryPersonenCar" angegeben wird.
Dies kann man beheben, indem man in der Abfrage "qryPersonenCar" die Felder in der SELECT-Anweisung qryPerson.German, qryPerson.English usw. durch qryPerson.* ersetzt. Dann funktioniert es und es ist auch noch übersichtlicher. ;D

Dies noch als Hinweis.

Viele Grüsse
Accesser11
Titel: Re: Abfrage-Ergebnis in einer Zeile
Beitrag von: Accesser11 am Mai 06, 2011, 13:08:59
Hallo,

Kannst du mir bitte noch helfen wie ich die "Auslastung" bei "tbl_Person_cross_Car" auf eine Zeile bringe?

Soll-Ergebnis:



NameVWAuslastungAudiAuslastung
Musterx50%x10%

Ich danke dir vielmals. ;)

Besten Dank und Grüsse
Accesser11

[Anhang gelöscht durch Administrator]
Titel: Re: Abfrage-Ergebnis in einer Zeile
Beitrag von: oma am Mai 06, 2011, 23:14:31
Hallo,

du musst eine KREUZTABELLENABFRAGE machen ;D

TRANSFORM Sum(tbl_Person_cross_Car.Auslastung) AS SummevonAuslastung
SELECT tblPerson.Name
FROM tblPerson INNER JOIN (tbl_Person_cross_Car INNER JOIN tblCar ON tbl_Person_cross_Car.FK_Car = tblCar.PK_ID)
ON tblPerson.PK_ID = tbl_Person_cross_Car.FK_Person
GROUP BY tblPerson.Name
PIVOT tblCar.Car


Gruß Oma
Titel: Re: Abfrage-Ergebnis in einer Zeile
Beitrag von: Accesser11 am Mai 09, 2011, 09:31:26
Hallo,

Vielen Dank für deine Hilfe! ;)
Kann man diese Abfrage auch in die Abfrage "qryPersonCar" integrieren?
Gibt es auch eine Möglichkeit die Spaltenüberschrift der Autos (Audi, VW usw.) durch "Auslastung" zu ändern?

Zitat



NameVWAuslastungAudiAuslastung
Musterx50%x10%
So wie ich die es in meinem letzten Eintrag geschildert habe wird die Darstellung nicht umsetzbar sein, oder?

Dankbare Grüsse
Accesser11