以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请问这种报表该如何生成?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=69365)

--  作者:youkacard
--  发布时间:2015/6/3 19:44:00
--  请问这种报表该如何生成?
举个简单的例子:
我做了一个循环生成的流水号,比方说从NO.00001-NO.01000;这时我需要200个号码就是一个号段,比方说第一个号段是NO.00001-NO.00200,第二个号段是NO.00201-NO.00400...以此类推;我需要这些号段做一个标签,标签图如下:

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150603193738.png
图片点击可在新窗口打开查看
请问该怎么做呢。
请版主提供个思路给我,我自己做。


--  作者:monvzhilei
--  发布时间:2015/6/3 19:49:00
--  
我感觉就是使用excel报表功能。
--  作者:大红袍
--  发布时间:2015/6/3 19:59:00
--  

 用专业报表吧。

 

 

Dim doc As New PrintDoc \'定义一个报表

For i As Integer = 1 To 10
    Dim rt As New prt.RenderTable() \'定义一个表格对象
    doc.Body.Children.Add(rt) \'将表格对象加入到报表中
    rt.Style.GridLines.All = New prt.Linedef \'设置网格线
    rt.Style.Spacing.Bottom = 20
    rt.Cells(0,0).Text = "订单名称"
    rt.Cells(0,1).Text = "停车卡"
    rt.Cells(1,0).Text = "盒装数量"
    rt.Cells(1,1).Text = "第" & i & "盒"
    rt.Cells(2,0).Text = "号段"
    rt.Cells(2,1).Text = "NO." & format((i-1)*200+1, "00000") & "-NO." &  Format(i*200, "00000")
Next
doc.Preview() \'预览报表

 

http://www.foxtable.com/help/topics/1199.htm

 


--  作者:youkacard
--  发布时间:2015/6/3 20:05:00
--  
谢谢
--  作者:youkacard
--  发布时间:2015/6/4 16:29:00
--  
您好,大红袍版主,经过实际应用时候,发现有个问题,就是循环里我如果要跳过某个指定条件的数字,号段并不会跳过,请问如果解决呢?示例如下:
For i As Integer = 1 To 10
Dim b As Boolean = True
If CStr(i).EndsWith("4") Or Format(i,"000").EndsWith("4") Then \'个位数含4的都跳过
b = False
End If
If b Then
If i <= 5 Then \'总共5盒
MessageBox.Show((i - 1) * 2 + 1 & "-" & i * 2)
End If
End If
Next

这里面,号段不会跳过4

--  作者:大红袍
--  发布时间:2015/6/4 16:33:00
--  
For i As Integer = 1 To 10
    Dim d1 As Integer = (i - 1) * 2 + 1
    Dim d2 As Integer = i * 2
    If not (Cstr(d1).Contains("4") OrElse Cstr(d2).Contains("4")) Then
        If i <= 5 Then \'总共5盒
            MessageBox.Show(d1 & "-" & d2)
        End If
    End If
Next

--  作者:youkacard
--  发布时间:2015/6/8 9:30:00
--  
以下是引用大红袍在2015/6/4 16:33:00的发言:
For i As Integer = 1 To 10
    Dim d1 As Integer = (i - 1) * 2 + 1
    Dim d2 As Integer = i * 2
    If not (Cstr(d1).Contains("4") OrElse Cstr(d2).Contains("4")) Then
        If i <= 5 Then \'总共5盒
            MessageBox.Show(d1 & "-" & d2)
        End If
    End If
Next

这样生成出来好像不对,我自己按照这个思路用EndWish也不行,按照循环 1 - 10,每2个就是一个号段,跳过4之后的号段应该是 1-2;3-5;6-7;8-9;10-11;可是这段代码输出的是1-2;5-6;7-8;9-10;


--  作者:youkacard
--  发布时间:2015/6/8 9:47:00
--  
顶起来,让大神们看到图片点击可在新窗口打开查看
--  作者:Bin
--  发布时间:2015/6/8 9:57:00
--  
Dim d3 As Integer
For i As Integer = 1 To 10
    Dim d1 As Integer = (i - 1) * 2 + 1+d3
    Dim d2 As Integer = i * 2+d3
    If i <= 5 Then \'总共5盒
        If not (Cstr(d1).Contains("4") OrElse Cstr(d2).Contains("4")) Then
            MessageBox.Show(d1 & "-" & d2)
        Else If Cstr(d2).Contains("4") Then
            d3=1
            MessageBox.Show(d1 & "-" & (d2+1))
        End If
    End If
Next

--  作者:大红袍
--  发布时间:2015/6/8 10:00:00
--  

Dim d1 As Integer
Dim d2 As Integer = 0
Dim count = 10
Dim i = 1
Do While i <= count
    If cstr(i).Contains("4") = False Then
        d2 += 1
        If d2 = 1 Then
            d1 = i
        ElseIf d2 = 2 Then
            output.show(d1 & " " & i)
            d2 = 0
        End If
    Else
        count += 1
    End If
    i += 1
Loop