Textstring nit Anzahl multiplizieren

Hallo,

ich stehe vor folgender Herausforderung :smile:
Die Daten liegen als MS SQL Table vor…

Aus:

Artikel | Menge | Lagerfach
0162541 | 3 | Lagerfach1

soll werden:
0162541 | 3 | Lagerfach1,Lagerfach1,Lagerfach1

Hat jemand eine Idee, wie sich das am einfachsten bewerkstelligen läßt?

Gruß,
Klaus

Hallo,

in MySQL gibt es dafür eine eigene Funktion:
http://dev.mysql.com/doc/refman/5.0/en/group-by-func…

Für MS-SQL hat eine kurze Google-Suche den folgenden Treffer geliefert. Das sollte helfen:
http://codeasp.net/blogs/raghav_khunger/microsoft-ne…

Oder das:
http://social.msdn.microsoft.com/Forums/en/sqlreport…

Grüße,

Volker

Danke Volker,
das hatte ich auch schon gefunden, ich brauche allerdings das Lagerfach (das gleiche!) wenn es z.B. 3mal mit dem entsprechenden Artikel bestückt ist auch 3mal in der Zelle (wie in meinem Beispiel)…

Gruß,
Klaus

Hallo,

also eine zusätzliche Spalte mit „Menge x Lagerfach-Inhalt“ als Text?

Wie wäre es mit
SELECT [Artikel], [Menge], REPLICATE([Lagerfach] + ‚,‘, [Menge]) AS [Lagerfaecher]

Das ergibt zumindest
0162541 | 3 | Lagerfach1,Lagerfach1,Lagerfach1,

Am Ende ist eben ein Komma zu viel, aber das ist evtl. nicht relevant?

Volker

Kann leider nicht weiterhelfen

Gruss
Peter

Das genau brauchte ich, REPLICATE peinlich, peinlich…
Ich probiers heute abend mal!

VIELEN DANK!!!

Ich bin nicht sicher, ob ich die Frage richtig verstanden habe: Feld so oft mit dem Feldinhalt füllen, wie in Menge vorgegeben ist und mit Komma trennen? Wenn ja, dann hier die Lösung.

Mit einer einfachen SQL Anweisung kann ich dies auch nicht lösen. Das unten angegebene einfache VB-Skript sollte aber Ihr Problem lösen. Kopieren Sie dazu die Befehle in eine Datei mit Endung .vbs und führen diese Datei aus (Doppelklick). Sie müssen vorher noch Ihre Daten einfügen:
yourtable = Ihre Tabelle
yourSQLserver= Ihr Servername
Die mit ’ gekennzeichneten Zeilen sind auskommentiert und würden am Bildschirm eine Kontroll-Message (vorher/nachher) erzeugen. Das Skript führt natürlich keine Plausibilitätschecks aus (wie z.B. : Ist der Feldname Lagerfach lang genug, um den Lagerfach1,Lagerfach1,… wirklich aufnehmen zu können). Hier das Skript:

ConnectionString=„DRIVER={SQL Server};SERVER=yourSQLserver;TIMEOUT=60;DATABASE=yourtable“
Set Conn = CreateObject(„ADODB.Connection“)
Conn.Open ConnectionString

Set rs=Conn.Execute(„SELECT Menge,Lagerfach FROM yourtable WHERE Artikel=‚0162541‘“)
'msgbox(rs(„Lagerfach1“))

text=""
For i=1 To rs(„Menge“)
text=text & rs(„Lagerfach“)
If irs(„Menge“) Then text=text &","
Next

Conn.Execute(„UPDATE yourtable SET Lagerfach=’“ & text & „’ WHERE Artikel=‚0162541‘“)

'Set rs=Conn.Execute(„SELECT Menge,Lagerfach FROM yourtable WHERE Artikel=‚0162541‘“)
'msgbox(rs(„Lagerfach1“))

Conn.Close

Rechnen mit access und die abfrage als SQL anzeigen
kannst dann direkt übernehmnen