SQL Trigger Update eines geänderten Datensatzes

Ein Updatetrigger nimmt eine Datenmanipulation vor. Hierbei muß immer äusserst vorsichtig gehandelt werden. In diesem Beispiel wird nach dem Speichern eines Datensatzes ein anderes Feld in diesem Datensatz noch verändert. Hierzu wird mit einer Hilfstabelle gearbeitet. In eine Tabelle Wartauftraege wird der Wert aus dem Datenfeld Anlagennr in das Datenfeld ExtAuftragsNr geschrieben wenn dieses den Wert Null hat.
Achtung: Bein nochmaligen Speichern des identischen Datensatzes wird es zu Problemen kommen.

ALTER TRIGGER [dbo].[trAnlagennummer] ON [dbo].[WartAuftraege] after update
AS
begin
declare @Anlagennr nvarchar(15)
declare @AuftragsNr nvarchar(15)
set @Anlagennr = (select top 1 Anlagennr from inserted)
select @Anlagennr=max(AnlagenNr),@AuftragsNr=max(AuftragsNr) from inserted

update WartAuftraege set extAuftragsNr = AnlagenNr where AuftragsNr = @AuftragsNr and extAuftragsNr is NULL
end

Katalogartikel im Lager via UGS Datei anlegen

Im Dokument [download id=“266″] wird beschrieben, wie mittels einer simplen UGS Datei aus einem Artikelkatalog Lagerartikel angelegt werden. Zusätzlich ist das Controlling Nord_KatalogexportAlleArtikel.xrpt notwendig um die Datensätze aus dem Artikelkatalog heraus zu erzeugen. Die XRPT Datei muss an die korrekte Artikeldatenbank angepasst werden.

 

Eingangsrechnungsbuch Rechnungsstatus Buchungsstatus Zahlungsstatus

Eingangsrechnungesbuch rebbuchung.vorgang
Vorgangsart 4
(Bestellung) fkbestellung wird gefüllt fkprojnr nicht
Vorgangsart 0
(Projekt) fkProjNr wird gefüllt fkbestellung nicht Vorgangsnr wird mit NULL gefüllt
Vorgangsart 9
(Sonstiges) KSTKTR wird gefüllt mit den Kopfdaten KSTKTR aus ERRechnung
Vorgangsart 2
(Regie) Vorgangsnr wird gefüllt mit Regienr
Vorgangsart 5
(Wartungsauftrag) Vorgangsnr wird gefüllt mit Wartungsauftragsnr

SELECT [pkER]
,[fkAdresse]
,[Rechnungsstatus]
,case
when [Rechnungsstatus] = ‚0‘ Then ‚Rechnungsstatus 0 = Angelegt‘
when [Rechnungsstatus] = ‚2‘ Then ‚Rechnungsstatus 2 = In Arbeit‘
when [Rechnungsstatus] = ‚3‘ Then ‚Rechnungsstatus 3 = Abgeschlossen‘ ENd
,[Buchungsstatus]
,case
when [Buchungsstatus] = ‚0‘ Then ‚Buchungsstatus 0 = Ungebucht‘
when [Buchungsstatus] = ‚2‘ Then ‚Buchungsstatus 2 = Verbucht‘ ENd
,[Zahlungsstatus]
,case
when [Zahlungsstatus] = ‚0‘ Then ‚Zahlungsstatus 0 = Nicht freigegeben‘
when [Zahlungsstatus] = ‚1‘ Then ‚Zahlungsstatus 1 = Freigegeben‘
when [Zahlungsstatus] = ‚2‘ Then ‚Zahlungsstatus 2 = Teilbezahlt‘
when [Zahlungsstatus] = ‚3‘ Then ‚Zahlungsstatus 3 = Bezahlt‘ ENd
/*Das Feld Freigabe in der DB wird nicht gefüllt*/
,Freigabebenutzer
,case
when [Freigabebenutzer] <> “ Then ‚Freigabe im Register Rechnung‘
when [Freigabebenutzer] is Null Then ‚keine Freigabe im Register Rechnung‘ ENd
,TechPruefungDurch
,case
when [TechPruefungDurch] <> “ Then ‚technisch geprüft‘
when [TechPruefungDurch] is Null Then ’nicht technisch geprüft‘ ENd
,WeiterberechnungDebitorDurch
,case
when [WeiterberechnungDebitorDurch] <> “ Then ‚GF geprüft‘
when [WeiterberechnungDebitorDurch] is Null Then ’nich GF geprüft‘ ENd
FROM [dbo].[rebEinRechnung]