以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请高手分析一下问题,谢谢! (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=59968) |
-- 作者:关键下一秒 -- 发布时间: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编辑过]
|
-- 作者:逛逛 -- 发布时间:2014/11/15 14:54:00 -- 1、方案一 请注意 OrElse 与 AndAlso 的优先次序
2、数据源切换,必须注意要将对应的DataTable的卸载,同时包括对应的Table(实际应用中,我更喜欢用首字母来代表窗口的数据源对象,以便通过关闭对应的窗 口来关闭Table)
3、你说的错误,我还没有遇见过,提不出建议。 |