Foxtable(狐表)用户栏目专家坐堂 → 报表的关联数据为空,怎么搞成后台获取数据


  共有101人关注过本帖树形打印复制链接

主题:报表的关联数据为空,怎么搞成后台获取数据

帅哥哟,离线,有人找我吗?
yifan3429
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1798 积分:16699 威望:0 精华:0 注册:2011/3/29 17:14:00
报表的关联数据为空,怎么搞成后台获取数据  发帖心情 Post By:2019/12/4 16:58:00 [只看该作者]

Dim Result As DialogResult
Result = MessageBox.Show("你确定打印凭证吗,是不是?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If Result = DialogResult.Yes Then
    Dim doc As New PrintDoc '定义一个报表
    Dim rt As New prt.RenderTable() '定义一个表格对象
    Dim rx As New prt.RenderText '定义一个文本对象
    Dim ra As prt.RenderArea
    Dim CurRow As Row = Tables("凭证往来账户").Current
    '设置页边距制杖设定
    'doc.PageSetting.Width = 100 '纸张宽度为100毫米
    'doc.PageSetting.Height = 120 '纸张高度为120毫米
    doc.PageSetting.PaperKind = 9 '纸张类型改为B5
    'doc.PageSetting.Landscape = True '横向打印
    Doc.PageSetting.LeftMargin = 20 '设置左边距
    Doc.PageSetting.RightMargin = 10 '设置右边距
    Doc.PageSetting.TopMargin = 10 '设置上边距
    Doc.PageSetting.BottomMargin = 8 '设置下边距
    'rx.Width = "Parent.Width" '对象宽度等于页面宽度
    'rx.Height = "Parent.Height" '对象高度等于页面高度
    'doc.Body.Children.Add(rx) '将文本对象加入到报表
    
    '设置水印
    Dim rst As prt.RenderText '定义一个文本对象
    rst = New prt.RenderText '设置文本对象的内容
    rst.Text = User.Group & User.Name '设置文本内容
    rst.Width = "Parent.Width" '宽度等于页面宽度
    rst.Height = "Parent.Height" '高度等于页面高度
    rst.Style.TextAngle = 45 '旋转45度
    rst.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中对齐
    rst.Style.TextAlignVert = prt.AlignVertEnum.Center '垂直居中对齐
    rst.Style.FontSize = 72 '字体大小为8磅
    rst.Style.TextColor = Color.LightCyan'文本颜色为灰色
    Doc.WaterMark = rst '作为水印使用
    
    
    '设置页脚
    Dim rmx As New prt.RenderTable
    rmx.Style.Borders.Bottom = New prt.LineDef(0.5, Color.DeepSkyBlue) '设置页眉底边框
    'ryx.Style.Borders.Top = New prt.LineDef(0.5, Color.DeepSkyBlue) '设置页脚底边
    rmx.Cells(0,0).Text = "ID: "& CurRow("对账ID")
    rmx.Cells(0,2).Text ="操作信息:"& Date.Today & User.Name
    rmx.Cells(0,1).Text = "TOCASA艺徒国际财务对账凭证"
    rmx.Cols(0).Style.TextAlignHorz = prt.AlignHorzEnum.Left
    rmx.Cols(1).Style.TextAlignHorz = prt.AlignHorzEnum.Center
    rmx.Cols(2).Style.TextAlignHorz = prt.AlignHorzEnum.right
    rmx.CellStyle.Spacing.Bottom = 0.5 '底端内容缩进0.5毫米
    rmx.Style.FontSize = 10 '字体大小为8磅
    Doc.PageHeader = rmx '作为页眉使用
    'Doc.PageFooter = ryx '作为页脚使用
    '
    '设置页脚
    Dim ryx As New prt.RenderTable
    'ryx.Style.Borders.Bottom = New prt.LineDef(0.5, Color.DeepSkyBlue) '设置页眉底边框
    ryx.Style.Borders.Top = New prt.LineDef(0.5, Color.DeepSkyBlue) '设置页脚底边
    ryx.Cells(0,0).Text ="软装|木作|大理石|智能"
    ryx.Cells(0,1).Text = "中国   开福    TOCASA"
    ryx.Cells(0,2).Text = "第[PageNo]页,共[PageCount]页"
    ryx.Cols(0).Style.TextAlignHorz = prt.AlignHorzEnum.Left
    ryx.Cols(1).Style.TextAlignHorz = prt.AlignHorzEnum.Center
    ryx.Cols(2).Style.TextAlignHorz = prt.AlignHorzEnum.right
    ryx.CellStyle.Spacing.Bottom = 0.5 '底端内容缩进0.5毫米
    ryx.Style.FontSize = 10 '字体大小为8磅
    'Doc.PageHeader = ryx '作为页眉使用
    Doc.PageFooter = ryx '作为页脚使用
    
    '''加入标题
    'rx = New prt.RenderText
    'rx.Style.FontBold = True '字体加粗
    'rx.Style.FontSize = 16 '大体大小为16磅
    'rx.Text = "TOCASA艺徒国际财务对账凭证"
    ''rx.Style.TextAlignHorz = prt.AlignHorzEnum.Right
    'rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中排列
    ''rx.Style.Spacing.Bottom = 1 '和下面的对象(表格)距离3毫米
    'rx.Style.Spacing.Top= 3 '和上面的对象(表格)距离3毫米
    'doc.Body.Children.Add(rx)
    '''加入副标题
    'rx = New prt.RenderText
    ''rx.Style.FontBold = True '字体加粗
    'rx.Style.FontSize = 10 '大体大小为16磅
    'rx.Text = "          凭证ID:"& CurRow("对账ID")
    ''rx.Style.TextAlignHorz = prt.AlignHorzEnum.Right
    'rx.Style.TextAlignHorz = prt.AlignHorzEnum.Right '水平居中排列
    'rx.Style.Spacing.Bottom = 2 '和下面的对象(表格)距离3毫米
    'rx.Style.Spacing.Top= 1 '和上面的对象(表格)距离3毫米
    'rx.Style.Borders.Bottom = New prt.LineDef(0.5, Color.DeepSkyBlue) '设置页眉底边框
    'doc.Body.Children.Add(rx)
    
    rt = New prt.RenderTable() '定义一个表格对象
    rt.CellStyle.Spacing.All = 1 '单元格内容缩进1毫米
    rt.Style.TextAlignVert = prt.AlignVertEnum.Center '内容垂直居中
    rt.Style.FontBold = True '字体加粗
    rt.Cells(0,0).Text= "部门:"& CurRow("核算主体")&"/"& CurRow("收款人")
    'rt.Cells(1,2).Text= "              附件张数  :"& CurRow("附件张数")
    rt.Cells(1,0).Text= "收款人:"& CurRow("收款人") & "    " & "开户行:" & CurRow("开户行")& "    " & "账号:" & CurRow("收款账号")
    doc.Body.Children.Add(rt) '将表格对象加入到报表中
    
    '''
    Relations.Add("关联1",DataTables("凭证往来账户").DataCols("收款人"),DataTables("凭证明细").DataCols("收款人"))  '动态创建关联       '
    rt = New prt.RenderTable
    rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center
    rt.Style.TextAlignVert = prt.AlignVertEnum.Center
    rt.Style.Borders.Bottom = New prt.LineDef(0.3,Color.DeepSkyBlue)
    rt.Style.GridLines.All = New prt.Linedef(Color.DeepSkyBlue) '设置网格线
    
    rt.Cols(2).Width = 60 '设置列宽
    
    ''
    rt.Cells(0,0).Text = "申请日期"
    rt.Cells(0,1).Text = "凭证类别"
    rt.Cells(0,2).Text = "摘要"
    rt.Cells(0,3).Text = "收入"
    rt.Cells(0,4).Text = "支出"
    rt.Cells(0,5).Text = "备注"
    rt.rows(0).Style.Borders.Top = New prt.LineDef(1,Color.DeepSkyBlue)
    rt.rows(0).Style.Borders.Bottom = New prt.LineDef(0.5,Color.DeepSkyBlue)
    
    Tables("凭证往来账户.凭证明细").sort = "申请日期"
    Tables("凭证往来账户.凭证明细").sort = "凭证类别"
    With Tables("凭证往来账户.凭证明细")
        For r As Integer = 0 To .Rows.Count - 1 '遍历关联表每一行
            rt.Cells(r+1,0).Text = .rows(r)("申请日期")
            rt.Cells(r+1,1).Text = .rows(r)("凭证类别")
            rt.Cells(r+1,2).Text = .rows(r)("摘要")
            rt.Cells(r+1,3).Text = .rows(r)("收入")
            rt.Cells(r+1,4).Text = .rows(r)("支出")
            rt.Cells(r+1,5).Text = .rows(r)("备注")
        Next
    End With
    rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中
    rt.Style.TextAlignVert = prt.AlignVertEnum.Center '垂直居中
    doc.Body.Children.Add(rt)
    Relations.Delete("关联1")
    
    rt = New prt.RenderTable() '定义一个表格对象
    rt.CellStyle.Spacing.All = 1 '单元格内容缩进1毫米
    rt.Style.TextAlignVert = prt.AlignVertEnum.Center '内容垂直居中
    rt.Style.FontBold = True '字体加粗
    rt.Cells(0,0).Text = "流水金额 ¥: " & Tables("凭证明细").Compute("Sum(金额)") & "元"
    rt.Cells(1,0).Text= "付款申请¥: "& CurRow("付款金额")& "     大写  :"&   CUNumber(CurRow("付款金额") )
    rt.Cells(2,0).Text= "借支金额¥:"& CurRow("借支金额") &"     大写  :"&   CUNumber(CurRow("借支金额") )
    rt.Cells(3,0).Text= "报销金额¥: "& CurRow("报销金额") &"     大写  :"&   CUNumber(CurRow("报销金额") )
    rt.Cells(4,0).Text= "结余金额¥: "& CurRow("结余金额") & "     大写  :"&   CUNumber(CurRow("结余金额") )
    'rt.Cells(5,0).Text= ""
    'rt.Cells(5,1).Text= "核对签字:"
    doc.Body.Children.Add(rt) '将表格对象加入到报表中
    
    Doc.Preview() '预览报表
End If

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:39143 积分:199043 威望:0 精华:8 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/12/4 17:09:00 [只看该作者]

不要使用关联,直接使用select获取需要的数据

DataTables("凭证明细").sqlselect("收款人='" & CurRow("收款人") & "'")

 回到顶部
帅哥哟,离线,有人找我吗?
yifan3429
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1798 积分:16699 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2019/12/4 17:14:00 [只看该作者]

还是不行

Dim Result As DialogResult
Result = MessageBox.Show("你确定打印凭证吗,是不是?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If Result = DialogResult.Yes Then
    Dim doc As New PrintDoc '定义一个报表
    Dim rt As New prt.RenderTable() '定义一个表格对象
    Dim rx As New prt.RenderText '定义一个文本对象
    Dim ra As prt.RenderArea
    Dim CurRow As Row = Tables("凭证往来账户").Current
    '设置页边距制杖设定
    'doc.PageSetting.Width = 100 '纸张宽度为100毫米
    'doc.PageSetting.Height = 120 '纸张高度为120毫米
    doc.PageSetting.PaperKind = 9 '纸张类型改为B5
    'doc.PageSetting.Landscape = True '横向打印
    Doc.PageSetting.LeftMargin = 20 '设置左边距
    Doc.PageSetting.RightMargin = 10 '设置右边距
    Doc.PageSetting.TopMargin = 10 '设置上边距
    Doc.PageSetting.BottomMargin = 8 '设置下边距
    'rx.Width = "Parent.Width" '对象宽度等于页面宽度
    'rx.Height = "Parent.Height" '对象高度等于页面高度
    'doc.Body.Children.Add(rx) '将文本对象加入到报表
    
    '设置水印
    Dim rst As prt.RenderText '定义一个文本对象
    rst = New prt.RenderText '设置文本对象的内容
    rst.Text = User.Group & User.Name '设置文本内容
    rst.Width = "Parent.Width" '宽度等于页面宽度
    rst.Height = "Parent.Height" '高度等于页面高度
    rst.Style.TextAngle = 45 '旋转45度
    rst.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中对齐
    rst.Style.TextAlignVert = prt.AlignVertEnum.Center '垂直居中对齐
    rst.Style.FontSize = 72 '字体大小为8磅
    rst.Style.TextColor = Color.LightCyan'文本颜色为灰色
    Doc.WaterMark = rst '作为水印使用
    
    
    '设置页脚
    Dim rmx As New prt.RenderTable
    rmx.Style.Borders.Bottom = New prt.LineDef(0.5, Color.DeepSkyBlue) '设置页眉底边框
    'ryx.Style.Borders.Top = New prt.LineDef(0.5, Color.DeepSkyBlue) '设置页脚底边
    rmx.Cells(0,0).Text = "ID: "& CurRow("对账ID")
    rmx.Cells(0,2).Text ="操作信息:"& Date.Today & User.Name
    rmx.Cells(0,1).Text = "TOCASA艺徒国际财务对账凭证"
    rmx.Cols(0).Style.TextAlignHorz = prt.AlignHorzEnum.Left
    rmx.Cols(1).Style.TextAlignHorz = prt.AlignHorzEnum.Center
    rmx.Cols(2).Style.TextAlignHorz = prt.AlignHorzEnum.right
    rmx.CellStyle.Spacing.Bottom = 0.5 '底端内容缩进0.5毫米
    rmx.Style.FontSize = 10 '字体大小为8磅
    Doc.PageHeader = rmx '作为页眉使用
    'Doc.PageFooter = ryx '作为页脚使用
    '
    '设置页脚
    Dim ryx As New prt.RenderTable
    'ryx.Style.Borders.Bottom = New prt.LineDef(0.5, Color.DeepSkyBlue) '设置页眉底边框
    ryx.Style.Borders.Top = New prt.LineDef(0.5, Color.DeepSkyBlue) '设置页脚底边
    ryx.Cells(0,0).Text ="软装|木作|大理石|智能"
    ryx.Cells(0,1).Text = "中国   开福    TOCASA"
    ryx.Cells(0,2).Text = "第[PageNo]页,共[PageCount]页"
    ryx.Cols(0).Style.TextAlignHorz = prt.AlignHorzEnum.Left
    ryx.Cols(1).Style.TextAlignHorz = prt.AlignHorzEnum.Center
    ryx.Cols(2).Style.TextAlignHorz = prt.AlignHorzEnum.right
    ryx.CellStyle.Spacing.Bottom = 0.5 '底端内容缩进0.5毫米
    ryx.Style.FontSize = 10 '字体大小为8磅
    'Doc.PageHeader = ryx '作为页眉使用
    Doc.PageFooter = ryx '作为页脚使用
    
    '''加入标题
    'rx = New prt.RenderText
    'rx.Style.FontBold = True '字体加粗
    'rx.Style.FontSize = 16 '大体大小为16磅
    'rx.Text = "TOCASA艺徒国际财务对账凭证"
    ''rx.Style.TextAlignHorz = prt.AlignHorzEnum.Right
    'rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中排列
    ''rx.Style.Spacing.Bottom = 1 '和下面的对象(表格)距离3毫米
    'rx.Style.Spacing.Top= 3 '和上面的对象(表格)距离3毫米
    'doc.Body.Children.Add(rx)
    '''加入副标题
    'rx = New prt.RenderText
    ''rx.Style.FontBold = True '字体加粗
    'rx.Style.FontSize = 10 '大体大小为16磅
    'rx.Text = "          凭证ID:"& CurRow("对账ID")
    ''rx.Style.TextAlignHorz = prt.AlignHorzEnum.Right
    'rx.Style.TextAlignHorz = prt.AlignHorzEnum.Right '水平居中排列
    'rx.Style.Spacing.Bottom = 2 '和下面的对象(表格)距离3毫米
    'rx.Style.Spacing.Top= 1 '和上面的对象(表格)距离3毫米
    'rx.Style.Borders.Bottom = New prt.LineDef(0.5, Color.DeepSkyBlue) '设置页眉底边框
    'doc.Body.Children.Add(rx)
    
    rt = New prt.RenderTable() '定义一个表格对象
    rt.CellStyle.Spacing.All = 1 '单元格内容缩进1毫米
    rt.Style.TextAlignVert = prt.AlignVertEnum.Center '内容垂直居中
    rt.Style.FontBold = True '字体加粗
    rt.Cells(0,0).Text= "部门:"& CurRow("核算主体")&"/"& CurRow("收款人")
    'rt.Cells(1,2).Text= "              附件张数  :"& CurRow("附件张数")
    rt.Cells(1,0).Text= "收款人:"& CurRow("收款人") & "    " & "开户行:" & CurRow("开户行")& "    " & "账号:" & CurRow("收款账号")
    doc.Body.Children.Add(rt) '将表格对象加入到报表中
    
    '''
    'Relations.Add("关联1",DataTables("凭证往来账户").DataCols("收款人"),DataTables("凭证明细").DataCols("收款人"))  '动态创建关联
    
    DataTables("凭证明细").sqlselect("收款人='" & CurRow("收款人") & "'")
    '
    rt = New prt.RenderTable
    rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center
    rt.Style.TextAlignVert = prt.AlignVertEnum.Center
    rt.Style.Borders.Bottom = New prt.LineDef(0.3,Color.DeepSkyBlue)
    rt.Style.GridLines.All = New prt.Linedef(Color.DeepSkyBlue) '设置网格线
    
    rt.Cols(2).Width = 60 '设置列宽
    
    ''
    rt.Cells(0,0).Text = "申请日期"
    rt.Cells(0,1).Text = "凭证类别"
    rt.Cells(0,2).Text = "摘要"
    rt.Cells(0,3).Text = "收入"
    rt.Cells(0,4).Text = "支出"
    rt.Cells(0,5).Text = "备注"
    rt.rows(0).Style.Borders.Top = New prt.LineDef(1,Color.DeepSkyBlue)
    rt.rows(0).Style.Borders.Bottom = New prt.LineDef(0.5,Color.DeepSkyBlue)
    
    'Tables("凭证往来账户.凭证明细").sort = "申请日期"
    'Tables("凭证往来账户.凭证明细").sort = "凭证类别"
    'With Tables("凭证往来账户.凭证明细")
    Tables("凭证明细").sort = "申请日期"
    Tables("凭证明细").sort = "凭证类别"
    With Tables("凭证明细")
        
        
        For r As Integer = 0 To .Rows.Count - 1 '遍历关联表每一行
            rt.Cells(r+1,0).Text = .rows(r)("申请日期")
            rt.Cells(r+1,1).Text = .rows(r)("凭证类别")
            rt.Cells(r+1,2).Text = .rows(r)("摘要")
            rt.Cells(r+1,3).Text = .rows(r)("收入")
            rt.Cells(r+1,4).Text = .rows(r)("支出")
            rt.Cells(r+1,5).Text = .rows(r)("备注")
        Next
    End With
    rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中
    rt.Style.TextAlignVert = prt.AlignVertEnum.Center '垂直居中
    doc.Body.Children.Add(rt)
    Relations.Delete("关联1")
    
    rt = New prt.RenderTable() '定义一个表格对象
    rt.CellStyle.Spacing.All = 1 '单元格内容缩进1毫米
    rt.Style.TextAlignVert = prt.AlignVertEnum.Center '内容垂直居中
    rt.Style.FontBold = True '字体加粗
    rt.Cells(0,0).Text = "流水金额 ¥: " & Tables("凭证明细").Compute("Sum(金额)") & "元"
    rt.Cells(1,0).Text= "付款申请¥: "& CurRow("付款金额")& "     大写  :"&   CUNumber(CurRow("付款金额") )
    rt.Cells(2,0).Text= "借支金额¥:"& CurRow("借支金额") &"     大写  :"&   CUNumber(CurRow("借支金额") )
    rt.Cells(3,0).Text= "报销金额¥: "& CurRow("报销金额") &"     大写  :"&   CUNumber(CurRow("报销金额") )
    rt.Cells(4,0).Text= "结余金额¥: "& CurRow("结余金额") & "     大写  :"&   CUNumber(CurRow("结余金额") )
    'rt.Cells(5,0).Text= ""
    'rt.Cells(5,1).Text= "核对签字:"
    doc.Body.Children.Add(rt) '将表格对象加入到报表中
    
    Doc.Preview() '预览报表
End If

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:39143 积分:199043 威望:0 精华:8 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/12/4 17:18:00 [只看该作者]

http://www.foxtable.com/webhelp/topics/2900.htm

 回到顶部
帅哥哟,离线,有人找我吗?
yifan3429
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1798 积分:16699 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2019/12/4 19:26:00 [只看该作者]

DataTables("凭证明细").sqlselect("收款人='" & CurRow("收款人") & "'")
用了SQL呀  还是不明白怎么才可以达成,需要老师明示
[此贴子已经被作者于2019/12/4 19:26:05编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:39143 积分:199043 威望:0 精华:8 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/12/5 8:43:00 [只看该作者]

请认真看帮助,怎么获取sqlselect的结果

 回到顶部