EMail senden Mail an den Autor Drucken

vorhergehender Eintrag

nächster Eintrag

Inhalt

Hilfe Index

.

SQL Server

Aufmass (BAU_CODE) richtig stellen

Beim Aufmass wurden Alphanumerische Werte (von der alten Version) übernommen und können dadurch bei der Abrechnung nicht mehr richtig sortiert und selektiert werden.

Mit dem SQL Script im Anhang werden die Baugruppen und die Aufmasspositionen wieder fortlaufend sortiert.

Vorgehensweise:

  • Die D_AUFBAUGRUP in D_AUFBAUGRUP_save umbenennen
  • Die D_BAUKOLLPOS in D_BAUKOLLPOS_save umbenennen
  • Die Tabelle von Kplus (Datenbankadmin) neu erstellen lassen
  • Zum Schluss wird das SQL Script ausgeführt

Wichtig! Dieses Script funktioniert nur wenn die Aufmasspositionen direkt auf dem Aufmass hängen!

In diesem Kapitel

SQL Script

Weitere Kapitel

Datenmigration von mySQL nach MSSQL

Neue Auswertungen

Umlaute auf SQL Datenbank richtig stellen

Datenbank kopieren

SQL Scripts

Trigger

Kplus SQL Server Funktionen

Kplus Datenbankanbindung fixieren

Falsche Collate auf der Datenbank

Sql Script - Update von Lohnbuchungen von einem Benutzer zu einem anderen Benutzer

vorhergehender Eintrag

nächster Eintrag

Inhalt

SQL Script

DECLARE @l_sMsg char(1024)

,@l_nRetCode int

,@l_nErr int

,@l_last_BAU_NUMMER int

,@l_neu_BAU_CODE smallint

,@l_alt_BAU_CODE varchar(4)


-- D_AUFBAUGRUP

declare @l_BAU_SEQ int

,@l_BAU_NUMMER int

,@l_BAU_CODE varchar(4)

,@l_BAU_TEXT varchar(250)

,@l_BAU_VONDAT datetime

,@l_BAU_BISDAT datetime

,@l_BAU_ZEIT numeric(15, 2)

,@l_BAU_GESPERRT tinyint

,@l_BAU_GESPERRT_VON varchar(10)

,@l_BAU_PERIODE int

,@l_BAU_ZEITRAUM_NR int

,@l_BAU_AUFMASSBLATT int

,@l_BAU_UG varchar(4)

,@l_BAU_INFO varchar(250)

,@l_BAU_AUFMASSNR int


-- D_BAUKOLLPOS

declare @l_BKO_SEQ int

,@l_BKO_NUMMER int

,@l_BKO_BAUCODE varchar(4)

,@l_BKO_KOLNR int

,@l_BKO_ORT1 varchar(50)

,@l_BKO_ORT2 varchar(50)

,@l_BKO_POSITION varchar(20)

,@l_BKO_KURZTEXT varchar(500)

,@l_BKO_FORMEL varchar(max)

,@l_BKO_EINH varchar(5)

,@l_BKO_MENGE_AUFMASS numeric(15, 3)

,@l_BKO_MENGE_ANGEBOT numeric(15, 3)

,@l_BKO_AUFMASS_KUM numeric(15, 3)

,@l_BKO_AUFPOSSEQ int

,@l_BKO_ABRECHBISHER numeric(15, 3)

,@l_BKO_ABRECHNEU numeric(15, 3)

,@l_BKO_PREIS numeric(15, 2)

,@l_BKO_AKKORDKZ varchar(3)

,@l_BKO_AKKORDMIN float

,@l_BKO_AKKORDPREIS float

,@l_BKO_POS_SORT varchar(30)

,@l_BKO_POSNR int

,@l_BKO_UPOSNR int

,@l_BKO_UUPOSNR int

,@l_BKO_UUUPOSNR varchar(2)

,@l_BKO_MENGE_SONDERWUNSCH numeric(15, 3)

,@l_BKO_DATUM datetime

,@l_BKO_ZEITRAUM_NR int

