Foxtable(狐表)用户栏目专家坐堂 → 请教:写入二进制列出错


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

主题:请教:写入二进制列出错

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


加好友 发短信
等级:六尾狐 帖子:1421 积分:11294 威望:0 精华:0 注册:2008/9/1 22:20:00
请教:写入二进制列出错  发帖心情 Post By:2015/9/23 8:54:00 [只看该作者]

这个是什么意思?


图片点击可在新窗口打开查看此主题相关图片如下:剪辑_8.jpg
图片点击可在新窗口打开查看


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


加好友 发短信
等级:版主 帖子:1693 积分:12117 威望:0 精华:7 注册:2013/7/11 10:52:00
  发帖心情 Post By:2015/9/23 8:57:00 [只看该作者]

告诉你函数必须有个返回值

 

 

不能直接用Return

 

后面用根据情况,带一个返回值


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


加好友 发短信
等级:六尾狐 帖子:1421 积分:11294 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2015/9/23 9:02:00 [只看该作者]

谢谢回复,这是帮助里的例子,一个字没动,return后面该加个什么返回值?


If Tables("员工").Current Is Nothing Then

  Return

End If


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/23 9:05:00 [只看该作者]

If Tables("员工").Current Is Nothing Then

  Return nothing

End If


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


加好友 发短信
等级:六尾狐 帖子:1421 积分:11294 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2015/9/23 9:07:00 [只看该作者]

这样我反倒迷糊了,原来好像直接用return就可以的,为何这里非得加个nothing?


If Tables("员工").Current Is Nothing Then

  Return nothing

End If


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


加好友 发短信
等级:六尾狐 帖子:1421 积分:11294 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2015/9/23 9:13:00 [只看该作者]

还是有问题:
写入二进制列,提示:未将对象引用设置到对象的实例。
(二进制列已经从数据库里设置好,表也已经引用进来)。

If Tables("文件模板").Current Is Nothing Then
    Return Nothing
End If
Dim dr As DataRow = Tables("文件模板").Current.DataRow
If dr.RowState = DataRowState.Added Then '如果是新增行,必须先保存才能插入文件
    dr.Save()
End If
Dim dlg As New OpenFileDialog
dlg.Filter = "Excel文件|*.xls"
If dlg.ShowDialog =DialogResult.OK Then
    dr.SQLInsertFile("文件",dlg.FileName) '插入文件
End If

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/23 9:46:00 [只看该作者]

1、去看一下BeforeSaveDataRow事件,把代码删除。

 

2、代码不会有错。


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


加好友 发短信
等级:六尾狐 帖子:1421 积分:11294 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2015/9/23 10:19:00 [只看该作者]

去掉了所有的表事件,写入还是出错,二进制设置为binary(50)有问题吗?

图片点击可在新窗口打开查看此主题相关图片如下:剪辑_9.jpg
图片点击可在新窗口打开查看


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/23 10:21:00 [只看该作者]

认认真真看完

 

由于内部表没有办法增加二进制列,所以只有使用外部数据源时,才能使用二进制列管理文件。
虽然Access也有二进制列,但是由于Access单个数据库文件不能超过2G,所以使用二进制列时,如果文件比较大,建议大家采用SQL Server。
你并没有办法直接在Foxtable中给外部表增加二进制列,所以你只能在原数据库中事先增加好二进制列,Access对应的列类型为"OLE对象",SQL Server对应的列类型为"Image"。


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


加好友 发短信
等级:六尾狐 帖子:1421 积分:11294 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2015/9/23 10:23:00 [只看该作者]

我确实看帮助了,但看岔了,谢谢


关于二进制字段

很多数据库软件都有二进制类型的列(字段),例如Access的Ole类型,SQl Server的binary和image类型,Oracle的blob类型。
出于效率和易用双方面的考虑,Foxtable不支持二进制字段,而是采用附件的形式管理图片以及各种文档,既支持本地的储存,也支持远程FTP。
所以大家在增加外部表的时候,务必要排除二进制类型的列。


 回到顶部