Hallo asu,
ja es geht um Hersteller-Barcodes. Komischer Weise sind die Artikel immer wieder mal schneller produziert und ausgeliefert, als eine Datei mit Artikeldaten erstellt werden kann.
Wenn die sinnvolle Funktion aus der DOS-Version wiederbelebt werden sollte, könnte man das über ein neues Feld in den Adressen-Statusfeldern steuern.
Allerdings zieht das Ganze, wie ich gerade feststellen musste, doch weitere Kreise. Wenn z.B. bestimmte Warengruppen grundsätzlich keine EAN's haben oder Lieferanten-unabhängige Sammelartikel im WE verbucht werden sollen. Den Trigger habe ich deshalb in diesen zwei Punkten nochmal angepasst.
Code:
USE [...300]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Trigger [dbo].[UserGeschäftsVorfallPos_Insert_EAN] ON [dbo].[GeschäftsvorfallPosition] FOR INSERT AS
SET NOCOUNT ON
declare @str as varchar(150)
set @str = CHAR(10) + 'GeschäftsVorfallPos.'+CHAR(10) + 'Für diesen Artikel ist noch keine EAN-Nummer angelegt worden.'
IF (UPDATE([ArtikelNr]) AND (SELECT COUNT(*) FROM inserted inner join
artikel on inserted.artikelnr=artikel.artikelnr
where
inserted.[ArtikelNr] IS NOT NULL and
-- Nur diese Warengruppen prüfen
artikel.wgkürzel in('101', '110') and
-- Bei diesen Lieferanten prüfen
inserted.korrnr in ('211', '215', '327', '166', '116', '142', '172', '189', '191', '145', '148')
and
-- Bei Vorfallart
vorfallkürzel='WE'
and
-- Nur Artikelnummern in diesem Bereich prüfen
inserted.artikelnr between '001000' and '899999'
)>0)
BEGIN
IF (SELECT COUNT(*)
FROM inserted inner join
ean on inserted.artikelnr=ean.artikelnr
where
-- Nur EAN mit definierter Länge zulassen
len(ean.ean) between 12 and 13
)=0
BEGIN
RAISERROR (@str, 16, 1)
ROLLBACK TRANSACTION
RETURN
END
END
Danke auch für den Tipp mit varchar(). Weil bei uns die Korrnummern immer 3-stelig, numerisch sind, habe ich daran nicht gedacht.
Grüße,
Arnd.