Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Zeile in Spalte transformieren (mit Kriterien)
zurück: Top 10 Werte suchen weiter: vergleich 2er Spalten Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
captfrag
Gast


Verfasst am:
24. Mai 2006, 09:16
Rufname:

Zeile in Spalte transformieren (mit Kriterien) - Zeile in Spalte transformieren (mit Kriterien)

Nach oben
       

Hallo Gemeinde,

ich muss unter A97 folgendes Problem lösen:

Ich habe eine Tabelle (Abfrage) die folgendermassen aussieht:

IndexA IndexB IndexC Wert

Die Tabelle hat 5600 Einträge und alle drei Indices können wiederholt auftreten. Wenn alle drei identisch sind, soll das Feld "Wert" einfach verkettet werden.

Also In etwas so: Wert(1)&" " Wert(2)

Ergebnis wäre dann:
IndexA IndexB IndexC "Wert(1) Wert(2)"

Ob das über eine Abfrage oder eie Berichtsfunktion gelsöt wird ist letztlich egal. Im Prinzip wird daraus ein Druck erstellt, es sollen dabei nur nicht umbedingt 150 Zeilen entstehen.

Ist das irgendwie lösbar?
Willi Wipp
Moderator


Verfasst am:
24. Mai 2006, 09:46
Rufname:
Wohnort: Raum Wiesbaden


Re: Zeile in Spalte transformieren (mit Kriterien) - Re: Zeile in Spalte transformieren (mit Kriterien)

Nach oben
       

Hi captfrag,

schau Dir mal die Funktion FnsGetFields im Beitrag Re: In Endlosformular DS mit 1:n Unterdatensätzen (III) an.
Vielleicht hilft DIr die in einer gruppierten Abfrage weiter?
Code:
SELECT   IndexA, IndexB, IndexC,
         FnsGetFields("Wert";"DeineTabelle";
                      "[IndexA] & "|" & [IndexB] & "|"  & [IndexC]";
                      [IndexA] & "|"  & [IndexB] & "|"  & [IndexC])
FROM     DeineTabelle
GROUP BY IndexA, IndexB, IndexC

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
captfrag_
Gast


Verfasst am:
26. Mai 2006, 16:01
Rufname:

AW: Zeile in Spalte transformieren (mit Kriterien) - AW: Zeile in Spalte transformieren (mit Kriterien)

Nach oben
       

captfrag am 26. Mai 2006 um 12:02 hat folgendes geschrieben:
Hallo Willi, hallo Gemeinde,

schonmal danke für die Idee.
Ich habe den anderen Thread gelesen, das könnte tatsächlich passen.
Die Funktion habe ich zu meinen anderen (globalen) Funktionen hinzugefügt. Sie wird auch gefunden.

Allerdings ärgert mich A97 beim Aufruf in der Abfrage ständig. Ich kriege haufenweise Syntaxfehler und weiss nicht so ganz warum.

Testweise habe ich mir schon eine Vor-Abfrage namens qryGroup gebaut, die sogar die Bezeichnung der Spalten mit "As" genauso festlegt wie hier im Muster, also IndexA, IndexB usw.

Wenn ich
Code:
SELECT   IndexA, IndexB, IndexC,
         FnsGetFields("Wert";"qryGroup";
                      "[IndexA] & "|" & [IndexB] & "|"  & [IndexC]";
                      [IndexA] & "|"  & [IndexB] & "|"  & [IndexC])
FROM     qryGroup
GROUP BY IndexA, IndexB, IndexC
aufrufe, kriege ich nen Syntaxfehler und A97 stellt den Cursor gleich auf das ";" hinter "Wert". Ändere ich das in ein "," passt ihm das ";" hinter nicht. Ersetze ich bis hinten durch, passt natürlichdie Anzahl der an die Funktion geleiferten Kriterien nicht mehr.

Bin etwas ratlos...

Zudem:
Wenn ich die Funktion mit meinen Basic-VBA Kenntnissen richtig deute, kann ich die Pipe Symbole "|" weglassen, da die Kriterien bei mir durchgehend numerisch sind. Ist das soweit richtig?

