Foxtable(狐表)用户栏目专家坐堂 → 委托导致测试表大红叉


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

主题:委托导致测试表大红叉

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


加好友 发短信
等级:小狐 帖子:341 积分:2864 威望:0 精华:0 注册:2023/6/7 16:07:00
委托导致测试表大红叉  发帖心情 Post By:2023/12/8 10:30:00 [只看该作者]

Dim t0 As Threading.Thread

t0=New Threading.Thread(Sub() Functions.AsyncExecute("测试"))

Dim btnAuto As WinForm.Button = e.Form.Controls("btnAuto")

Dim bt As WinForm.Button = e.Form.Controls("btnManualClear")
If  bt.text = "手动清除" Then
    btnAuto.Enabled=False
    gbclear=True
    bt.text  = "停止"
    t0.Start()
Else
    gbclear=False
    bt.text  = "手动清除"
    t0.Abort
End If

btnAuto.Enabled=True





Functions.AsyncExecute("测试") 部分代码

With CurrentTable
        'Dim Positionrow As Integer = .Position
        'Dim c As Col = .Cols(t.ColSel).name
        'Dim Colname= c.Name
        If .Position >49  Then
            'If Positionrow > 49 Then
            MessageBox.show("已到达最大行")
        Else
            'Dim t As Table = Tables("测试表") '用这个新增会导致主表定位到其他行
            .Rows(.Position)(.Cols(.ColSel).name) = v3
            .Position = .Position + 1
            '向下移动一行
            'End If
        End If
    End With





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


加好友 发短信
等级:超级版主 帖子:106884 积分:543633 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/12/8 10:32:00 [只看该作者]

不能在异步线程里使用Foxtable的表格,datatable,table都不能使用

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


加好友 发短信
等级:小狐 帖子:341 积分:2864 威望:0 精华:0 注册:2023/6/7 16:07:00
  发帖心情 Post By:2023/12/8 11:15:00 [只看该作者]

我需要通过com口自动采集数据,通过窗口按钮采集到table表格里。 

如果不用委托,窗口就假死了。应该通过么方式解决?
t0=New Threading.Thread(Sub() Functions.AsyncExecute("测试"))


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


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

使用SQLcommand直接把数据保存到后台数据库

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


加好友 发短信
等级:小狐 帖子:341 积分:2864 威望:0 精华:0 注册:2023/6/7 16:07:00
  发帖心情 Post By:2023/12/8 11:34:00 [只看该作者]

读取到SQl后,在通过load读取到table表?



这个错误和委托有关系吗?

错误所在事件:全局表事件,CurrentChanged
详细错误信息:
BindingSource 不能是自己的数据源。请不要将 DataSource 和 DataMember 属性设置为循环引用 BindingSource 的值。

CurrentChanged 事件
Dim r As Row = CurrentTable.Current
If r Is Nothing Then 
    Return
End If

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


加好友 发短信
等级:超级版主 帖子:106884 积分:543633 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/12/8 11:49:00 [只看该作者]

异步线程里用到table绝对会出错

全局表事件,CurrentChanged都有什么代码?

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


加好友 发短信
等级:小狐 帖子:341 积分:2864 威望:0 精华:0 注册:2023/6/7 16:07:00
  发帖心情 Post By:2023/12/8 12:05:00 [只看该作者]

直接用函数还会错误吗?
t0=New Threading.Thread(Sub() Functions.Execute("测试"))


全局表事件,CurrentChanged
Dim r As Row = CurrentTable.Current
If r Is Nothing Then 
    Return
End If

Dim pr As DataRow : Dim dr As DataRow 
Select Case CurrentTable.Name   '如果用 e.Table 代替 CurrentTable 会发生错误, 原因不明
    Case "表A"
        dr = DataTables("设置").Find("表单名称 = '表A' And 字段名称 = '字段名'")
        If dr IsNot Nothing Then
            Try  '刚登陆系统,
                DataTables("表B").DataCols("字段名").FTPClient.RootDir = dr("值") 
            Catch ex As Exception
                Return
            End Try
        End If
 End select

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


加好友 发短信
等级:超级版主 帖子:106884 积分:543633 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/12/8 13:31:00 [只看该作者]

只要是在线程里调用的,不管什么方式都会有问题。

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


加好友 发短信
等级:小狐 帖子:341 积分:2864 威望:0 精华:0 注册:2023/6/7 16:07:00
  发帖心情 Post By:2023/12/8 15:21:00 [只看该作者]

我换了一种思路: 窗口调用线程,  线程调用窗口的按钮。    按钮里触发table的写入事件

 回到顶部