Foxtable(狐表)用户栏目专家坐堂 → excel报表直接引用数据


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

主题:excel报表直接引用数据

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5362 威望:0 精华:0 注册:2012/8/25 20:50:00
excel报表直接引用数据  发帖心情 Post By:2019/10/16 13:56:00 [只看该作者]

结构如下(订单表和客户表没有关联):

<订单,1>

<"地址:" & [客户1,地址]>

<订单明细,-1>

<订单,1>


之前用的是客户表1,sql load 数据 DataTables("客户1").AppendLoad(filter) ,正常打印。

现在换了客户表2,sql load 数据 DataTables("客户2").AppendLoad(filter) ,<"地址:" & [客户2,地址]>,不正常打印,地址不能显示。 是什么原因呢?


检查了 地址列名一样
[此贴子已经被作者于2019/10/16 13:59:41编辑过]

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


加好友 发短信
等级:超级版主 帖子:106204 积分:540143 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/16 13:59:00 [只看该作者]

<"地址:" & [@客户,地址]>


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


加好友 发短信
等级:三尾狐 帖子:689 积分:5362 威望:0 精华:0 注册:2012/8/25 20:50:00
  发帖心情 Post By:2019/10/16 14:29:00 [只看该作者]

不知道为什么之前用这个格式一直正常打印 <"地址:" & [客户1,地址]>。 刚刚改为<"地址:" & [@客户1,地址]>,可以显示地址。但是又出现了一个新的问题,选择不同的订单时,打印出来还是固定某个客户地址,除非选择不同的客户行,譬如选择订单1(客户a)和订单2(客户b),显示都是客户a的地址。之前是可以选择不同的订单,然后显示对应订单的客户地址。

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


加好友 发短信
等级:超级版主 帖子:106204 积分:540143 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/16 14:31:00 [只看该作者]

打印前使用代码定位一下需要打印的客户,选中这个客户所在的行即可

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5362 威望:0 精华:0 注册:2012/8/25 20:50:00
  发帖心情 Post By:2019/10/16 14:40:00 [只看该作者]

代码怎么写呢,之前就在currentchanged里面写了 ,选择订单可以正常定位客户。现在怎么不行了

If e.Table.Current IsNot Nothing Then
    Dim Filter As String = "客户id = '" & e.Table.Current("客户id") & "'"
   If DataTables("客户1").Find(filter) Is Nothing Then
        DataTables("客户1").AppendLoad(filter)
   End If
End If




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


加好友 发短信
等级:超级版主 帖子:106204 积分:540143 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/16 14:45:00 [只看该作者]

定位用这种:http://www.foxtable.com/webhelp/topics/0553.htm


If e.Table.Current IsNot Nothing Then
    Dim Filter As String = "客户id = '" & e.Table.Current("客户id") & "'"
   If DataTables("客户1").Find(filter) Is Nothing Then
        DataTables("客户1").AppendLoad(filter)
   End If
Dim r As Integer
    r
 = 
Tables("客户1").FindRow(Filter'从 第一行开始查找
    If r >= 0 Then '如果找到的话
        
Tables("客户1").Position = '定位到找到的行。
    End If
End If

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5362 威望:0 精华:0 注册:2012/8/25 20:50:00
  发帖心情 Post By:2019/12/30 13:28:00 [只看该作者]

多选行excel打印出现固定一个地址问题,<"地址:" & [@客户1,地址]>,选择多行excel打印时,地址还是一个地址,不会变化,这个怎么弄呢


Dim Book As New XLS.Book(ProjectPath & "Attachments\出库单.xls")
Dim 
fl As String = ProjectPath & "Reports\出库单.xls"
Book.Build() 
'生成细节区
Book.Save(fl) 
'保存工作簿
Dim 
Proc As New Process '打开工作簿
Proc.File = fl
Proc.Start()



[此贴子已经被作者于2019/12/30 13:27:52编辑过]

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


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

直接引用本来就只能引用一行的。如果每一行数据对应不的地址
方法1.使用报表事件处理:http://www.foxtable.com/webhelp/topics/1955.htm
2、把客户和主表设置关联

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5362 威望:0 精华:0 注册:2012/8/25 20:50:00
  发帖心情 Post By:2019/12/30 15:40:00 [只看该作者]

设置关联还是不行,干脆只能在主表引用客户表的地址信息,虽然这样数据库会重复数据,不过也暂时能解决问题了。

另外,请教蓝老师一个问题,就是excel批量打印,选择多行时,关联明细表没加载怎么打印关联表?譬如订单和订单明细,初始不加载数据,点击订单行,订单明细才加载。
If DataTables("订单明细").Find(filter) Is Nothing Then
        DataTables("订单明细").AppendLoad(filter)
    End If

如果选择多行时,没有点击的订单行,打印出来的订单明细表是空内容的。这个该怎么弄呢?



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


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

1、如果不想重复保存数据可以使用表达式列。

2、直接从后台生成报表:http://www.foxtable.com/webhelp/topics/3233.htm

 回到顶部