Danke schonmal!
Meik

captfrag am 26. Mai 2006 um 15:03 hat folgendes geschrieben:
10 Schritte weiter, nur das Ergebnis ist leider nicht immer richtig..

Ausgangsabfrage namens qryGroup:
Code:
A                  B             C     Wert
88039104    88039104    4647790482  5935613
88039104    88039104    4647790482  5573751
88039104    88039104    4647790482  5983850
88039104    88039104    4803548254  5935613
88039104   312235104    4740493197  5983850

A                  B             C  Werteliste
88039104    88039104    4647790482  5935613, 5573751, 5983850, 5935613
88039104    88039104    4803548254  5935613, 5573751, 5983850, 5935613
88039104   312235104    4740493197  5983850
Das ist der Funktionsaufruf in der Abfrage "qryGroup2"
Code:
SELECT   qryGroup.IndexA, qryGroup.IndexB, qryGroup.IndexC,
         FnsGetFields("Wert","qryGroup",_
                      "[IndexA] & [IndexB] & [IndexC]",_
                       [IndexA] & [IndexB] & [IndexC]) AS Werteliste
FROM     qryGroup
GROUP BY IndexA, IndexB, IndexC;
Wie man sieht ist die Ausgabezeile 3 richtig, in Zeile 2 sind Werte enthalten die eigentlich gar nicht da sein sollten. Richtig wäre:
Code:
88039104    88039104    4803548254  5935613
Zudem ist in Zeile 1 der Wert 5935613 doppelt (am Anfang und am Ende). Das kommt so eigentlich nicht aus den Ursprungsdaten.

Hat jemand ne Idee?

Sorry das ich nerve Sad

Ich hab die Ursache des Problem gefunden, die Lösung müsste für euch Profis einfach sein..

Einer der beiden Variablen in der Funktion "FnsGetFields" ist zu kurz definiert. Etweder ist es sIndex (String) oder vIndex (Variant).
Das Problem komtm daher, das der Vergleich nicht meine komplette Zeichenkette aus IndexA&IndexB&IndexC berücksichtigt. Der Index kann bis zu 40 Zeichen lang werden.

Wie komme ich darauf?

Wenn ich die Zeichenkette umbauen, also IdxC nach vorne stelle sind die Werte schon richtig. Ich weiss nur nicht, ob das wirklich in allen Datensätzen schon reicht.
Willi Wipp
Moderator


Verfasst am:
28. Mai 2006, 19:16
Rufname:
Wohnort: Raum Wiesbaden

Re: Zeile in Spalte transformieren (mit Kriterien) (II) - Re: Zeile in Spalte transformieren (mit Kriterien) (II)

Nach oben
       

Hi captfrag,

sorry mein Fehler Embarassed der Aufruf sollte so aussehen
Code:
SELECT   IndexA, IndexB, IndexC,
         FnsGetFields("Wert";"DeineTabelle";
                      "[IndexA] & '|' & [IndexB] & '|'  & [IndexC]";
                      [IndexA] & "|"  & [IndexB] & "|"  & [IndexC])
FROM     DeineTabelle
GROUP BY IndexA, IndexB, IndexC
Die Trennzeichen sind wichtig, da sonst eventuell aus der Variant-Variablen eine Zahl gemacht wird.
Ich nehme an das ist bei Deiner Loesung der Fall.
Ausserdem koennten auch bei kuerzeren Zahlefolgen Probleme auftauchen
Code:
IndexA  IndexB  IndexC
   123     456     789
    12    3456     789

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
captfrag
Access-Bastler mit Basis VBA Wissen


Verfasst am:
29. Mai 2006, 08:45
Rufname:

AW: Zeile in Spalte transformieren (mit Kriterien) - AW: Zeile in Spalte transformieren (mit Kriterien)

Nach oben
       

Ah, natürlich.
Die Geschichte mit dem Unterschied zwischen Hochkommata und Anführungszeichen ist mit früher schon mal begegnet Smile

