Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: boehnli01 am November 25, 2012, 15:45:01

Titel: Felder auf einer Tabellenlinie
Beitrag von: boehnli01 am November 25, 2012, 15:45:01
Hallo Zusammen - mein Access Kenntnisse sind wieder mal ausgeschöpft.

Ich habe folgende Tabelle:

Auftrag       Verpackung
---------     -------------
111111       15kgs
111111       20kgs
111111       25kgs.

Nun möchte ich aber alle Verpackungen pro Auftrag auf einer Linie und es sollte folgendermassen aussehen:

Auftrag       Verpackung1      Verpackung2      Verpackung3
--------        -------------       --------------       --------------
111111        15kgs                  20kgs                 25kgs.

Kann mir jemand helfen und erklären wie ich das bewerkstelligen muss.

Vielen Dank
Cédric
Titel: Re: Felder auf einer Tabellenlinie
Beitrag von: database am November 25, 2012, 16:30:00
Hallo,

eine Möglichkeit wäre es eine Kreuztabellenabfrage dafür zu verwenden.
Untenstehendes Beispiel einer SQL dazu beinhaltet ein Feld 'PosNr', ohne das es kaum zu befriedigenden Ergebnissen kommen wird.


Auftrag       Verpackung   PosNr
---------     -------------       -------
111111       15kgs           1
111111       20kgs           2
111111       25kgs           3
222222       13kgs           1
222222       25kgs           2
222222       29kgs           3
...
..
.

Um diese Tabelle in der Form wie von dir beschrieben anzuzeigen ...


TRANSFORM First(Tabelle1.Verpackung) AS ErsterWertvonVerpackung
SELECT Tabelle1.Auftrag
FROM Tabelle1
GROUP BY Tabelle1.Auftrag
PIVOT "Verpackung" & [PosNr];


Titel: Re: Felder auf einer Tabellenlinie
Beitrag von: boehnli01 am November 25, 2012, 21:22:49
Danke Database - könntest du mir bitte noch erklären wie ich die PosNr innerhalb eines Auftrages erhalte.

Habe es so proberiert (SO = Auftrag):
(Select Count (*) FROM [tab_zgl_pla_info_prep] as X WHERE [X].[SO] < [tab_zgl_pla_info_prep].[SO])+1

Aber das nummiert forlaufend auf allen SO's und nicht innerhalbt der SO's.

Danke Cédric
Titel: Re: Felder auf einer Tabellenlinie
Beitrag von: database am November 26, 2012, 12:48:31
Hallo,

erzeuge dir als erstes eine Temp-Tabelle (hier tblXYZ) mit folgender Syntax:


SELECT tab_zgl_pla_info_prep.ID, tab_zgl_pla_info_prep.SO, tab_zgl_pla_info_prep.Verpackung, (Select Count (*) FROM [tab_zgl_pla_info_prep] as Temp
WHERE  ([Temp].[Id] < [tab_zgl_pla_info_prep].[Id]) AND Temp.[SO] = [tab_zgl_pla_info_prep].[SO])+1 AS PosNr
INTO tabXYZ
FROM tab_zgl_pla_info_prep;


danach führst du die Tranponierung durch


TRANSFORM First(tblXYZ.Verpackung) AS ErsterWertvonVerpackung
SELECT tblXYZ.SO
FROM tblXYZ
GROUP BY tblXYZ.SO
PIVOT "Verpackung" & [PosNr];


Voraussetzung ist, dass deine Tabelle tab_zgl_pla_info_prep  ein fortlaufendes Schlüsselfeld besitzt (ID)

HTH
Titel: Re: Felder auf einer Tabellenlinie
Beitrag von: boehnli01 am November 29, 2012, 22:26:45
Hi database - hat gedauert, aber schlussentlich wunderbar funktioniert - ich habe nun ein Kreuztabellen Query mit POS als Column Heading. Nun möchte die Kreuztabellen Abfrage als Unterformular benutzen, aber es kommt eine error Meldung: You can't pass-through query or non-fixed-column crosstab query as a record source for a subform.

Die SQL sieht so aus:
TRANSFORM Max(tbl_zgl_pla_info_prep_pack_cross_raw.PACKSIZE) AS MaxOfPACKSIZE
SELECT tbl_zgl_pla_info_prep_pack_cross_raw.SO, tbl_zgl_pla_info_prep_pack_cross_raw.SOITEM, Max(tbl_zgl_pla_info_prep_pack_cross_raw.PACKSIZE) AS [Total Of PACKSIZE]
FROM tbl_zgl_pla_info_prep_pack_cross_raw
GROUP BY tbl_zgl_pla_info_prep_pack_cross_raw.SO, tbl_zgl_pla_info_prep_pack_cross_raw.SOITEM
PIVOT tbl_zgl_pla_info_prep_pack_cross_raw.POS ;

Kannst du mir sagen wie ich die Abfrage anpassen muss.

Danke Cédric
Titel: Re: Felder auf einer Tabellenlinie
Beitrag von: database am November 30, 2012, 12:51:00
Hallo,

Zitat... die Kreuztabellen Abfrage als Unterformular benutzen ...
ZitatYou can't pass-through query or non-fixed-column crosstab query as a record source for a subform

Heisst auf gut Deutsch - du kannst keine Pass-Through oder Kreuztabellen-Abfrage mit nicht Fixen Spalten als Datenherkunft für ein Unterformular einsetzen.

'Max(tbl_zgl_pla_info_prep_pack_cross_raw.PACKSIZE)' - wird wohl damit gemeint sein

Erzeuge dir aus der Abfrage eine Tabelle und nimm die als Datenherkunft
Titel: Re: Felder auf einer Tabellenlinie
Beitrag von: boehnli01 am Dezember 01, 2012, 13:07:57
Vielen Dank - ich habe zu weit gesucht obwohl die Lösung naheliegend ist.