,@l_BKO_NEU tinyint

,@l_BKO_NACHTRAG tinyint

,@l_BKO_ORT1_ID int

,@l_BKO_ORT2_ID int

,@l_BKO_MENGE_KORREKT numeric(15, 3)

,@l_BKO_UG varchar(4)

,@l_BKO_PERIODE int

,@l_BKO_INFO varchar(250)

,@l_BKO_POS_SORT2 varchar(30)


set @l_nRetCode = 0;

set @l_last_BAU_NUMMER =0;


BEGIN TRY


DECLARE hCur CURSOR FAST_FORWARD FOR

SELECT [BAU_SEQ]

,[BAU_NUMMER]

,[BAU_CODE]

,[BAU_TEXT]

,[BAU_VONDAT]

,[BAU_BISDAT]

,[BAU_ZEIT]

,[BAU_GESPERRT]

,[BAU_GESPERRT_VON]

,[BAU_PERIODE]

,[BAU_ZEITRAUM_NR]

,[BAU_AUFMASSBLATT]

,[BAU_UG]

,[BAU_INFO]

,[BAU_AUFMASSNR]

FROM D_AUFBAUGRUP_SAVE

where BAU_NUMMER > 0

order by BAU_NUMMER, BAU_SEQ


OPEN hCur;


FETCH NEXT FROM hCur INTO

@l_BAU_SEQ,@l_BAU_NUMMER,@l_BAU_CODE,@l_BAU_TEXT,@l_BAU_VONDAT,@l_BAU_BISDAT,@l_BAU_ZEIT

,@l_BAU_GESPERRT,@l_BAU_GESPERRT_VON,@l_BAU_PERIODE,@l_BAU_ZEITRAUM_NR,@l_BAU_AUFMASSBLATT

,@l_BAU_UG,@l_BAU_INFO,@l_BAU_AUFMASSNR;


WHILE @@fetch_status = 0

BEGIN

set @l_alt_BAU_CODE = @l_BAU_CODE;

--PRINT N'SEQ:' + cast(@l_BAU_SEQ as varchar(20));


IF @l_BAU_NUMMER <> @l_last_BAU_NUMMER

BEGIN

set @l_last_BAU_NUMMER = @l_BAU_NUMMER;

set @l_neu_BAU_CODE = 0;

END


set @l_neu_BAU_CODE = @l_neu_BAU_CODE + 1;

set @l_BAU_CODE = CAST(@l_neu_BAU_CODE as varchar(4));

--PRINT @l_BAU_CODE;

--PRINT @l_neu_BAU_CODE;

-- INSERT


INSERT INTO [Kplus_M0].[dbo].[D_AUFBAUGRUP]

([BAU_NUMMER],[BAU_CODE],[BAU_TEXT],[BAU_VONDAT],[BAU_BISDAT],[BAU_ZEIT],[BAU_GESPERRT]

,[BAU_GESPERRT_VON],[BAU_PERIODE],[BAU_ZEITRAUM_NR],[BAU_AUFMASSBLATT],[BAU_UG],[BAU_INFO]

,[BAU_AUFMASSNR])

VALUES

( @l_BAU_NUMMER,@l_BAU_CODE,@l_BAU_TEXT,@l_BAU_VONDAT,@l_BAU_BISDAT,@l_BAU_ZEIT

,@l_BAU_GESPERRT,@l_BAU_GESPERRT_VON,@l_BAU_PERIODE,@l_BAU_ZEITRAUM_NR,@l_BAU_AUFMASSBLATT

,@l_BAU_UG,@l_BAU_INFO,@l_BAU_AUFMASSNR);


---------------------------------------- D_BAUKOLLPOS ------------------------------------------

DECLARE hCur_BKO CURSOR FAST_FORWARD FOR

SELECT [BKO_SEQ]

,[BKO_NUMMER]

,[BKO_BAUCODE]

,[BKO_KOLNR]

,[BKO_ORT1]

,[BKO_ORT2]

,[BKO_POSITION]

,[BKO_KURZTEXT]

,[BKO_FORMEL]

