Foxtable(狐表)用户栏目专家坐堂 → [求助]动态插入图片代码错误


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

主题:[求助]动态插入图片代码错误

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


加好友 发短信
等级:幼狐 帖子:51 积分:577 威望:0 精华:0 注册:2018/4/4 8:37:00
[求助]动态插入图片代码错误  发帖心情 Post By:2018/5/8 14:57:00 [只看该作者]

目标是从指定文件夹下打开当前行、产品编码列对应的文件夹,
选中图片后保存“照片”列中,已经设置了“照片”列的动态保存目录,在attachment\photo文件夹下
做了一个按钮,现代码如下:
If CurrentTable.Current("产品编码")  IsNot Nothing Then
    Dim dlg As New OpenFileDialog
    dlg.MultiSelect = True
    dlg.InitialDirectory ="E:\图片库\" & CurrentTable.Current("产品编码")
    If dlg.ShowDialog = DialogResult.OK Then
        Dim dr As DataRow = Tables("数据库").Current.DataRow
        Dim fl As String = dlg.FileName
        dr.SQLInsertFile("照片",fl)
    End If
Else
    MessageBox.Show(CurrentTable.Current("产品编码")& "照片未找到!", "提示")
End If

点击按钮后发现
如果产品编码有对应的文件夹则能打开E:\图片库”下对应的产品文件夹
如果产品编码为空,或者在“E:\图片库”下没有对应的产品编码文件夹,依然可以打开其他产品编码对应的文件夹,没有提示照片未找到
而且图片插入不成功。

求大神指点


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


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

OpenFileDialog不会有任何提示的,如果不存在就打开默认的目录

如果要判断文件夹是否存在,使用:http://www.foxtable.com/webhelp/scr/0334.htm

判断单元格是否为空,尽量这样判断
If CurrentTable.Current.isnull("产品编码") = false Then

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


加好友 发短信
等级:幼狐 帖子:51 积分:577 威望:0 精华:0 注册:2018/4/4 8:37:00
  发帖心情 Post By:2018/5/8 17:22:00 [只看该作者]

Dim dlg As New OpenFileDialog
dlg.MultiSelect = True
dlg.InitialDirectory ="E:\图片库\" & CurrentTable.Current("产品编码")
If FileSys.DirectoryExists(dlg.InitialDirectory) AndAlso  dlg.ShowDialog = DialogResult.OK Then
    Dim dr As DataRow = Tables("数据库").Current.DataRow
    Dim fs As String = ProjectPath & "attachment\photo\" & CurrentTable.Current("产品编码")
    Dim fn As String = dlg.FileName
    If FileSys.DirectoryExists(fs) Then
        For Each f As String In dlg.FileNames
            FileSys.CopyFile(f, fs & FileSys.GetName(f), True)
            dr.SQLInsertFile("照片",fs)
        Next
    Else
        FileSys.CreateDirectory(fs)
        For Each f As String In dlg.FileNames
            FileSys.CopyFile(f, fs & FileSys.GetName(f), True)
            dr.SQLInsertFile("照片",fs)
        Next
    End If
End If


还是不行,越看越不懂了

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/8 18:59:00 [只看该作者]

执行下面代码,能否拷贝文件到photo文件夹?

 

你图片列,是二进制列,还是字符列?

 

Dim dlg As New OpenFileDialog
dlg.MultiSelect = True
dlg.InitialDirectory ="E:\图片库\" & CurrentTable.Current("产品编码")
If dlg.ShowDialog = DialogResult.OK Then
    Dim dr As DataRow = Tables("数据库").Current.DataRow
    Dim fs As String = ProjectPath & "attachment\photo\" & CurrentTable.Current("产品编码")
    Dim fn As String = dlg.FileName
    If FileSys.DirectoryExists(fs) Then
        For Each f As String In dlg.FileNames
            FileSys.CopyFile(f, fs & FileSys.GetName(f), True)
            'dr.SQLInsertFile("照片",fs)
        Next
    Else
        FileSys.CreateDirectory(fs)
        For Each f As String In dlg.FileNames
            FileSys.CopyFile(f, fs & FileSys.GetName(f), True)
            'dr.SQLInsertFile("照片",fs)
        Next
    End If
End If


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


加好友 发短信
等级:幼狐 帖子:51 积分:577 威望:0 精华:0 注册:2018/4/4 8:37:00
  发帖心情 Post By:2018/5/9 9:00:00 [只看该作者]

是字符列,文件并没有复制到photo文件夹下,
提示“未将对象引用设置到对象的实例”

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/9 9:06:00 [只看该作者]

这样试试

 

Dim dlg As New OpenFileDialog
dlg.MultiSelect = True
Dim t As Table = Tables("数据库")
If t.current IsNot Nothing Then
    dlg.InitialDirectory ="E:\图片库\" & t.Current("产品编码")
    If dlg.ShowDialog = DialogResult.OK Then
        Dim dr As DataRow = t.Current.DataRow
        Dim fs As String = ProjectPath & "attachment\photo\" & t.Current("产品编码")
        Dim fn As String = dlg.FileName
        If FileSys.DirectoryExists(fs) Then
            For Each f As String In dlg.FileNames
                FileSys.CopyFile(f, fs & FileSys.GetName(f), True)
                'dr.SQLInsertFile("照片",fs)
            Next
        Else
            FileSys.CreateDirectory(fs)
            For Each f As String In dlg.FileNames
                FileSys.CopyFile(f, fs & FileSys.GetName(f), True)
                'dr.SQLInsertFile("照片",fs)
            Next
        End If
    End If
else
    msgbox("表格数据为空")
end if


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


加好友 发短信
等级:幼狐 帖子:51 积分:577 威望:0 精华:0 注册:2018/4/4 8:37:00
  发帖心情 Post By:2018/5/9 11:16:00 [只看该作者]

刚刚少打了一个& "\" &
这样
FileSys.CopyFile(f, fs & "\" & FileSys.GetName(f), True)
可以把照片顺利复制到指定文件夹,
但是因为“照片”列不是二进制列所以照片插入不成功。
除了SQLInsertFile 还有其他方法向照片列插入照片吗?



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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/9 11:20:00 [只看该作者]

dr.SQLInsertFile("照片",fs)

 

改成

 

dr.lines("照片") = dr.lines("照片").Add("photo\" & t.Current("产品编码") & "\" & FileSys.GetName(f))

 


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


加好友 发短信
等级:幼狐 帖子:51 积分:577 威望:0 精华:0 注册:2018/4/4 8:37:00
  发帖心情 Post By:2018/5/9 13:58:00 [只看该作者]

提示错误,表达式不产生任何值?
???

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/9 14:34:00 [只看该作者]

                Dim ls = dr.lines("照片")
                ls.Add("photo\" & t.Current("产品编码") & "\" & FileSys.GetName(f))
                dr.lines("照片") = ls

 回到顶部