Dake auch für den Hinweis auf die Notwendigkeit des Pipe Symbols für die Bildung des Vergleichswertes.

Ich hab mir das ganze selber ein wenig vereinfacht und lasse den Vergleichswert über ein berechnetes Feld in der Vorabfrage erzeugen. Das geht schneller und ist für mich auch übersichtlicher.

Der Aufruf sieht dann einfach so aus:

FnsGetFields("Wert";"DeineTabelle";"[Vergleichswert]";[Vergleichswert])

Auf jeden Fall hast du mir mit der Funktion sehr geholfen! Danke dafür.
Willi Wipp
Moderator


Verfasst am:
29. Mai 2006, 13:05
Rufname:
Wohnort: Raum Wiesbaden


Re: Zeile in Spalte transformieren (mit Kriterien) (III) - Re: Zeile in Spalte transformieren (mit Kriterien) (III)

Nach oben
       

Hi captfrag,

schoen das Du eine Loesung gefunden hast.
Nur noch als Hinweis: Es muss natuerlich nicht das Pipe-Zeichen sein.
Man kann auch ein anderes Zeichen verwenden.

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Inhalt einer Spalte in eine andere Spalte übertragen. 1 Suman 2741 11. Sep 2005, 16:50
Ina Inhalt einer Spalte in eine andere Spalte übertragen.
Keine neuen Beiträge Access Tabellen & Abfragen: Access 2003 - Zählen von Werten in einer Spalte 1 Michael2003 1841 04. Aug 2005, 17:26
jens05 Access 2003 - Zählen von Werten in einer Spalte
Keine neuen Beiträge Access Tabellen & Abfragen: mehrere Spalten in eine transformieren 2 spollwing 1767 01. Aug 2005, 09:22
Gast mehrere Spalten in eine transformieren
Keine neuen Beiträge Access Tabellen & Abfragen: Mehrere Summen nach bestimmten Kriterien in einer Abfrage 4 raphi 921 18. Jul 2005, 16:14
raphi Mehrere Summen nach bestimmten Kriterien in einer Abfrage
Keine neuen Beiträge Access Tabellen & Abfragen: Zahl oder Text in einer Spalte 2 Veit 622 27. Feb 2005, 19:01
Veit Zahl oder Text in einer Spalte
Keine neuen Beiträge Access Tabellen & Abfragen: aus einer Spalte 2 machen??? 9 Maik_25 511 19. Jan 2005, 12:08
stpimi aus einer Spalte 2 machen???
Keine neuen Beiträge Access Tabellen & Abfragen: spalte dynamisch und in abhängigkeit vom wochtag füllen 3 doc77 812 10. Jan 2005, 13:32
lothi spalte dynamisch und in abhängigkeit vom wochtag füllen
Keine neuen Beiträge Access Tabellen & Abfragen: Problem mit Kriterien 1 Gast 509 23. Dez 2004, 20:00
mapet Problem mit Kriterien
Keine neuen Beiträge Access Tabellen & Abfragen: 1. Zeile in der Tabelle sperren ? 3 Marsi 598 13. Dez 2004, 11:47
lothi 1. Zeile in der Tabelle sperren ?
Keine neuen Beiträge Access Tabellen & Abfragen: existierende Spalte durch aktualisieren mit punkten trennen 1 Gast 509 24. Nov 2004, 13:40
Skogafoss existierende Spalte durch aktualisieren mit punkten trennen
Keine neuen Beiträge Access Tabellen & Abfragen: Erster Wert einer Spalte der größer x ist 1 Matloh_ 1122 04. Okt 2004, 22:46
Skogafoss Erster Wert einer Spalte der größer x ist
Keine neuen Beiträge Access Tabellen & Abfragen: variable Spalte in Abfrage anzeigen -abhängig vom Tagesdatum 1 Lars 1193 10. Sep 2004, 13:54
Lars variable Spalte in Abfrage anzeigen -abhängig vom Tagesdatum
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Word Serienbriefe