以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]插入图片显示不正常  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=116342)

--  作者:djm2003
--  发布时间:2018/3/23 9:13:00
--  [求助]插入图片显示不正常
在安全检查明细表BeforAttachFile事件中,分别设置了两列插入照片和报告,并存放在动态文件夹中,如下图式:
DataTables("安全检查明细表").DataCols("照片").DefaultFolder = ProjectPath & "检查照片\\" & e.DataRow("房屋地址") & "\\"

If e.DataCol.Name = "照片" Then    
    Dim dr As DataRow = e.DataRow    
    If dr.IsNull("检查人") Or dr.IsNull("检查日期")  Then        
        MessageBox.Show("检查人和检查日期不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)        
        e.Cancel = True        
    Else        
        e.SubFolder = dr("检查日期").Date & dr("检查人") 
    End If
    
ElseIf e.DataCol.Name = "鉴定情况_报告" Then
    Dim dr As DataRow = e.DataRow    
    If dr.IsNull("鉴定情况_鉴定单位") Or dr.IsNull("鉴定情况_鉴定统一编号")  Then        
        MessageBox.Show("鉴定单位和鉴定统一编号不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)        
        e.Cancel = True        
    Else        
    Dim fl As String = e.FileName
    Dim idx As Integer = fl.LastIndexof(".") 
    Dim ext As String = fl.SubString(idx)
    e.FileName = dr("鉴定情况_鉴定统一编号") & dr("鉴定情况_鉴定单位") & ext
    End If
DataTables("安全检查明细表").DataCols("鉴定情况_报告").DefaultFolder = ProjectPath & "检查照片\\" & e.DataRow("房屋地址") & "\\鉴定报告\\"
          
End If

出现以下问题:
1、插入第一张图片时,未能正确显示,发现是未建立动态文件夹,当插入第二张图片时可正确显示。
2、新增至30行左右,发现照片管理器不能显示图片,提示文件不存在,但动态文件夹内照片存在。
请问怎样解决?

--  作者:有点甜
--  发布时间:2018/3/23 9:22:00
--  
AfterOpenProject事件,写代码

 

DataTables("安全检查明细表").DataCols("照片").DefaultFolder = ProjectPath & "检查照片\\"
 
修改你原来的代码
If e.DataCol.Name = "照片" Then    
    Dim dr As DataRow = e.DataRow    
    If dr.IsNull("检查人") Or dr.IsNull("检查日期")  Then        
        MessageBox.Show("检查人和检查日期不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)        
        e.Cancel = True        
    Else        
        e.SubFolder = e.DataRow("房屋地址") & "\\" & dr("检查日期").Date & dr("检查人") 
    End If
End If

--  作者:有点甜
--  发布时间:2018/3/23 9:23:00
--  

不然,你就要在CurrentChanged事件,动态指定每一行的DefaultFolder,如

 

DataTables("安全检查明细表").DataCols("照片").DefaultFolder = ProjectPath & "检查照片\\" & e.Table.Current("房屋地址") & "\\"


--  作者:djm2003
--  发布时间:2018/3/23 10:21:00
--  
谢谢老师,解决了这个问题。但出现了新的问题:
检查明细表是子表,基本情况表是父表,当在父表下新增子表一行时,出现“未将对象引用设置到对象实例”,怎样解决。

--  作者:djm2003
--  发布时间:2018/3/23 11:17:00
--  回复:(有点甜)不然,你就要在CurrentChanged事件,...
谢谢老师,在CurrentChanged中输入解决了这个问题。但出现了新的问题:
检查明细表是子表,基本情况表是父表,当在父表下新增或删除子表一行时,出现“未将对象引用设置到对象实例”,怎样解决。


--  作者:有点甜
--  发布时间:2018/3/23 11:22:00
--  

代码改成

 

If e.Table.Current is Nothing Then Return

 

DataTables("安全检查明细表").DataCols("照片").DefaultFolder = ProjectPath & "检查照片\\" & e.Table.Current("房屋地址") & "\\"

[此贴子已经被作者于2018/3/23 11:22:15编辑过]