Foxtable(狐表)用户栏目专家坐堂 → 请高手分析一下问题,谢谢!


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

主题:请高手分析一下问题,谢谢!

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


加好友 发短信
等级:四尾狐 帖子:816 积分:6685 威望:0 精华:2 注册:2012/8/23 12:35:00
请高手分析一下问题,谢谢!  发帖心情 Post By:2014/11/15 10:22:00 [只看该作者]

切换数据源:
      方案一:************************************************************************

        Dim dtNames As String = ""
        If  Connections("BOYsERP").ConnectionString <> Connections(_DsnName).ConnectionString Then
            '**************缷载数据表************************************************
            For Each  dt As DataTable In DataTables
                If dt.Type = 3 OrElse dt.Type = 4 AndAlso dt.ConnectionName<>_DsnName Then
                    dtNames = dtNames & "|" & dt.Name
                End If
            Next
            If dtNames <> "" Then
                dtNames = dtNames.trim("|")
                DataTables.Unload(dtNames)
            End If

            '使新数据源与内定数据源BOYsERP连接串相等*******************************************
            If Connections.Contains("BOYsERP") = True Then
                Connections.Delete("BOYsERP")
            End If
            Connections.Add("BOYsERP",Connections(_DsnName).ConnectionString)
            DataTables.Load(dtNames)
        End If


‘用上面的方式切换数据源,遇到两个问题:
1.对应的table没有产生。(不知为什么)
2.如果table能正常产生,但在新增行时会出现:该行不属于与此关系相同的:dataset 错误。

      方案二:********************************************************************************
         If  Connections("BOYsERP").ConnectionString <> Connections(_DsnName).ConnectionString Then
            For Each dt As DataTable In DataTables
                '切换数据源
                If dt.SourceType<>1 AndAlso dt.Type<>5 AndAlso Connections.Contains(_DsnName)=True  Then
                    Dim dbList As List (of String ) = Connections(_DsnName).GetTableNames
                    If dbList.Contains(dt.Name) Then
                        dt.ChangeConnection(_DsnName)            
                    End If
                End If
            Next
             '使新数据源与内定数据源BOYsERP连接串相等*******************************************
            If Connections.Contains("BOYsERP") = True Then
                Connections.Delete("BOYsERP")
            End If
            Connections.Add("BOYsERP",Connections(_DsnName).ConnectionString)
         End If
用方案二,产生问题:
 1.使用sqlfind得到后台数据行做修改,再使用_Identify找到前台数据行,然后用 datarow.load(false)时,会卡死。
 2.其它没找到原因的卡死。


不知各位狐友,是否有更完美的切换数据源的方法?




[此贴子已经被作者于2014-11-15 10:35:11编辑过]

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


加好友 发短信
等级:版主 帖子:1693 积分:12135 威望:0 精华:7 注册:2013/7/11 10:52:00
  发帖心情 Post By:2014/11/15 14:54:00 [只看该作者]

1、方案一   请注意 OrElse 与  AndAlso 的优先次序

 

2、数据源切换,必须注意要将对应的DataTable的卸载,同时包括对应的Table(实际应用中,我更喜欢用首字母来代表窗口的数据源对象,以便通过关闭对应的窗  口来关闭Table)

 

3、你说的错误,我还没有遇见过,提不出建议。


 回到顶部