------------------------------------------------ -- DROP TABLE psoBarCode39 CREATE TABLE psoBarCode39(idnumber INT IDENTITY(1,1), code39 VARCHAR(20)NOT NULL ) ------------------------------------------------ -- DROP FUNCTION hex CREATE FUNCTION hex (@data CHAR(1 )) RETURNS INT AS BEGIN IF (SELECT ISNUMERIC(@data))=1 RETURN CAST (@data AS INT) RETURN CAST (ASCII(@data)-55 AS INT) END ------------------------------------------------ -- DROP FUNCTION checksum39 CREATE FUNCTION checksum39 (@string VARCHAR(30 )) RETURNS CHAR(1) AS BEGIN DECLARE @position INT, @stringControl CHAR(43) , @sum INT SET @stringControl= '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%' SET @position= 1 SET @sum= 0 WHILE ((@position - 1) <= DATALENGTH(@string)) BEGIN SET @sum= @sum + CHARINDEX (SUBSTRING(UPPER(@string), @position, 1) , @stringControl ) SET @position= @position + 1 END SET @sum= @sum - @position + 2 RETURN( SUBSTRING(@stringControl,@sum - 43 *(@sum/43)+1,1)) END ------------------------------------------------ -- DROP PROCEDURE psoCode39 CREATE PROCEDURE psoCode39 @tablex INT, @tabley INT, @pages INT, @height INT, @barcodeSize INT, @textSize INT, @prefix VARCHAR(10), @startValue INT, @checkdigit INT AS DECLARE @position INT, @ole INT, @fs INT, @file INT, @loop1 INT, @loop2 INT, @loop3 INT, @big VARCHAR(2809), @textCSS NVARCHAR(250), @code39 NVARCHAR(20) SET NOCOUNT ON SET @loop1 = 0 SET @big='7C0500007804000002000200E40000100000000900000000000000009001000000004C50000000000000000000000000000000000000000000000000DAED0E3A000000000000000000000000000000000000180046007200650065002000330020006F0066002000390000000000100052006500670075006C0061007200000000001800560065007200730069006F006E00200031002E00300031000000260046007200650065002000330020006F00660020003900200052006500670075006C006100720000002600660069006C0065003A002F002F0063003A005C0000006D00680074006D006C003A0000000000CF564750E20400000000000000000000000000005350606C505420505424505894429DB9DA9D825885CF00A4E7F7B5F58A3DAA20C0810AB5D1B66A32623C087679D6011043C5B9C3E202A4C2656315D2089F59993D2547CF7770C54E76F1544EFE056C93FDC3FBBCBC65535AD3048121F0C759762EDDE03946DAB43010EEF6FEC149EA8618DDE57138346D2327454625F9952DABD59F49E690307CF0E25B31208D1F3D55134371982815B71CBC69F6A5FD37DAD6ED0E135E41165148F57D6B1B78FBD25A8106B32D37D47E3981D78CABF5F205B983C849703A39F59D4913E7C134A1E32617E2B235902A386BD7DDE4126B90AC738BF9BD181373374F6CF045981B50E6FCB4FC31ABC28E85D1CDFA207C2EA53C5826955C1B88C9C6B13C4314CE9C924065244BF8A1C70FA8A7C13505355EC59724BFEA88F9517A4154D5702B1BA5EF603418B1DBA5505BA3D87901343CD0721FD668801DF9F800A017C2D851A02ECCD44152A76FD01546D9BE60AC9CE19D4FE457C2B2DAE81815ECDF9C10F9E158625ED7926DF673CA48F2B4A78544D810F451EF30545907BCE93DA932847169B97F1F423FADC7BEE18246CC41FC80C5C3A650EA0C6C01302D51A8F0F88896E485C00EC856633CF15EC42B96D3FB406D95FCA157DB5D9105FE2F5A52A133ADBF0BFEB064086F5435DB59C1635D7102B8713D2A1440D1B3010A88CA1A9928CA4549125A7B1175E4DB099392AC5206DD1ED616F4B7928C92F175DA008C72E696F8871EE40CC8661A801D6CDF92C23A087A842960CC4CD81463F63CA13D32F31E3539D1792262E7B2C80DC89514CDE65D04176DF6A34BF032553E99435662391C1BB4F9F8F9F010443274E7F06475E1D74B2E61DAB8D48C5CDC47516C9B6335C537031502FBF010CCDFCD9F6C1AAB50102F98641BC850FE0024B42BCA42C5B61DD435A8BDA5E55FC7AA53F830349ECC26777980E59296D8681DF3D82C718A88DD453D4B542873D940546D9B4E9FCCF4940F8D42C77A059C74AE487F247C03B45D08AE750363DA97E3F78B66095A8ECE1A3930ED301B74CA3BBBC3188D32303CFFB6CDE43DD91DA57DA6606A590E6C4827160794167D57227DE8F87543A84C52F8AA006AFB528D6898A148DD9BC641F05E70A45434DBB0CFA882AA1E851101415FE7447747C6887758F913F342DD1264774EA9FA9642DCE9312AA358CC70E8623BD62928BBEE1338BBDA19BC08AAA0A24E52F2FF5FCB92745C21B1F36988C1566478F63BE8F3FAEE51B6B675139090435560F8F4BA8E3CAF528B9910E15B38A137AE5D24CD24AE846F13A031B54115925971E2D73C23230E00A235FA39924EF2B14BC3B491C77D9E3FC84F97400815CD9B12DDC72B21C78F994599A3F20301E5BFA1E2F368112DF691EDF1826A68D2702033C9DF2A0E255F1A1704A5A73B806AD3B51E4E5E5E7490B55D9AB3DA3FDBEDC226BF88C8587BABA8A91CED89DD0BA47737A5515B95540A97AC2B3379797972BF52488D90765EF7B01120CF1D531FB332DF1F530687EBCFF0705AD43830CAEEA1C2D40130E54E785697B79BD74054BD8719D56409444BAE717439A6453912470403AC8FC8D01FB064EEDA58FBC708F1C1FA25337F005050505050505050' EXECUTE @ole = sp_OACreate 'Scripting.FileSystemObject', @fs OUT EXECUTE @ole = sp_OAMethod @fs, 'CreateTextFile', @file OUT, 'C:\code.eot', -1, 0 WHILE (@loop1<1404) BEGIN SET @loop1=@loop1+1 SELECT @code39= CHAR(dbo.hex(SUBSTRING (@big,(@loop1*2-1),1))*16 + dbo.hex(SUBSTRING( @big,(@loop1*2),1))) EXECUTE @ole = sp_OAMethod @file, 'Write', Null, @code39 END EXECUTE @ole = sp_OADestroy @file EXECUTE @ole = sp_OADestroy @fs SET @loop1 = 0 CREATE TABLE #HTMLcode(idnumber INT IDENTITY(1,1), code NVARCHAR(350)) IF (@startValue > 0) BEGIN SET @position=0 DELETE FROM psoBarCode39 WHILE (@position < @tablex*@tabley*@pages) BEGIN INSERT INTO psoBarCode39 VALUES (@position + @startValue) SET @position= @position + 1 END END IF (@checkdigit = 1) UPDATE psoBarCode39 SET code39= code39 + dbo.checksum39(@prefix + code39) INSERT INTO #HTMLcode(code) VALUES ('') INSERT INTO #HTMLcode(code) VALUES (' ') INSERT INTO #HTMLcode(code) VALUES ('PSOBarCode39 ') INSERT INTO #HTMLcode(code) VALUES (' ') DECLARE SysKursor INSENSITIVE SCROLL CURSOR FOR SELECT code39 FROM psoBarCode39 ORDER BY idnumber FOR READ ONLY OPEN SysKursor WHILE (@loop1 < @pages) BEGIN SET @loop2 = 0 INSERT INTO #HTMLcode(code) VALUES ('') WHILE (@loop2 < @tabley) BEGIN SET @loop3 = 0 INSERT INTO #HTMLcode(code) VALUES ( '') WHILE (@loop3 < @tablex) BEGIN SET @code39 = NULL FETCH NEXT FROM SysKursor INTO @code39 SET @code39 = '*' + UPPER(@prefix) +UPPER( @code39)+'*' INSERT INTO #HTMLcode(code) VALUES ('') SET @loop3 = @loop3 + 1 END INSERT INTO #HTMLcode(code) VALUES ( ' ') SET @loop2 = @loop2 + 1 END SET @loop1 = @loop1 + 1 INSERT INTO #HTMLcode(code) VALUES ('
' + ISNULL(@code39,'') + ISNULL(REPLACE(REPLACE(@textCSS, '@', @code39 ),'*',''),'') + '
') IF ( @loop1 <> @pages) INSERT INTO #HTMLcode(code) VALUES ('

') END INSERT INTO #HTMLcode(code) VALUES (' ') CLOSE SysKursor DEALLOCATE SysKursor EXECUTE @ole = sp_OACreate 'Scripting.FileSystemObject', @fs OUT EXECUTE @ole = sp_OAMethod @fs, 'CreateTextFile', @file OUT, 'C:\PsoCode39.htm', -1, 0 DECLARE SysKursor INSENSITIVE SCROLL CURSOR FOR SELECT code FROM #HTMLcode ORDER BY idnumber FOR READ ONLY OPEN SysKursor FETCH NEXT FROM SysKursor INTO @textCSS WHILE @@Fetch_Status = 0 BEGIN EXECUTE @ole = sp_OAMethod @file, 'WriteLine', Null, @textCSS FETCH NEXT FROM SysKursor INTO @textCSS END CLOSE SysKursor DEALLOCATE SysKursor DELETE FROM psoBarCode39 EXECUTE @ole = sp_OADestroy @file EXECUTE @ole = sp_OADestroy @fs