Neuigkeiten:

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

Mobiles Hauptmenü

Mehrere Datensätze in einen Datensatz zusammenfassen

Begonnen von Anke_71, August 13, 2010, 11:40:15

⏪ vorheriges - nächstes ⏩

Stefan Bauer

Ok wie gesagt bin neu.. :-)

Hier meine Abfrage z.b. Automarken:

SELECT Dateneingang.Artnr, SZa([Artnr]) AS ktype, SZe([Artnr]) AS epid, SZb([Artnr]) AS ebaytabellen, SZc([Artnr]) AS magentotabellen, SZd([Artnr]) AS automarken
FROM Dateneingang
GROUP BY Dateneingang.Artnr;

Meine Module:

Automarken:

Public Function SZd(Artnr As String) As String
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String

strSQL = "SELECT DISTINCT automarken from Dateneingang where Artnr ='" & Artnr & "'"
Set rs = DBEngine(0)(0).OpenRecordset(strSQL)

Do While rs.EOF = False
  SZd = SZd & " " & rs!automarken
  rs.MoveNext
Loop

SZd = Mid(SZd, 1)
rs.Close
Set rs = Nothing
End Function

Was muss ich ändern das er mir "Alles" ausgibt

PhilS

Wenn Du Duplikate in automarken ausschließen kannst, reicht es wenn du das DISTINCT aus dem SQL entfernst.
Warum gibt es SZa, SZb, SZc etc.?
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Stefan Bauer

#32
Ich habe für jede Spalte ein Modul in dem ich sage wie er die Daten zusammenfasst. So habe ich mir das ausgedacht  :)

Duplikate kann ich leider in keiner Spalte ausschliessen.

Es gibt folgende Module:

automarken
ebaytabellen
epid
ktype
magentotabellen

Sorry, wenn ich ehrlich bin habe ich keine Ahnung, habe mir alles per copy und probier zusammengebaut. Wenn jemand eine andere Lösung hat wäre ich auch sehr dankbar. Bin kein Programmierer, leider schaffe ich es mit Excel nicht weil die Datenmenge zu groß ist. Habe mir letzte Woche mal Access aufgemacht und ein wenig rumgespielt.

DF6GL

Hallo,

keine Ahnung von Access zu haben, ist ja nichts Schlimmes...

Access ist eben nicht Excel, eher eine programmierbare und relationale Datenbankumgebung.

Um Access kennenzulernen, solltest Du zunächst Dir die Basics anhand von Büchern und Tutorials verinnerlichen . Mit C&P  irgendwelcher Codeschnippsel, deren Funktion und Auswirkung Du nicht durchblickst, führt nicht zum Ziel, eher zu Frust und Ärger.

Am Anfang steht die Analyse und Zusammenfassung der vorhandenen Daten und Umsetzung in ein passendes Tabellenkonzept. Stichwort: Normalisierung. Siehe dazu u. st. Links 11, 1a und 1b.

Diese Umsetzung richtet sich auch nach der Aufgabe der DB, die sie lösen/bearbeiten soll.

Später, und wirklich erst dann, wenn das Tabellenkonzept schlüssig ist, macht man sich Gedanken um Abfragen, Formulare und Berichte.  Bis hier ist selbst VBA-Code (fast) nicht nötig.


Stelle also hier deine Gedanken darüber  vor, was die DB überhaupt bewältigen soll und auf welchen Grunddaten das Ganze aufbaut.

Stefan Bauer

Danke für die Antwort,

mir ist das alles bewust. Meine Aufgabe ist es Daten die ich von verschiedenen Herstellern bekomme für einen Import in einen Magentoshop aufzuarbeiten. Das mache ich seit Jahren gut und zielführend.

Ich wollte mir jetzt ein "Helferlein" basteln indem ich eine Excel Liste importiere und dann wieder so wie ich Sie brauche exportiere. Das funktioniert ja auch zu 99,9%. Das Problem ist eben das in den Excel Zellen schon mehr als 255 Zeichen vorkommen und diese bei der Ausgabe sich bis zu 30 - 40 Tausend summieren. Daher Memo Felder. Daher meine Frage an das Forum.

Danke für eure Mithilfe.

DF6GL

Hallo,



tja....,

damit kann ich Dir keine konkreten Vorschläge machen... außer diesem:  Bleib bei Excel und manipuliere dort die Daten so, wie Du sie brauchst.  Excel kann auch VBA...

Stefan Bauer

Danke dann bin ich hier wohl falsch. Sorry das ich eure Zeit verschwendet habe!

