Autor Beitrag
timonsp
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Do 12.01.12 16:04 
Hallo Zusammen!
Vielleich kann mir hier jemand weiterhelfen, googlen war erfolglos. :(

Ich habe eine Tabelle, welche über eine Spalte "Version" verfügt. Die Versionnummern sind alphabetisch realisiert. Jetzt möchte ich diese Versionnummern automatisieren, d.h. jedesmal wenn ein Datensatz geändert wird, soll eine neue Version geschrieben werden.
Die Beschriftung ist so vorgegeben: A,B,C,D ..., Z AA,AB,AC,AD, ..., AZ BA,BB,BC usw.
Die Datenstruktur ist bereits gegeben und darf nicht verändert werden.

Ich habe es mit char("number") versucht, jedoch wenn es um zweistellige Versionenzeichen geht, bin ich überfordert.
Hat jemand eine Idee hierzu?
Danke im Voraus!

Gruss Timon
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 12.01.12 17:24 
Zitat:
Die Datenstruktur ist bereits gegeben und darf nicht verändert werden.


Ich darf trotzdem anmerken das das eigentlich großer M**t ist?

Ich würde eine Stored Function vorschlagen z.B. so

ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
CREATE FUNCTION ufn_NextVersion(@version varchar(10))
RETURNS varchar(10)
AS
BEGIN             
    IF (@version is NULLOR (LEN(@version) = 0) RETURN 'A' -- oder @version      
    
    IF RIGHT(@version, 1) = 'Z'
      RETURN @Version + 'A'      
    ELSE
      RETURN SUBSTRING(@version, 0, LEN(@version)) + CHAR(ASCII(RIGHT(@version, 1))+1)
    RETURN 'A' -- wird nie erreicht
END


Dann

ausblenden SQL-Anweisung
1:
UPDATE TABLE MeineLiebeTabelle SET .... Blah .... , Version = dbo.ufn_NextVersion(Version);					


Ähnlichen Code solltest du aber genauso in einem Instead Of Trigger beim updaten benutzen können.

Für diesen Beitrag haben gedankt: timonsp