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
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];
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
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
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
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
Vielen Dank - ich habe zu weit gesucht obwohl die Lösung naheliegend ist.