nabend,
wieder einmal der verflixte Montag, neben dem Freitag einer der Tage an denen nie etwas klappt *g*
Ich hab hier nen Trigger geschrieben, der Feldwertändeurngen mitschreiben soll.
Hier der Code:
Egal was ich mache ich bekomm nen Error:
Mein Kopf raucht und ich habe keine Idee mehr ....
P.S.: Es liegt nicht an dem "Feld" "Function".
wieder einmal der verflixte Montag, neben dem Freitag einer der Tage an denen nie etwas klappt *g*
Ich hab hier nen Trigger geschrieben, der Feldwertändeurngen mitschreiben soll.
Hier der Code:
PHP-Code:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER trigger [dbo].[tblAS0003_ChangeTracking_3] on [dbo].[tblAS0003] for update
AS
-- print 'Trigger feuert!'
-- Allgemeine Deklarationen für den Trigger
declare @bit int ,
@field int ,
@maxfield int ,
@char int ,
@fieldname varchar(128) ,
@TableName varchar(128) ,
@sql varchar(2000),
@sqlcl varchar(2000),
@UpdateDate varchar(21) ,
@UserName varchar(128) ,
@Type char(1) ,
@PKValueSelect varchar(1000),
@cnt_i varchar(128),
@cnt_t varchar(128)
select @TableName = 'tblAS0003'
-- Datum und Benutzer
select @UserName = system_user , @UpdateDate = convert(varchar(8), getdate(), 112) + ' ' + convert(varchar(12), getdate(), 114)
-- Trigger-Action
if exists (select * from inserted)
if exists (select * from deleted)
select @Type = 'U'
else
select @Type = 'I'
else
select @Type = 'D'
-- Hole Spalten-Liste
select id, idusermodify, city, commemail1, commemail2, commemail3, commfaxoffice, comminternet, commphonecentral,
"function",
shortname, department,
name1, name2, name3, namefirst, namelast, namesalutation, nametitle, number,
street, zipcode, b_funktion_beziehungen, b_gesellschaftsanteil,
buergelid, buergelstatus, crm_funktion_jfm, crm_funktion_jfp, familienstand, kundenstatus,
l_adresstyp, l_branche1, l_branche2, l_branche3, l_bundesland, l_fuhrpark, l_kapital,
l_mitarbeiter, l_rechtsform, l_sperrkennz, l_umsatz, land_privat, newsletter, ort_privat,
plz_privat, straße_privat
into #ins from inserted
select id, idusermodify, city, commemail1, commemail2, commemail3, commfaxoffice, comminternet, commphonecentral,
"function",
shortname, department,
name1, name2, name3, namefirst, namelast, namesalutation, nametitle, number,
street, zipcode, b_funktion_beziehungen, b_gesellschaftsanteil,
buergelid, buergelstatus, crm_funktion_jfm, crm_funktion_jfp, familienstand, kundenstatus,
l_adresstyp, l_branche1, l_branche2, l_branche3, l_bundesland, l_fuhrpark, l_kapital,
l_mitarbeiter, l_rechtsform, l_sperrkennz, l_umsatz, land_privat, newsletter, ort_privat,
plz_privat, straße_privat
into #del from deleted
-- Änderungen ermitteln und Log-Eintrag vornehmen
select @PKValueSelect = Id from inserted
select @field = 0, @maxfield = max(ORDINAL_POSITION) from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = @TableName
while @field < @maxfield
begin
select @field = min(ORDINAL_POSITION) from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = @TableName and ORDINAL_POSITION > @field
select @bit = (@field - 1 )% 8 + 1
select @bit = power(2,@bit - 1)
select @char = ((@field - 1) / 8) + 1
if substring(COLUMNS_UPDATED(),@char, 1) &@bit > 0 or @Type in ('I','D')
begin
print 'Jetzt'
select @fieldname = COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = @TableName and ORDINAL_POSITION = @field
print 'Feldname: ' + @fieldname
select @sql = 'insert into tblAS0003_EX0013 (IdAddress, IdUserCreate, TimeCreate, AenderungVon, AenderungAm, Feld, oldvalue, newvalue) '
select @sql = @sql + 'select i.Id, i.IdUserModify, '
select @sql = @sql + '''' + @UpdateDate + ''', '
select @sql = @sql + ' i.IdUserModify, '
select @sql = @sql + '''' + @UpdateDate + ''', '
select @sql = @sql + '''' + @fieldname + ''', '
select @sql = @sql + 'convert(char(1000),d.' + @fieldname +'),'
select @sql = @sql + 'convert(char(1000),i.' + @fieldname +') '
select @sql = @sql + ' from #ins i join #del d '
select @sql = @sql + 'on i.Id = d.Id'
select @sql = @sql + ' where i.' + @fieldname + ' <> d.' + @fieldname
select @sql = @sql + ' or i.' + @fieldname + ' is null'
select @sql = @sql + ' or d.' + @fieldname + ' is null'
print @sql
exec (@sql)
--raiserror (@sql,16,-1,@TableName)
end
end
Egal was ich mache ich bekomm nen Error:
Code:
Microsoft OLE DB Provider for SQL Server: Falsche Syntax in der nähe des 'Function'-Schlüsselwortes. [42000]=156
P.S.: Es liegt nicht an dem "Feld" "Function".
![Smilie](https://www.php-resource.de/forum/core/images/smilies/smile.gif)
Kommentar