,[BKO_EINH]

,[BKO_MENGE_AUFMASS]

,[BKO_MENGE_ANGEBOT]

,[BKO_AUFMASS_KUM]

,[BKO_AUFPOSSEQ]

,[BKO_ABRECHBISHER]

,[BKO_ABRECHNEU]

,[BKO_PREIS]

,[BKO_AKKORDKZ]

,[BKO_AKKORDMIN]

,[BKO_AKKORDPREIS]

,[BKO_POS_SORT]

,[BKO_POSNR]

,[BKO_UPOSNR]

,[BKO_UUPOSNR]

,[BKO_UUUPOSNR]

,[BKO_MENGE_SONDERWUNSCH]

,[BKO_DATUM]

,[BKO_ZEITRAUM_NR]

,[BKO_NEU]

,[BKO_NACHTRAG]

,[BKO_ORT1_ID]

,[BKO_ORT2_ID]

,[BKO_MENGE_KORREKT]

,[BKO_UG]

,[BKO_PERIODE]

,[BKO_INFO]

,[BKO_POS_SORT2]

FROM [Kplus_M0].[dbo].[D_BAUKOLLPOS_save]

WHERE BKO_NUMMER = @l_BAU_NUMMER and BKO_BAUCODE = @l_alt_bau_code;


OPEN hCur_BKO;


FETCH NEXT FROM hCur_BKO INTO

@l_BKO_SEQ,@l_BKO_NUMMER,@l_BKO_BAUCODE,@l_BKO_KOLNR,@l_BKO_ORT1,@l_BKO_ORT2,@l_BKO_POSITION

,@l_BKO_KURZTEXT,@l_BKO_FORMEL,@l_BKO_EINH,@l_BKO_MENGE_AUFMASS,@l_BKO_MENGE_ANGEBOT,@l_BKO_AUFMASS_KUM

,@l_BKO_AUFPOSSEQ,@l_BKO_ABRECHBISHER,@l_BKO_ABRECHNEU,@l_BKO_PREIS,@l_BKO_AKKORDKZ,@l_BKO_AKKORDMIN

,@l_BKO_AKKORDPREIS,@l_BKO_POS_SORT,@l_BKO_POSNR,@l_BKO_UPOSNR,@l_BKO_UUPOSNR,@l_BKO_UUUPOSNR

,@l_BKO_MENGE_SONDERWUNSCH,@l_BKO_DATUM,@l_BKO_ZEITRAUM_NR,@l_BKO_NEU,@l_BKO_NACHTRAG,@l_BKO_ORT1_ID

,@l_BKO_ORT2_ID,@l_BKO_MENGE_KORREKT,@l_BKO_UG,@l_BKO_PERIODE,@l_BKO_INFO,@l_BKO_POS_SORT2;


WHILE @@fetch_status = 0

BEGIN


set @l_BKO_BAUCODE = @l_BAU_CODE;


INSERT INTO [Kplus_M0].[dbo].[D_BAUKOLLPOS]

([BKO_NUMMER],[BKO_BAUCODE],[BKO_KOLNR],[BKO_ORT1],[BKO_ORT2],[BKO_POSITION],[BKO_KURZTEXT],[BKO_FORMEL]

,[BKO_EINH],[BKO_MENGE_AUFMASS],[BKO_MENGE_ANGEBOT],[BKO_AUFMASS_KUM],[BKO_AUFPOSSEQ],[BKO_ABRECHBISHER]

,[BKO_ABRECHNEU],[BKO_PREIS],[BKO_AKKORDKZ],[BKO_AKKORDMIN],[BKO_AKKORDPREIS],[BKO_POS_SORT],[BKO_POSNR]

,[BKO_UPOSNR],[BKO_UUPOSNR],[BKO_UUUPOSNR],[BKO_MENGE_SONDERWUNSCH],[BKO_DATUM],[BKO_ZEITRAUM_NR]

,[BKO_NEU],[BKO_NACHTRAG],[BKO_ORT1_ID],[BKO_ORT2_ID],[BKO_MENGE_KORREKT],[BKO_UG],[BKO_PERIODE]

,[BKO_INFO],[BKO_POS_SORT2])

