EAN13碼數(shù)通用的商品條碼,其編碼數(shù)據(jù)長(zhǎng)度為13位數(shù)字(12位商品數(shù)據(jù)碼+1位校驗(yàn)碼),一般我們?cè)谟弥鞋槜l碼打印軟件生成EAN13碼時(shí),只需要輸入前12商品數(shù)據(jù),校驗(yàn)碼可以由條碼打印軟件自動(dòng)生成,但是有時(shí)候我們需要自己生成EAN13碼的校驗(yàn)碼怎么辦?下面就給大家介紹一下如果用中瑯條碼打印軟件中的腳本編程生成EAN13碼的校驗(yàn)碼。EAN13碼的計(jì)算方法如下圖:
?
生成EAN13碼的校驗(yàn)碼離不開(kāi)EAN13碼的前12位商品數(shù)據(jù)碼,我們準(zhǔn)備一批商品數(shù)據(jù)碼保存在TXT文檔中,通過(guò)數(shù)據(jù)庫(kù)導(dǎo)入條碼打印軟件中使用。
為了方便對(duì)比,在標(biāo)簽上分別添加一個(gè)條形碼和一個(gè)普通文本,條形碼類型設(shè)置成“EAN13”,數(shù)據(jù)源中導(dǎo)入TXT文檔中的12位商品數(shù)據(jù)碼,可以看到保存后EAN13條形碼的校驗(yàn)碼已經(jīng)由有條碼打印軟件自動(dòng)生成,在普通文本的屬性-數(shù)據(jù)源中也導(dǎo)入同樣的商品數(shù)據(jù)碼,保存后是沒(méi)有校驗(yàn)碼,下面用腳本編程實(shí)現(xiàn)。
打開(kāi)普通文本的“圖形屬性”-“數(shù)據(jù)源”,再次導(dǎo)入一次TXT數(shù)據(jù)(數(shù)據(jù)源中相當(dāng)于導(dǎo)入了兩次商品數(shù)據(jù)碼),選中第二個(gè)商品數(shù)據(jù)碼,點(diǎn)擊右側(cè)的“+”,添加一個(gè)處理方法,類型選擇“腳本編程”,在輸入框中輸入以下腳本代碼:
var a = dataObj.getOriginalDataValue() + "";
var b =strReturn.split(""); //split()函數(shù),把原數(shù)據(jù)按照數(shù)字從左到右分裂成b[0]、b[1]、b[2]、b[3]、b[4]……b[11]等12部分
var c1 = 3*(Number(b[1])+Number(b[3])+Number(b[5])+Number(b[7])+Number(b[9])+Number(b[11])); //Number()函數(shù)把個(gè)對(duì)象數(shù)值轉(zhuǎn)換成數(shù)字,在按照公式求和并乘以3得到c1
var c2 = Number(b[0])+Number(b[2])+Number(b[4])+Number(b[6])+Number(b[8])+Number(b[10]); //求和得到c2
var cc =(c1+c2) %10; //求和c1和c2并取個(gè)位數(shù)得到cc
var c =(10-cc) %10; //這個(gè)地方取個(gè)位數(shù)是為了c為10時(shí)是取0
strReturn = strReturn +c.toFixed(0); //輸出原數(shù)據(jù)和計(jì)算的校驗(yàn)碼,由于計(jì)算的校驗(yàn)碼含小數(shù)點(diǎn),取整輸出
通過(guò)以上腳本編程代碼就可以把12位商品數(shù)據(jù)碼生成一個(gè)校驗(yàn)碼,再和前面的12位商品數(shù)據(jù)碼組合到一塊就是一個(gè)完整的13位EAN碼數(shù)據(jù)。保存設(shè)置后通過(guò)條碼打印軟件中“打印預(yù)覽”可以查看效果,文本中的數(shù)據(jù)和下面的條形碼一樣,校驗(yàn)位也一一對(duì)應(yīng)。