Foxtable(狐表)用户栏目专家坐堂 → 在后台加载之前判断照片是否存在


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

主题:在后台加载之前判断照片是否存在

美女呀,离线,留言给我吧!
susu312
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
在后台加载之前判断照片是否存在  发帖心情 Post By:2018/9/9 10:58:00 [只看该作者]

If Forms("查看窗口").Opened Then '如果窗口已经打开
    Dim pbx As WinForm.PictureBox = Forms("查看窗口").Controls("PictureBox1")
    If Tables("person").Current Is Nothing Then
        pbx.Image = Nothing
    Else
         pbx.Image = Tables("person").Current.DataRow.SQlLoadImage("photo") '从后台提取照片并显示
    End If
End If

 

老师,如何从后台加载之前判断照片是否存在,或者不存在就不加载好了,但是现在这个,后台没照片,就会弹出错误,参数无效


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


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

我测试了一下,不会报错,肯定是你插入的图片的值是错误的才会导致的出错。

 回到顶部
美女呀,离线,留言给我吧!
susu312
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/9/9 15:58:00 [只看该作者]

以下是引用有点甜在2018/9/9 15:56:00的发言:
我测试了一下,不会报错,肯定是你插入的图片的值是错误的才会导致的出错。

老师,后台有照片它就不会报错,无照片的时候 ,打开窗口后就会报参数无效的错?我该如何排查呀?

 

更改窗口的afterload事件中有如下代码:

''照片设置
Tables("person").RaiseCurrentChanged()

 

我记得直接基于datarow给二进制列插入图片,无论有么有照片 ,都不会报参数无效这个错误,

但是,现在我新增是通过sql后台插入二进制照片的,

我新增一个成员没有照片 ,然后点击更改窗口,就弹出参数无效,然后打开更改窗口?

 

我这时候是不是不能用这段代码了?

 

 

难道是我应该在afterload里面用这个代码?

Dim cmd As SQLCommand = new SQLCommand()
cmd.ConnectionName = "SqlServerDB"
cmd.CommandText = "select 照片列 from 员工表 where 姓名 = '张三'"

Dim imageByte() As Byte = cmd.ExecuteScalar()    '查询数据,并存入字节数组

Dim ms As New IO.MemoryStream(imageByte)       '将字节数组转换为二进制流
Dim image As Image = Image.FromStream(ms)      '将二进制流转换为图片
e.Form.Controls("PictureBox1").Image = image      '显示图片

 

 

 

[此贴子已经被作者于2018/9/9 16:08:44编辑过]

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


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

注释掉这段代码测试

 

Dim cmd As SQLCommand = new SQLCommand()
cmd.ConnectionName = "SqlServerDB"
cmd.CommandText = "select 照片列 from 员工表 where 姓名 = '张三'"

Dim imageByte() As Byte = cmd.ExecuteScalar()    '查询数据,并存入字节数组

Dim ms As New IO.MemoryStream(imageByte)       '将字节数组转换为二进制流
Dim image As Image = Image.FromStream(ms)      '将二进制流转换为图片
e.Form.Controls("PictureBox1").Image = image      '显示图片

 

 


 回到顶部
美女呀,离线,留言给我吧!
susu312
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/9/9 16:38:00 [只看该作者]

以下是引用有点甜在2018/9/9 16:28:00的发言:

注释掉这段代码测试

 

Dim cmd As SQLCommand = new SQLCommand()
cmd.ConnectionName = "SqlServerDB"
cmd.CommandText = "select 照片列 from 员工表 where 姓名 = '张三'"

Dim imageByte() As Byte = cmd.ExecuteScalar()    '查询数据,并存入字节数组

Dim ms As New IO.MemoryStream(imageByte)       '将字节数组转换为二进制流
Dim image As Image = Image.FromStream(ms)      '将二进制流转换为图片
e.Form.Controls("PictureBox1").Image = image      '显示图片

 

 

我本来是在表的currentChanged事件中有如下代码:

 

If Forms("更改窗口").Opened Then '如果窗口已经打开
    Dim pbx As WinForm.PictureBox = Forms("更改窗口").Controls("PictureBox1")
    If Tables("person").Current Is Nothing Then
        pbx.Image = Nothing
    Else
        pbx.Image = Tables("person").Current.DataRow.SQlLoadImage("photo") '从后台提取照片并显示
    End If
End If

If Forms("查看窗口").Opened Then '如果窗口已经打开
    Dim pbx As WinForm.PictureBox = Forms("查看窗口").Controls("PictureBox1")
    If Tables("person").Current Is Nothing Then
        pbx.Image = Nothing
    Else
         pbx.Image = Tables("person").Current.DataRow.SQlLoadImage("photo") '从后台提取照片并显示
    End If
End If

 

在更改和查看窗口有如下代码:

Tables("person").RaiseCurrentChanged()

 

然后,在新增窗口增加人员无照片,打开更改和查看窗口前都会报错:参数无效

 

本来就没有下面这段代码

Dim cmd As SQLCommand = new SQLCommand()
cmd.ConnectionName = "SqlServerDB"
cmd.CommandText = "select 照片列 from 员工表 where 姓名 = '张三'"

Dim imageByte() As Byte = cmd.ExecuteScalar()    '查询数据,并存入字节数组

Dim ms As New IO.MemoryStream(imageByte)       '将字节数组转换为二进制流
Dim image As Image = Image.FromStream(ms)      '将二进制流转换为图片
e.Form.Controls("PictureBox1").Image = image      '显示图片

 



此主题相关图片如下:11.png
按此在新窗口浏览图片
[此贴子已经被作者于2018/9/9 16:40:46编辑过]

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


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

1、上传全部数据后,重新添加数据测试;

 

2、做一个access数据源的实例发上来测试。


 回到顶部
美女呀,离线,留言给我吧!
susu312
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/9/9 17:04:00 [只看该作者]

以下是引用有点甜在2018/9/9 16:55:00的发言:

1、上传全部数据后,重新添加数据测试;

 

2、做一个access数据源的实例发上来测试。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:新建文本文档 (2).txt

 

老师,您一看里面的代码就懂了, 我现在有个问题就是,入党时间没空如何,通过参数化的方式写入数据库?

 

1、我是这么写的,然后就再没问题了
If partyTime=Nothing Then
cmd.Parameters.Add("@partyTime",dbnull.value)
Else
cmd.Parameters.Add("@partyTime",partyTime)
End If

Dim txt As Date = e.Sender.Text
If txt = "" Then

 

2、判断date类型为空,到底应该用 = nothing 还是= "" ,有时候nothing不行

 

[此贴子已经被作者于2018/9/9 17:36:38编辑过]

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


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

判断是否为空,这样写,如

 

If partyTime=Nothing Then

 

如果是对象,这样写

 

If partyTime is Nothing Then


 回到顶部