VALUES(@l_BKO_NUMMER,@l_BKO_BAUCODE,@l_BKO_KOLNR,@l_BKO_ORT1,@l_BKO_ORT2,@l_BKO_POSITION

,@l_BKO_KURZTEXT,@l_BKO_FORMEL,@l_BKO_EINH,@l_BKO_MENGE_AUFMASS,@l_BKO_MENGE_ANGEBOT,@l_BKO_AUFMASS_KUM

,@l_BKO_AUFPOSSEQ,@l_BKO_ABRECHBISHER,@l_BKO_ABRECHNEU,@l_BKO_PREIS,@l_BKO_AKKORDKZ,@l_BKO_AKKORDMIN

,@l_BKO_AKKORDPREIS,@l_BKO_POS_SORT,@l_BKO_POSNR,@l_BKO_UPOSNR,@l_BKO_UUPOSNR,@l_BKO_UUUPOSNR

,@l_BKO_MENGE_SONDERWUNSCH,@l_BKO_DATUM,@l_BKO_ZEITRAUM_NR,@l_BKO_NEU,@l_BKO_NACHTRAG,@l_BKO_ORT1_ID

,@l_BKO_ORT2_ID,@l_BKO_MENGE_KORREKT,@l_BKO_UG,@l_BKO_PERIODE,@l_BKO_INFO,@l_BKO_POS_SORT2);


FETCH NEXT FROM hCur_BKO INTO

@l_BKO_SEQ,@l_BKO_NUMMER,@l_BKO_BAUCODE,@l_BKO_KOLNR,@l_BKO_ORT1,@l_BKO_ORT2,@l_BKO_POSITION

,@l_BKO_KURZTEXT,@l_BKO_FORMEL,@l_BKO_EINH,@l_BKO_MENGE_AUFMASS,@l_BKO_MENGE_ANGEBOT,@l_BKO_AUFMASS_KUM

,@l_BKO_AUFPOSSEQ,@l_BKO_ABRECHBISHER,@l_BKO_ABRECHNEU,@l_BKO_PREIS,@l_BKO_AKKORDKZ,@l_BKO_AKKORDMIN

,@l_BKO_AKKORDPREIS,@l_BKO_POS_SORT,@l_BKO_POSNR,@l_BKO_UPOSNR,@l_BKO_UUPOSNR,@l_BKO_UUUPOSNR

,@l_BKO_MENGE_SONDERWUNSCH,@l_BKO_DATUM,@l_BKO_ZEITRAUM_NR,@l_BKO_NEU,@l_BKO_NACHTRAG,@l_BKO_ORT1_ID

,@l_BKO_ORT2_ID,@l_BKO_MENGE_KORREKT,@l_BKO_UG,@l_BKO_PERIODE,@l_BKO_INFO,@l_BKO_POS_SORT2;


END


CLOSE hCur_BKO;

DEALLOCATE hCur_BKO;


---------------------------------------- END ---------------------------------------------------

FETCH NEXT FROM hCur INTO

@l_BAU_SEQ,@l_BAU_NUMMER,@l_BAU_CODE,@l_BAU_TEXT,@l_BAU_VONDAT,@l_BAU_BISDAT,@l_BAU_ZEIT

,@l_BAU_GESPERRT,@l_BAU_GESPERRT_VON,@l_BAU_PERIODE,@l_BAU_ZEITRAUM_NR,@l_BAU_AUFMASSBLATT

,@l_BAU_UG,@l_BAU_INFO,@l_BAU_AUFMASSNR;

END


CLOSE hCur;

DEALLOCATE hCur;


END TRY


BEGIN CATCH

SET @l_nErr = ERROR_NUMBER()

SET @l_sMsg = ERROR_MESSAGE()

RAISERROR( @l_sMsg, 15, 1)

SET @l_nRetCode = -2

CLOSE hCur;

DEALLOCATE hCur;

END CATCH

Zum Seitenanfang Drucken