select a.spid,a.spbh,a.spmch,a.dw,a.zjm,a.shl,a.shpgg,a.shpchd,
  case when (len(:lscardid)>0 and a.is_hysp='是') then a.huiytj
  else a.lshj
  end as lshj,
  a.hshsj,a.jlgg,a.jj,a.hshjj,a.shlv,
  a.beactive, 1 as frmtm,a.koul 
       from spkfk a,sp_tmgx b
  where a.beactive="是" and a.spid=b.spid and b.sptm=:sptm;select spid,zjm,shl,spbh,spmch,shpgg,shpchd,dw,
  case when (len(:lscardid)>0 and is_hysp='是') then huiytj
  else lshj
     end as lshj,
     hshsj, 1 as jlgg,jj,hshjj,shlv,beactive, 1 as frmtm,koul
  from spkfk
     where beactive="是" and sptm=:sptm;select spid, zjm, shl, spbh, spmch, shpgg,shpchd,dw,
       case when (len(:lscardid)>0 and is_hysp='是') then huiytj
       else  lshj
     end as lshj,
       hshsj,1 as jlgg,jj,hshjj,shlv, 
       beactive, 0 as frmtm, koul
    from spkfk
where beactive="是" and spbh like :v_get;select spid, zjm, shl, spbh, spmch, shpgg, shpchd, dw,
    case when (len(:lscardid)>0 and is_hysp='是') then huiytj
   else lshj
 end as lhsj,
    hshsj,1 as jlgg, jj, hshjj, shlv,
   beactive, 0 as frmtm, koul
from spkfk
where beactive="是" and (spmch like :v_get or zjm like :v_get);注:此索引方案,可调商品,也可调会员价,但是电子秤的条码不能识别数量。
总是默认系统数量为1,本来在ini文件中有如下一段,但是不是用软件自带的方案,所以不起作用似的,
在ini中:
电子秤标识=37
{当商品编号获得的字符串前两位为 37 时,标识是电子秤的条码}
 条码反馈=9,4,10,金额
{从条码第9位开始取4位除1000表示商品反馈(金额或数量)}
   {  电子秤商品标识=3,6
{从条码的第3位开始取6位表示商品信息}}
以上方案中数据库所用字段如下:
spid 商品内码 字符型 字段宽度11 字段精度0
spbh 商品编号 字符型 字段宽度15 字段精度0
spmch 商品名称 字符型 字段宽度30 字段精度0
dw   包装单位 字符型 字段宽度6    字段精度0
zjm 助记码 字符型 字段宽度20 字段精度0
shl 数量  实数型 字段宽度14 字段精度2
shpgg 商品规格 字符型 字段宽度20 字段精度0
shpchd 产地  字符型 字段宽度40 字段精度0
cardid 会员卡内码 字符型 字段宽度11 字段精度0
is_hysp  是否会员商品 字符型 字段宽度2 字段精度0
huiytj  会员特价 实数型 字段宽度15字段精度3
lshj 零售价 实数型 字段宽度12 字段精度2
hshsj 含税售价 实数型 字段宽度14 字段精度2
jlgg  计量规格  整数型 字段宽度3 字段精度0
jj     进价 实数型 字段宽度14 字段精度3
hshjj  含税进价 实数型 字段宽度14 字段精度2
shlv   税率   实数型 字段宽度7 字段精度2
koul 扣率    实数型 字段宽度4 字段精度2
sptm 商品条码   字符型 字段宽度14 字段精度0
其中语句 1 as frmtm ,1表示普通条码,0表示特殊条码(如散货)
frmtm 是条码变参
所用数据库:
spkfk 商品档案表, sp_tmgx 一品多条码关系表