您的位置:程序门 -> vb -> 数据库(包含打印,安装,报表)



能帮我写一个例子呀,是这样的,如:票号:01,02,03~99,100。我要做一个报表查询软件要用到把sql中的的票号这一项也列在报表中,并且显示在报表格中是这样的效果,01-100,假如,其中有的票号没有的话,效果是这样的,如:01-14,15-28,3


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


能帮我写一个例子呀,是这样的,如:票号:01,02,03~99,100。我要做一个报表查询软件要用到把sql中的的票号这一项也列在报表中,并且显示在报表格中是这样的效果,01-100,假如,其中有的票号没有的话,效果是这样的,如:01-14,15-28,3
发表于:2007-12-06 14:50:12 楼主
能帮我写一个例子呀,是这样的,如:票号:01,02,03~99,100。我要做一个报表查询软件要用到把sql中的的票号这一项也列在报表中,并且显示在报表格中是这样的效果,01-100,假如,其中有的票号没有的话,效果是这样的,如:01-14,15-28,30-100。      
发表于:2007-12-06 18:19:051楼 得分:0
dim   strsource   as   string,   tmp()   as   string,   numbers()   as   string
dim   i   as   integer,   p   as   integer
dim   strresult   as   string,   tonumber   as   integer

strsource   =   "01,02,05~96,98~100"
strsource   =   replace(strsource,   ",",   ",")

tmp   =   split(strsource,   ",")
if   ubound(tmp)   =   0   then
        strresult   =   strsource
else
        strresult   =   tmp(0)
        tonumber   =   tmp(0)
        for   i   =   1   to   ubound(tmp)
                if   instr(tmp(i),   "~")   then
                        numbers   =   split(tmp(i),   "~")
                        if   val(numbers(0))   >   tonumber   +   1   then
                                strresult   =   strresult   &   "-"   &   format(tonumber,   "0#")   &   ","   &   numbers(0)
                        end   if
                        tonumber   =   numbers(1)
                else
                        if   val(tmp(i))   >   tonumber   +   1   then
                                strresult   =   strresult   &   "-"   &   format(tonumber,   "0#")   &   ","   &   tmp(i)
                        end   if
                        tonumber   =   tmp(i)
                end   if
        next   i
        strresult   =   strresult   &   "-"   &   tonumber
end   if
debug.print   strresult
发表于:2007-12-06 18:41:182楼 得分:0
一点改进:
dim   strsource   as   string,   tmp()   as   string,   numbers()   as   string
dim   i   as   integer,   p   as   integer
dim   strresult   as   string,   tonumber   as   integer,   lastnumber   as   integer

strsource   =   "01,03,05~96,98~100"
strsource   =   replace(strsource,   ",",   ",")

tmp   =   split(strsource,   ",")
if   ubound(tmp)   =   0   then
                strresult   =   strsource
else
                strresult   =   tmp(0)
                tonumber   =   tmp(0)
                lastnumber   =   tmp(0)
                for   i   =   1   to   ubound(tmp)
                                if   instr(tmp(i),   "~")   then
                                                numbers   =   split(tmp(i),   "~")
                                                if   val(numbers(0))   >   tonumber   +   1   then
                                                                strresult   =   strresult   &   iif(lastnumber   <   tonumber,   "-"   &   format(tonumber,   "0#"),   "")   &   ","   &   numbers(0)
                                                                lastnumber   =   numbers(0)
                                                end   if
                                                tonumber   =   numbers(1)
                                else
                                                if   val(tmp(i))   >   tonumber   +   1   then
                                                                strresult   =   strresult   &   iif(lastnumber   <   tonumber,   "-"   &   format(tonumber,   "0#"),   "")   &   ","   &   tmp(i)
                                                                lastnumber   =   tmp(i)
                                                end   if
                                                tonumber   =   tmp(i)
                                end   if
                next   i
                strresult   =   strresult   &   "-"   &   tonumber
end   if
debug.print   strresult
发表于:2007-12-06 18:44:343楼 得分:0
最后也要改:

dim   strsource   as   string,   tmp()   as   string,   numbers()   as   string
dim   i   as   integer,   p   as   integer
dim   strresult   as   string,   tonumber   as   integer,   lastnumber   as   integer

strsource   =   "01,03,05~86,90~98,100"
strsource   =   replace(strsource,   ",",   ",")

tmp   =   split(strsource,   ",")
if   ubound(tmp)   =   0   then
                strresult   =   strsource
else
                strresult   =   tmp(0)
                tonumber   =   tmp(0)
                lastnumber   =   tmp(0)
                for   i   =   1   to   ubound(tmp)
                                if   instr(tmp(i),   "~")   then
                                                numbers   =   split(tmp(i),   "~")
                                                if   val(numbers(0))   >   tonumber   +   1   then
                                                                strresult   =   strresult   &   iif(lastnumber   <   tonumber,   "-"   &   format(tonumber,   "0#"),   "")   &   ","   &   numbers(0)
                                                                lastnumber   =   numbers(0)
                                                end   if
                                                tonumber   =   numbers(1)
                                else
                                                if   val(tmp(i))   >   tonumber   +   1   then
                                                                strresult   =   strresult   &   iif(lastnumber   <   tonumber,   "-"   &   format(tonumber,   "0#"),   "")   &   ","   &   tmp(i)
                                                                lastnumber   =   tmp(i)
                                                end   if
                                                tonumber   =   tmp(i)
                                end   if
                next   i
                strresult   =   strresult   &   iif(lastnumber   <   tonumber,   "-"   &   tonumber,   "")
end   if
debug.print   strresult
发表于:2007-12-07 15:38:264楼 得分:0
warswow.com
发表于:2007-12-13 11:12:335楼 得分:0
谢谢,of123,我试试,你帮我写的代码。
发表于:2007-12-13 20:09:456楼 得分:0
kongwei302   ,请问warswow.com是什么意思呀。好像是网址,又打不开。


快速检索

最新资讯
热门点击