切换数据源:
方案一:************************************************************************
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编辑过]