以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]专业报表打印员工相片的代码问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=139512)

--  作者:hanzhang98
--  发布时间:2019/8/14 15:32:00
--  [求助]专业报表打印员工相片的代码问题
老师好。专业报表打印员工相片的代码不对,请老师帮助修正。谢谢。

Dim Doc As New PrintDoc
Dim rt As New prt.RenderTable()
Dim btwb As New prt.RenderText
Dim CurRow As Row = Tables("员工").Current 
Dim fd As String = DataTables("员工").DataCols("照片").DefaultFolder 
Dim xm As String = Tables("员工").Current("姓名") 
Dim rm As New prt.RenderImage() \'定义一个图片对象
If fd = "" Then fd = ProjectPath & "RemoteFiles\\Attachments" & "\\" & xm & ".jpg" 
rm.Image = GetImage(fd) \'要打印的图片的路径和文件名
rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center 
rm.Style.ImageAlign.AlignVert = prt.ImageAlignVertEnum.Center 
rm.Style.ImageAlign.StretchHorz = False 
rm.Style.ImageAlign.StretchVert = False 
......

rt.Cells(0,11).Image = GetImage(rm)
rt.Cells(0,11).RenderObject = rm \'将单元格内容设置为图片对象rm
Doc.Body.Children.Add(rt) \'将表格对象加入到报表中

Doc.Preview() \'预览报表


--  作者:有点蓝
--  发布时间:2019/8/14 15:35:00
--  
去掉这句
rt.Cells(0,11).Image = GetImage(rm)
--  作者:hanzhang98
--  发布时间:2019/8/14 15:46:00
--  
老师好。去掉[rt.Cells(0,11).Image = GetImage(rm)] 这句后,照片列为空。
[此贴子已经被作者于2019/8/14 16:36:05编辑过]

--  作者:有点蓝
--  发布时间:2019/8/14 16:01:00
--  
上传实例看看
--  作者:hanzhang98
--  发布时间:2019/8/14 16:36:00
--  
老师好。上一个问题已解决,是文件路径不对。

又有一个问题,下面黄底色代码中的表, 如果改为窗口表 就运行出错 “不存在名称为 “窗口1_Table1” 的 DataTable!” 。应如何修改,请老师指导。谢谢。

Dim CurRow As Row = Tables("窗口1_Table1").Current 
Dim fd As String = DataTables("窗口1_Table1").DataCols("照片").DefaultFolder     ‘这句运行出错
Dim xm As String = Tables("窗口1_Table1").Current("姓名")

--  作者:有点蓝
--  发布时间:2019/8/14 17:06:00
--  
如果不是副本,直接使用主表名称即可
--  作者:hanzhang98
--  发布时间:2019/8/14 17:17:00
--  
老师好。
Dim CurRow As Row = Tables("窗口1_Table1").Current 
Dim fd As String = DataTables("员工").DataCols("照片").DefaultFolder     这样改行不行
Dim xm As String = Tables("窗口1_Table1").Current("姓名")


--  作者:有点蓝
--  发布时间:2019/8/14 17:17:00
--  
行不行测试一下就知道呀
--  作者:hanzhang98
--  发布时间:2019/8/14 17:52:00
--  
老师好。再请教老师,能不能根据员工表、当前行的员工姓名,直接用代码获取照片列已下载到本地的全路径文件名,不要用手工指定。因为[If fd = "" Then fd = ProjectPath & "RemoteFiles\\Attachments\\文件夹1\\文件夹2" & "\\" & xm & ".jpg"] 其中的“文件夹1\\文件夹2” 要根据员工所在部门的不同而改变。如果用手工指定,就的经常改代码,特别是多客户端时尤为不方便。  谢谢。

补充,也就是能不能用代码直接获取Foxtable读取已下载到本地的照片的全路径及文件名。谢谢。


[此贴子已经被作者于2019/8/14 18:04:38编辑过]

--  作者:狐狸爸爸
--  发布时间:2019/8/15 8:35:00
--  
既然姓名作为文件名可以用变量xm来动态合成,部门一样可以啊:

dim bm as string = tables("xxx").Current("部门")
If fd = "" Then fd = ProjectPath & "RemoteFiles\\Attachments\\" & bm &  "\\" & xm & ".jpg"