Inspektor

Guten Abend. Ich bin neu hier im Forum und habe mich angemeldet da ich seit einiger Zeit beruflich immer wieder mit Access-Datenbanken in Form von tabellarischen Auswertungen konfrontiert werde und diese Daten weiterverarbeiten muss. Seit einiger Zeit lese ich hier als Gast mit und habe schon den einen oder anderen nützlichen Tip gefunden. Meine Kenntnisse in Access sind leider rudimentär, ich möchte diese aber gerne vertiefen.
Derzeit beschäftigte ich mich mit eine Problem, das dem hier beschrieben sehr nahe kommt.

Hier meine vereinfachte Form der Ausgangstabelle:

Kunde   Vertragsnummer  xxxx  xxxx
1.          1.                      xxxx   Xxxxx
1.          2.                       xxxx. Xxxxxx
2.          3.                       xxxx.  Xxxxx
3.          4.                       xxxxx xxxxx
4.          5.                        xxxxx. Xxxxx
4.           6.
4.           98.

Folgende Zieltabelle ist gewünscht:
Kunde.      1. Vertrag    2. Vertrag ........  10.Vertrag
1.              1.               2.
2.              3.
3.              4.
4.              5.               6.       .......         98.
usw.

Wichtig wäre, das die einzelnen Verträge in einzelnen Feldern der neuen Tabelle dargestellt werden müssen. Jeder Kunde darf nur einmal in der Tabelle enthalten sein. Die Tabelle muss später als csv in exportiert werden.

Ich hoffe auf eure Unterstützung. Danke!

ebs17

Du brauchst keine neue Tabelle. Die gewünschte Ansicht kann mit einer Kreuztabellenabfrage erstellt werden, die sich dann auch exportieren lässt.

Mit freundlichem Glück Auf!

Eberhard

Inspektor

#39
Hi, danke für die schnelle Antwort. Genau das Bekomme ich nicht hin. Die Vertragsnummer ist immer Eindeutig (Primärschlüssel). Daher wird in der Kreuztabellenabfrage für jede Vertragsnummer eine Spalte erzeugt, an der Stelle wo sich Kunde und Vertragsnummer kreuzen wird das Feld mit 1 gefüllt. Im Ergebnis benötige ich aber 10 Spalten, welche je nach Anzahl der Verträge der Kunden nacheinander befüllt werden sollen. Hat ein Kunde eine geringere Anzahl von Verträgen soll von links nach rechts nur die benötigte Anzahl der Felder gefüllt werden. Die anderen Felder können dann leer bleiben.

ebs17

#40
ZitatIm Ergebnis benötige ich aber 10 Spalten
Kann man lösen über fixierte Spalten.

Für die Einordnung zu Vertrag_1 bis Vertrag_10 müsste man in der Basisabfrage zur KTA eine laufende Nummer erzeugen.
Mit freundlichem Glück Auf!

Eberhard

Inspektor

Vielen Dank! Das sieht sehr gut aus. Wo kommt den das Feld N her? Es ist ja in der Tabelle nicht vorhanden.

Inspektor

Zumindest habe ich die Testtabelle von dir jetzt nach meinen Anforderungen umgebaut und es funktioniert in der Simulation. Morgen werde ich den SQL-Code dann mal in die echte Datenbank exportieren.

Inspektor

Hi, leider stolpere ich bei der Adaption auf meine Tabelle über das Feld N. Mir ist nicht klar wo dieses herkommt, da es in der Ausgangstabelle nicht vorhanden ist.

ebs17

ZitatTRANSFORM
   MIN(Q.Art) AS M
SELECT
   B.Name
FROM
   05_tblBenutzer AS B
      INNER JOIN
         (
            SELECT
               B_ID,
               Art,
               "Sportart" & DCount("*", "05_tblSportarten", "B_ID = " & B_ID & " AND Art <= '" & Art & "'") AS N
            FROM
               05_tblSportarten
         ) AS Q
         ON B.ID = Q.B_ID
GROUP BY
   B.ID,
   B.Name
PIVOT
   Q.N IN("Sportart1", "Sportart2", "Sportart3", "Sportart4", "Sportart5")
Es ist hilfreich, wenn man eine SQL-Anweisung lesen und verstehen kann. Dazu wird man sie vorzugsweise vorher formatieren.

N ist der Alias (Name) für ein berechnetes Feld: Konstante "Sportart" und laufende Nummer.
Mit freundlichem Glück Auf!

Eberhard