Die Übersicht ist Ergebnis von langem vergeblichen Suchen, Unverständnis und großem Frust darüber, dass es in JTL nicht möglich ist, massenhaft Bilder für eine Plattform zu ersetzen.
Über die Ameise kann ich zwar Plattform-spezifisch Bilder laden. aber nur zusätzlich oder mit vorherigem Löschen sämtlicher Zuordnungen für alle Plattformen.
Ich kann auch Bilder exportieren, aber leider ohne Information über die Zuordnung zu Plattformen.
Manuell je Artikel geht es aber bei Varkombis mit über 200 Kindern auch nicht.
Wollte das lange nicht glauben, dass JTL keine Möglichkeit für eine solche doch nicht ungewöhnliche Anforderung bietet. Ich habe jedenfalls nichts gefunden.
Ich habe die Informationen jetzt direkt aus der Datenbank gezogen und konnte zusammen mit einem Bilderexport und neuem Import (mit Vorab-Löschen) das Gewünschte erreichen.
Und da mir dann aufgefallen ist, dass es als Listenübersicht auch funktioniert, wollte ich das gene teilen. Vielleicht hilft es jemandem, der ein ähnliches Anliegen hat.
Anmerkung:
(1) Bei mehr als einem Onlineshop muss evt noch was angepasst werden
(2) Für meine Zwecke haben die 4 ersten Spalten gereicht, aber evt sind die weiteren Bild-Daten interessant
(3) Ich verwende die exportierten Bilder zum Neuladen, evt sind aber die Bildreferenzen in Quelle eine Alternative, falls man die Bilder noch so vorliegen hat
Für meine Anforderung bin ich nun so vorgegangen:
Für mich hat es so funktioniert und ich habe eine brauchbare Lösung für das Aktualisieren von Bildern. Wird aber nicht für jeden und alles funktionieren. Deshalb unbedingt testen, wer es einsetzen will.
Über die Ameise kann ich zwar Plattform-spezifisch Bilder laden. aber nur zusätzlich oder mit vorherigem Löschen sämtlicher Zuordnungen für alle Plattformen.
Ich kann auch Bilder exportieren, aber leider ohne Information über die Zuordnung zu Plattformen.
Manuell je Artikel geht es aber bei Varkombis mit über 200 Kindern auch nicht.
Wollte das lange nicht glauben, dass JTL keine Möglichkeit für eine solche doch nicht ungewöhnliche Anforderung bietet. Ich habe jedenfalls nichts gefunden.
Ich habe die Informationen jetzt direkt aus der Datenbank gezogen und konnte zusammen mit einem Bilderexport und neuem Import (mit Vorab-Löschen) das Gewünschte erreichen.
Und da mir dann aufgefallen ist, dass es als Listenübersicht auch funktioniert, wollte ich das gene teilen. Vielleicht hilft es jemandem, der ein ähnliches Anliegen hat.
SQL:
-- ArtikelBilder je Plattform z.B. für Ameise NeuImport
---- Standardartikel oder Vaterartikel bei Varkombis
SELECT a.cArtNr AS ArtNr, p.cName AS Plattform, abp.nNr AS PlattformBildNummer, ab.Bildname AS ExportBildname, b.cQuelle AS Quelle, b.dErstellt AS Erstellt, b.dAenderung AS Aenderung, b.nDateigroesse AS Dateigroesse, b.nBreite AS Breite, b.nHoehe AS Hoehe, b.nVorschauDateigroesse AS VorschauDateigroesse, b.nVorschauBreite AS VorschauBreite, b.nVorschauHoehe AS VorschauHoehe
FROM dbo.tArtikelbildPlattform AS abp
INNER JOIN dbo.tArtikel AS a
ON abp.kArtikel = a.kArtikel
INNER JOIN dbo.tPlattform AS p
ON abp.kPlattform = p.nPlattform
INNER JOIN dbo.tBild AS b
ON abp.kBild = b.kBild
INNER JOIN (
SELECT dbo.tArtikelbildPlattform.kArtikel AS ArtikelID, dbo.tArtikelbildPlattform.kBild AS BildID, CONCAT (dbo.tArtikel.cArtNr,'-',dbo.tArtikelbildPlattform.nNr) AS Bildname
FROM dbo.tArtikelbildPlattform
INNER JOIN dbo.tArtikel
ON dbo.tArtikelbildPlattform.kArtikel = dbo.tArtikel.kArtikel
WHERE dbo.tArtikelbildPlattform.kPlattform = 1) AS ab
ON ab.ArtikelID = abp.kArtikel AND ab.BildID = abp.kBild
WHERE abp.kPlattform <> 1
AND a.kArtikel = @Key
UNION
---- Kinderartikel bei Varkombis
SELECT a.cArtNr AS ArtNr, p.cName AS Plattform, abp.nNr AS PlattformBildNummer, ab.Bildname AS ExportBildname, b.cQuelle AS Quelle, b.dErstellt AS Erstellt, b.dAenderung AS Aenderung, b.nDateigroesse AS Dateigroesse, b.nBreite AS Breite, b.nHoehe AS Hoehe, b.nVorschauDateigroesse AS VorschauDateigroesse, b.nVorschauBreite AS VorschauBreite, b.nVorschauHoehe AS VorschauHoehe
FROM dbo.tArtikelbildPlattform AS abp
INNER JOIN dbo.tArtikel AS a
ON abp.kArtikel = a.kArtikel
INNER JOIN dbo.tPlattform AS p
ON abp.kPlattform = p.nPlattform
INNER JOIN dbo.tBild AS b
ON abp.kBild = b.kBild
INNER JOIN (
SELECT dbo.tArtikelbildPlattform.kArtikel AS ArtikelID, dbo.tArtikelbildPlattform.kBild AS BildID, CONCAT (dbo.tArtikel.cArtNr,'-',dbo.tArtikelbildPlattform.nNr) AS Bildname
FROM dbo.tArtikelbildPlattform
INNER JOIN dbo.tArtikel
ON dbo.tArtikelbildPlattform.kArtikel = dbo.tArtikel.kArtikel
WHERE dbo.tArtikelbildPlattform.kPlattform = 1) AS ab
ON ab.ArtikelID = abp.kArtikel AND ab.BildID = abp.kBild
WHERE abp.kPlattform <> 1
AND a.kVaterArtikel = @Key
ORDER BY a.cArtNr,p.cName,abp.nNr
Anmerkung:
(1) Bei mehr als einem Onlineshop muss evt noch was angepasst werden
(2) Für meine Zwecke haben die 4 ersten Spalten gereicht, aber evt sind die weiteren Bild-Daten interessant
(3) Ich verwende die exportierten Bilder zum Neuladen, evt sind aber die Bildreferenzen in Quelle eine Alternative, falls man die Bilder noch so vorliegen hat
Für meine Anforderung bin ich nun so vorgegangen:
- Für Vater-/Kinder-Artikel einen ArtikelBilder-Export per Ameise durchgeführt mit "Bildnamen benennen nach Artikelnummer"
- Für einen Varkombiartikel (Vater und Kinder) die Daten lt SQL oben ermittelt
- Die Listenform in eine breite Darstellung (1 Zeile je Artikelnummer) überführt (dabei noch ".jpg" angehängt an ExportBildname) und als CSV-Datei bereitgestellt
- Für die Plattform, die neue Bilder erhalen soll, die Bildnamen gelöscht in der CSV-Datei
- Eine Vorlage für Ameisen-Import "Artikelbilder je Plattform" für die CSV-Datei erstellt (den Suffix ".jpg" kann man alternativ auch hier erstellen) mit Option "Zuordnungen vorher löschen"
- Import durchgeführt. Sollte jetzt wie vorher sein, nur ohne die in der CSV-Datei gelöschten Plattformzuweisungen
- Und jetzt die neuen Bilder für die Plattform importiert wie üblich (jetzt nur neue Zuordnungen)
Code:
Sub Fill_ImportFile()
'Transform normalized output from SQL extract (Export sheet) to Ameise Bilder import file (Import sheet)
'Export data: ArtNr, Plattform, PlattformBildNummer, ExportBildname
'Import data: Artikelnummer, AmazonB1, ..., AmazonB20, EbayB1, ..., EbayB20,ShopB1, ..., ShopB20
'The range with the Export data from SQL.
Dim rnExport As Range
'Row variables used (Export)
Dim lnLastRow As Long
Dim lnRowCount As Long
'Row and Column variables used (Import)
Dim lnCounterR As Long
Dim lnCounterC As Long
'Column Offset per platform in Import Sheet
Dim lnPlattformOffset As Long
'Artikelnummer stored to check change
Dim strArtnr As String
Set rnExport = Worksheets("Export").UsedRange
lnLastRow = rnExport.Rows.Count
lnCounterR = 1
strArtnr = "leer"
For lnRowCount = 2 To lnLastRow
If rnExport.Cells(lnRowCount, 1) <> strArtnr Then
strArtnr = rnExport.Cells(lnRowCount, 1)
lnCounterR = lnCounterR + 1
End If
If rnExport.Cells(lnRowCount, 2) = "Amazon" Then
lnPlattformOffset = 0
ElseIf rnExport.Cells(lnRowCount, 2) = "eBay" Then
lnPlattformOffset = 20
ElseIf rnExport.Cells(lnRowCount, 2) = "Onlineshop" Then
lnPlattformOffset = 40
End If
Worksheets("Import").Cells(lnCounterR, 1).Value = rnExport.Cells(lnRowCount, 1)
lnCounterC = lnPlattformOffset + rnExport.Cells(lnRowCount, 3) + 1
Worksheets("Import").Cells(lnCounterR, lnCounterC).Value = rnExport.Cells(lnRowCount, 4) & ".jpg"
Next lnRowCount
End Sub
Für mich hat es so funktioniert und ich habe eine brauchbare Lösung für das Aktualisieren von Bildern. Wird aber nicht für jeden und alles funktionieren. Deshalb unbedingt testen, wer es einsetzen will.