如何在FOXPRO的REPORT中實現列印條碼功能

如何在FOXPRO的REPORT中實現列印條碼功能

作者﹕CCBZZP

以下是我以前做的一個在FOXPRO的FORM調用REPORT中實現列印條碼功能(主要是39條碼),
現在將代碼共享給大家,希望能給各位帶來幫助!

1. 首先將字体文件C39HDW3.TTF拷貝到你的電腦的FONTS目錄下.
2. 在窗体FORM中新增加兩個程序BC_CODE39和BC_OCODE39
3. 程序BC_CODE39的內容是:
Parameters m
rtnp = THISFORM.BC_OCode39(m,"Basic",0)
return rtnp
4. 程序BC_OCODE39的內容是:
Parameters m,full,check
private t,x,p,cval,chktot
set talk off
if type('m')<>"C"
return ""
endif
*** verify full parameter
if type('full')<>"C"
full = "BASIC"
cval = 2
else
full = upper(full)
if full<>"FULL"
full = "BASIC"
cval = 2
else
cval = 3
endif
endif

*** verify check parameter
if type('check')<>'N'
check = 0
else
if check <> 1
check = 0
endif
endif

*** Check to see if user added stop/start
*** character and returns null if true
if at("*"," "+m)>1
return ""
endif

*** decode message into bar code character pattern and place
*** it into the variable

  • initialize the output string and add the start code to it
    p="*"

  • Dimension the conversion array
    dimension cvtarr[4,128]

  • Define the conversion array
    cvtarr[1,1]=chr(0)
    cvtarr[2,1]=""
    cvtarr[3,1]="%U"
    cvtarr[4,1]=0
    cvtarr[1,2]=chr(1)
    cvtarr[2,2]=""
    cvtarr[3,2]="$A"
    cvtarr[4,2]=0
    cvtarr[1,3]=chr(2)
    cvtarr[2,3]=""
    cvtarr[3,3]="$B"
    cvtarr[4,3]=0
    cvtarr[1,4]=chr(3)
    cvtarr[2,4]=""
    cvtarr[3,4]="$C"
    cvtarr[4,4]=0
    cvtarr[1,5]=chr(4)
    cvtarr[2,5]=""
    cvtarr[3,5]="$D"
    cvtarr[4,5]=0
    cvtarr[1,6]=chr(5)
    cvtarr[2,6]=""
    cvtarr[3,6]="$E"
    cvtarr[4,6]=0
    cvtarr[1,7]=chr(6)
    cvtarr[2,7]=""
    cvtarr[3,7]="$F"
    cvtarr[4,7]=0
    cvtarr[1,8]=chr(7)
    cvtarr[2,8]=""
    cvtarr[3,8]="$G"
    cvtarr[4,8]=0
    cvtarr[1,9]=chr(8)
    cvtarr[2,9]=""
    cvtarr[3,9]="$H"
    cvtarr[4,9]=0
    cvtarr[1,10]=chr(9)
    cvtarr[2,10]=""
    cvtarr[3,10]="$I"
    cvtarr[4,10]=0
    cvtarr[1,11]=chr(10)
    cvtarr[2,11]=""
    cvtarr[3,11]="$J"
    cvtarr[4,11]=0
    cvtarr[1,12]=chr(11)
    cvtarr[2,12]=""
    cvtarr[3,12]="$K"
    cvtarr[4,12]=0
    cvtarr[1,13]=chr(12)
    cvtarr[2,13]=""
    cvtarr[3,13]="$L"
    cvtarr[4,13]=0
    cvtarr[1,14]=chr(13)
    cvtarr[2,14]=""
    cvtarr[3,14]="$M"
    cvtarr[4,14]=0
    cvtarr[1,15]=chr(14)
    cvtarr[2,15]=""
    cvtarr[3,15]="$N"
    cvtarr[4,15]=0
    cvtarr[1,16]=chr(15)
    cvtarr[2,16]=""
    cvtarr[3,16]="$O"
    cvtarr[4,16]=0
    cvtarr[1,17]=chr(16)
    cvtarr[2,17]=""
    cvtarr[3,17]="$P"
    cvtarr[4,17]=0
    cvtarr[1,18]=chr(17)
    cvtarr[2,18]=""
    cvtarr[3,18]="$Q"
    cvtarr[4,18]=0
    cvtarr[1,19]=chr(18)
    cvtarr[2,19]=""
    cvtarr[3,19]="$R"
    cvtarr[4,19]=0
    cvtarr[1,20]=chr(19)
    cvtarr[2,20]=""
    cvtarr[3,20]="$S"
    cvtarr[4,20]=0
    cvtarr[1,21]=chr(20)
    cvtarr[2,21]=""
    cvtarr[3,21]="$T"
    cvtarr[4,21]=0
    cvtarr[1,22]=chr(21)
    cvtarr[2,22]=""
    cvtarr[3,22]="$U"
    cvtarr[4,22]=0
    cvtarr[1,23]=chr(22)
    cvtarr[2,23]=""
    cvtarr[3,23]="$V"
    cvtarr[4,23]=0
    cvtarr[1,24]=chr(23)
    cvtarr[2,24]=""
    cvtarr[3,24]="$W"
    cvtarr[4,24]=0
    cvtarr[1,25]=chr(24)
    cvtarr[2,25]=""
    cvtarr[3,25]="$X"
    cvtarr[4,25]=0
    cvtarr[1,26]=chr(25)
    cvtarr[2,26]=""
    cvtarr[3,26]="$Y"
    cvtarr[4,26]=0
    cvtarr[1,27]=chr(26)
    cvtarr[2,27]=""
    cvtarr[3,27]="$Z"
    cvtarr[4,27]=0
    cvtarr[1,28]=chr(27)
    cvtarr[2,28]=""
    cvtarr[3,28]="%A"
    cvtarr[4,28]=0
    cvtarr[1,29]=chr(28)
    cvtarr[2,29]=""
    cvtarr[3,29]="%B"
    cvtarr[4,29]=0
    cvtarr[1,30]=chr(29)
    cvtarr[2,30]=""
    cvtarr[3,30]="%C"
    cvtarr[4,30]=0
    cvtarr[1,31]=chr(30)
    cvtarr[2,31]=""
    cvtarr[3,31]="%D"
    cvtarr[4,31]=0
    cvtarr[1,32]=chr(31)
    cvtarr[2,32]=""
    cvtarr[3,32]="%E"
    cvtarr[4,32]=0
    cvtarr[1,33]=chr(32)
    cvtarr[2,33]=" "
    cvtarr[3,33]=" "
    cvtarr[4,33]=38
    cvtarr[1,34]="!"
    cvtarr[2,34]=""
    cvtarr[3,34]="/A"
    cvtarr[4,34]=0
    cvtarr[1,35]=chr(34)
    cvtarr[2,35]=""
    cvtarr[3,35]="/B"
    cvtarr[4,35]=0
    cvtarr[1,36]="#"
    cvtarr[2,36]=""
    cvtarr[3,36]="/C"
    cvtarr[4,36]=0
    cvtarr[1,37]="$"
    cvtarr[2,37]="$"
    cvtarr[3,37]="/D"
    cvtarr[4,37]=39
    cvtarr[1,38]="%"
    cvtarr[2,38]="%"
    cvtarr[3,38]="/E"
    cvtarr[4,38]=42
    cvtarr[1,39]="&"
    cvtarr[2,39]=""
    cvtarr[3,39]="/F"
    cvtarr[4,39]=0
    cvtarr[1,40]=chr(39)
    cvtarr[2,40]=""
    cvtarr[3,40]="/G"
    cvtarr[4,40]=0
    cvtarr[1,41]="("
    cvtarr[2,41]=""
    cvtarr[3,41]="/H"
    cvtarr[4,41]=0
    cvtarr[1,42]=")"
    cvtarr[2,42]=""
    cvtarr[3,42]="/I"
    cvtarr[4,42]=0
    cvtarr[1,43]=""
    cvtarr[2,43]=""
    cvtarr[3,43]="/J"
    cvtarr[4,43]=0
    cvtarr[1,44]="+"
    cvtarr[2,44]="+"
    cvtarr[3,44]="/K"
    cvtarr[4,44]=41
    cvtarr[1,45]=","
    cvtarr[2,45]=""
    cvtarr[3,45]="/L"
    cvtarr[4,45]=0
    cvtarr[1,46]="-"
    cvtarr[2,46]="-"
    cvtarr[3,46]="-"
    cvtarr[4,46]=36
    cvtarr[1,47]="."
    cvtarr[2,47]="."
    cvtarr[3,47]="."
    cvtarr[4,47]=37
    cvtarr[1,48]="/"
    cvtarr[2,48]="/"
    cvtarr[3,48]="/O"
    cvtarr[4,48]=40
    cvtarr[1,49]="0"
    cvtarr[2,49]="0"
    cvtarr[3,49]="0"
    cvtarr[4,49]=0
    cvtarr[1,50]="1"
    cvtarr[2,50]="1"
    cvtarr[3,50]="1"
    cvtarr[4,50]=1
    cvtarr[1,51]="2"
    cvtarr[2,51]="2"
    cvtarr[3,51]="2"
    cvtarr[4,51]=2
    cvtarr[1,52]="3"
    cvtarr[2,52]="3"
    cvtarr[3,52]="3"
    cvtarr[4,52]=3
    cvtarr[1,53]="4"
    cvtarr[2,53]="4"
    cvtarr[3,53]="4"
    cvtarr[4,53]=4
    cvtarr[1,54]="5"
    cvtarr[2,54]="5"
    cvtarr[3,54]="5"
    cvtarr[4,54]=5
    cvtarr[1,55]="6"
    cvtarr[2,55]="6"
    cvtarr[3,55]="6"
    cvtarr[4,55]=6
    cvtarr[1,56]="7"
    cvtarr[2,56]="7"
    cvtarr[3,56]="7"
    cvtarr[4,56]=7
    cvtarr[1,57]="8"
    cvtarr[2,57]="8"
    cvtarr[3,57]="8"
    cvtarr[4,57]=8
    cvtarr[1,58]="9"
    cvtarr[2,58]="9"
    cvtarr[3,58]="9"
    cvtarr[4,58]=9
    cvtarr[1,59]=":"
    cvtarr[2,59]=""
    cvtarr[3,59]="/Z"
    cvtarr[4,59]=0
    cvtarr[1,60]=";"
    cvtarr[2,60]=""
    cvtarr[3,60]="%F"
    cvtarr[4,60]=0
    cvtarr[1,61]="<"
    cvtarr[2,61]=""
    cvtarr[3,61]="%G"
    cvtarr[4,61]=0
    cvtarr[1,62]="="
    cvtarr[2,62]=""
    cvtarr[3,62]="%H"
    cvtarr[4,62]=0
    cvtarr[1,63]=">"
    cvtarr[2,63]=""
    cvtarr[3,63]="%I"
    cvtarr[4,63]=0
    cvtarr[1,64]="?"
    cvtarr[2,64]=""
    cvtarr[3,64]="%J"
    cvtarr[4,64]=0
    cvtarr[1,65]="@"
    cvtarr[2,65]=""
    cvtarr[3,65]="%V"
    cvtarr[4,65]=0
    cvtarr[1,66]="A"
    cvtarr[2,66]="A"
    cvtarr[3,66]="A"
    cvtarr[4,66]=10
    cvtarr[1,67]="B"
    cvtarr[2,67]="B"
    cvtarr[3,67]="B"
    cvtarr[4,67]=11
    cvtarr[1,68]="C"
    cvtarr[2,68]="C"
    cvtarr[3,68]="C"
    cvtarr[4,68]=12
    cvtarr[1,69]="D"
    cvtarr[2,69]="D"
    cvtarr[3,69]="D"
    cvtarr[4,69]=13
    cvtarr[1,70]="E"
    cvtarr[2,70]="E"
    cvtarr[3,70]="E"
    cvtarr[4,70]=14
    cvtarr[1,71]="F"
    cvtarr[2,71]="F"
    cvtarr[3,71]="F"
    cvtarr[4,71]=15
    cvtarr[1,72]="G"
    cvtarr[2,72]="G"
    cvtarr[3,72]="G"
    cvtarr[4,72]=16
    cvtarr[1,73]="H"
    cvtarr[2,73]="H"
    cvtarr[3,73]="H"
    cvtarr[4,73]=17
    cvtarr[1,74]="I"
    cvtarr[2,74]="I"
    cvtarr[3,74]="I"
    cvtarr[4,74]=18
    cvtarr[1,75]="J"
    cvtarr[2,75]="J"
    cvtarr[3,75]="J"
    cvtarr[4,75]=19
    cvtarr[1,76]="K"
    cvtarr[2,76]="K"
    cvtarr[3,76]="K"
    cvtarr[4,76]=20
    cvtarr[1,77]="L"
    cvtarr[2,77]="L"
    cvtarr[3,77]="L"
    cvtarr[4,77]=21
    cvtarr[1,78]="M"
    cvtarr[2,78]="M"
    cvtarr[3,78]="M"
    cvtarr[4,78]=22
    cvtarr[1,79]="N"
    cvtarr[2,79]="N"
    cvtarr[3,79]="N"
    cvtarr[4,79]=23
    cvtarr[1,80]="O"
    cvtarr[2,80]="O"
    cvtarr[3,80]="O"
    cvtarr[4,80]=24
    cvtarr[1,81]="P"
    cvtarr[2,81]="P"
    cvtarr[3,81]="P"
    cvtarr[4,81]=25
    cvtarr[1,82]="Q"
    cvtarr[2,82]="Q"
    cvtarr[3,82]="Q"
    cvtarr[4,82]=26
    cvtarr[1,83]="R"
    cvtarr[2,83]="R"
    cvtarr[3,83]="R"
    cvtarr[4,83]=27
    cvtarr[1,84]="S"
    cvtarr[2,84]="S"
    cvtarr[3,84]="S"
    cvtarr[4,84]=28
    cvtarr[1,85]="T"
    cvtarr[2,85]="T"
    cvtarr[3,85]="T"
    cvtarr[4,85]=29
    cvtarr[1,86]="U"
    cvtarr[2,86]="U"
    cvtarr[3,86]="U"
    cvtarr[4,86]=30
    cvtarr[1,87]="V"
    cvtarr[2,87]="V"
    cvtarr[3,87]="V"
    cvtarr[4,87]=31
    cvtarr[1,88]="W"
    cvtarr[2,88]="W"
    cvtarr[3,88]="W"
    cvtarr[4,88]=32
    cvtarr[1,89]="X"
    cvtarr[2,89]="X"
    cvtarr[3,89]="X"
    cvtarr[4,89]=33
    cvtarr[1,90]="Y"
    cvtarr[2,90]="Y"
    cvtarr[3,90]="Y"
    cvtarr[4,90]=34
    cvtarr[1,91]="Z"
    cvtarr[2,91]="Z"
    cvtarr[3,91]="Z"
    cvtarr[4,91]=35
    cvtarr[1,92]="["
    cvtarr[2,92]=""
    cvtarr[3,92]="%K"
    cvtarr[4,92]=0
    cvtarr[1,93]=""
    cvtarr[2,93]=""
    cvtarr[3,93]="%L"
    cvtarr[4,93]=0
    cvtarr[1,94]="]"
    cvtarr[2,94]=""
    cvtarr[3,94]="%M"
    cvtarr[4,94]=0
    cvtarr[1,95]="^"
    cvtarr[2,95]=""
    cvtarr[3,95]="%N"
    cvtarr[4,95]=0
    cvtarr[1,96]="_"
    cvtarr[2,96]=""
    cvtarr[3,96]="%O"
    cvtarr[4,96]=0
    cvtarr[1,97]=chr(96)
    cvtarr[2,97]=""
    cvtarr[3,97]="%W"
    cvtarr[4,97]=0
    cvtarr[1,98]="a"
    cvtarr[2,98]=""
    cvtarr[3,98]="+A"
    cvtarr[4,98]=0
    cvtarr[1,99]="b"
    cvtarr[2,99]=""
    cvtarr[3,99]="+B"
    cvtarr[4,99]=0
    cvtarr[1,100]="c"
    cvtarr[2,100]=""
    cvtarr[3,100]="+C"
    cvtarr[4,100]=0
    cvtarr[1,101]="d"
    cvtarr[2,101]=""
    cvtarr[3,101]="+D"
    cvtarr[4,101]=0
    cvtarr[1,102]="e"
    cvtarr[2,102]=""
    cvtarr[3,102]="+E"
    cvtarr[4,102]=0
    cvtarr[1,103]="f"
    cvtarr[2,103]=""
    cvtarr[3,103]="+F"
    cvtarr[4,103]=0
    cvtarr[1,104]="g"
    cvtarr[2,104]=""
    cvtarr[3,104]="+G"
    cvtarr[4,104]=0
    cvtarr[1,105]="h"
    cvtarr[2,105]=""
    cvtarr[3,105]="+H"
    cvtarr[4,105]=0
    cvtarr[1,106]="i"
    cvtarr[2,106]=""
    cvtarr[3,106]="+I"
    cvtarr[4,106]=0
    cvtarr[1,107]="j"
    cvtarr[2,107]=""
    cvtarr[3,107]="+J"
    cvtarr[4,107]=0
    cvtarr[1,108]="k"
    cvtarr[2,108]=""
    cvtarr[3,108]="+K"
    cvtarr[4,108]=0
    cvtarr[1,109]="l"
    cvtarr[2,109]=""
    cvtarr[3,109]="+L"
    cvtarr[4,109]=0
    cvtarr[1,110]="m"
    cvtarr[2,110]=""
    cvtarr[3,110]="+M"
    cvtarr[4,110]=0
    cvtarr[1,111]="n"
    cvtarr[2,111]=""
    cvtarr[3,111]="+N"
    cvtarr[4,111]=0
    cvtarr[1,112]="o"
    cvtarr[2,112]=""
    cvtarr[3,112]="+O"
    cvtarr[4,112]=0
    cvtarr[1,113]="p"
    cvtarr[2,113]=""
    cvtarr[3,113]="+P"
    cvtarr[4,113]=0
    cvtarr[1,114]="q"
    cvtarr[2,114]=""
    cvtarr[3,114]="+Q"
    cvtarr[4,114]=0
    cvtarr[1,115]="r"
    cvtarr[2,115]=""
    cvtarr[3,115]="+R"
    cvtarr[4,115]=0
    cvtarr[1,116]="s"
    cvtarr[2,116]=""
    cvtarr[3,116]="+S"
    cvtarr[4,116]=0
    cvtarr[1,117]="t"
    cvtarr[2,117]=""
    cvtarr[3,117]="+T"
    cvtarr[4,117]=0
    cvtarr[1,118]="u"
    cvtarr[2,118]=""
    cvtarr[3,118]="+U"
    cvtarr[4,118]=0
    cvtarr[1,119]="v"
    cvtarr[2,119]=""
    cvtarr[3,119]="+V"
    cvtarr[4,119]=0
    cvtarr[1,120]="w"
    cvtarr[2,120]=""
    cvtarr[3,120]="+W"
    cvtarr[4,120]=0
    cvtarr[1,121]="x"
    cvtarr[2,121]=""
    cvtarr[3,121]="+X"
    cvtarr[4,121]=0
    cvtarr[1,122]="y"
    cvtarr[2,122]=""
    cvtarr[3,122]="+Y"
    cvtarr[4,122]=0
    cvtarr[1,123]="z"
    cvtarr[2,123]=""
    cvtarr[3,123]="+Z"
    cvtarr[4,123]=0
    cvtarr[1,124]="{"
    cvtarr[2,124]=""
    cvtarr[3,124]="%P"
    cvtarr[4,124]=0
    cvtarr[1,125]="|"
    cvtarr[2,125]=""
    cvtarr[3,125]="%Q"
    cvtarr[4,125]=0
    cvtarr[1,126]="}"
    cvtarr[2,126]=""
    cvtarr[3,126]="%R"
    cvtarr[4,126]=0
    cvtarr[1,127]="~"
    cvtarr[2,127]=""
    cvtarr[3,127]="%S"
    cvtarr[4,127]=0
    cvtarr[1,128]=chr(127)
    cvtarr[2,128]=""
    cvtarr[3,128]="%T"
    cvtarr[4,128]=0
    chktot = 0
    *** process the message
    FOR x = 1 TO len(m)
    t = substr(m, x, 1)
    rtnc = asubscript(cvtarr,ascan(cvtarr,t,aelement(cvtarr,1,1),128),2)
    if rtnc <> 0
    p = p + cvtarr[cval,rtnc]
    chktot = chktot + cvtarr[4,rtnc]
    endif
    endfor
    if check = 1
    chkstr = 43 - (chktot % 43)
    rtnc = asubscript(cvtarr,ascan(cvtarr,chkstr,aelement(cvtarr,4,1),128),2)
    if rtnc <> 0
    p = p + cvtarr[1,rtnc]
    endif
    endif
    p = p + "
    "
    return p

5. 在REPORT中增加數据環境表,再增加一個欄位(字段)比如CON_NO
這個欄位的運算式是: THISFORM.BC_CODE39(CON_NO)
格式是: @J
6. 將此REPORT進行PREVIEW OR PRINTER即可列印出條目來.

Published At
Categories with 数据库类
comments powered by Disqus