Foxtable(狐表)用户栏目专家坐堂 → [求助]无法将类型为“System.String”的对象强制转换为类型“Foxtable.Table”


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

主题:[求助]无法将类型为“System.String”的对象强制转换为类型“Foxtable.Table”

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


加好友 发短信
等级:婴狐 帖子:33 积分:379 威望:0 精华:0 注册:2018/8/28 16:39:00
[求助]无法将类型为“System.String”的对象强制转换为类型“Foxtable.Table”  发帖心情 Post By:2018/9/18 9:39:00 [只看该作者]

运行错误:
.NET Framework 版本:2.0.50727.8669
Foxtable 版本:2018.7.28.1
错误所在事件:自定义函数savetable
详细错误信息:
调用的目标发生了异常。
无法将类型为“System.String”的对象强制转换为类型“Foxtable.Table”。

代码如下:
Dim t As Table = args(0)
Dim i1,i2,i3 As Integer
'根据DataTable获取一个System.Data.DataTable类型变量
Dim dt As System.Data.DataTable = t.DataTable.BaseTable
'获取新增行数
Dim t1 As System.Data.DataTable = dt.GetChanges(System.Data.DataRowState.Added )   '新增行
If t1 IsNot Nothing Then
    i1 = CStr(t1.Rows.count)
End If
'获取修改行数
Dim t2 As System.Data.DataTable = dt.GetChanges(System.Data.DataRowState.Modified )   '修改行
If t2 IsNot Nothing Then
    i2 = CStr(t2.Rows.count)
End If
'获取已删除行数
Dim t3 As System.Data.DataTable = dt.GetChanges(System.Data.DataRowState.Deleted )   '已删除行
If t3 IsNot Nothing Then
    i3 = CStr(t3.Rows.count)
End If

If i1+i2+i3 >0 Then
    MessageBox.Show("数据变动了  " & i1+i2+i3 & "   行,已经保存...","提示")
    T.save
Else
    MessageBox.Show("你没有修改表数据或修改后已保存,无须再保存...","提示")
End If

==================================================================
请大佬们指点一下,谢谢QAQ

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


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

Dim t As Table = args(0)

 

改成

 

Dim t As Table = Tables(args(0))


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


加好友 发短信
等级:婴狐 帖子:33 积分:379 威望:0 精华:0 注册:2018/8/28 16:39:00
  发帖心情 Post By:2018/9/18 14:39:00 [只看该作者]

问题已经完美解决,谢谢老师图片点击可在新窗口打开查看

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


加好友 发短信
等级:小狐 帖子:316 积分:2899 威望:0 精华:0 注册:2009/7/25 18:29:00
  发帖心情 Post By:2018/12/9 18:07:00 [只看该作者]

我也遇到同一问题:

我在项目一中的“Combobox1”中运行如下代码顺利,但在另一个项目中确总是不行,总提示下面的内容,请大师帮我修改一下,谢谢!!

代码:

Dim dr As DataRow = e.Sender.SelectedItem

If dr IsNot Nothing Then
   Tables("员工资料").Position = Tables("员工资料").FindRow(dr)
End If

 

无法将类型为“System.String”的对象强制转换为类型“Foxtable.DataRow”。

 

请大师帮忙修改,谢谢大师了。!!


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


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

代码改成这样

 

Dim str As String = e.Sender.SelectedValue

Dim i As Integer = Tables("员工资料").FindRow("第一列 = '" & str & "'")

If i >= 0 Then
   Tables("员工资料").Position = i

Else

    msgbox("没找到")
End If


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


加好友 发短信
等级:小狐 帖子:316 积分:2899 威望:0 精华:0 注册:2009/7/25 18:29:00
  发帖心情 Post By:2018/12/10 0:10:00 [只看该作者]

目标实现,太谢谢“有点甜”大师了!!

 回到顶部