以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  同样一个表对应2个数据源切换的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=4959)

--  作者:yuanbin
--  发布时间:2009/11/12 16:16:00
--  同样一个表对应2个数据源切换的问题

附件案例中,表1是在a数据源上加载建立的外部表,但实际应用中需要动态切换对应到b数据源。
先选择一个数据源,增加一行,当忘记保存后,通过combobox切换数据源有报错现象。如果之前修改了数据,直接切换数据源,回头看就发现没有保存住。combobox有ValueChanged,没有beforeValueChang事件。如果在ValueChanged中间加datatables.save()会造成应该保存在A数据源中记录被保存到b数据源中了,所以此种想法不合适。
考虑之后,在combobox的MouseEnter事件中增加了代码(附件案例中也增加):
If DataTables("表1").HasChanges Then
    If MessageBox.Show("表已经被修改,是否保存?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
        DataTables("表1").Save()
    End If
end if
测试后,对表1的行记录进行修改和删除是正常的,但新增行却有不同,对a数据源,新增记录可正常保存,也看到编号自动更新。切换到b数据源,新增记录保存就出错。使用菜单按钮保存,新增行的编号变为0。如果此时再新增行保存又会报错。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:切换数据源.rar


图片点击可在新窗口打开查看此主题相关图片如下:保存出错1.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:保存出错2.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2009-11-12 16:17:41编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/11/12 16:34:00
--  
加一行:


DataTables("表1").Save()
dim zt as string=Forms("窗口1").Controls("ComboBox1").value
Select Case zt
    Case "A"
        DataTables("表1").LoadFilter = "编号>=0"
        DataTables("表1").ChangeConnection( "a" )
    Case "B"
        DataTables("表1").LoadFilter = "编号>=0"
        DataTables("表1").ChangeConnection( "b" )
    Case Else
        MessageBox.Show("请正确选择帐套信息!")
        return
End Select
[此贴子已经被作者于2009-11-12 16:35:32编辑过]

--  作者:yuanbin
--  发布时间:2009/11/12 17:15:00
--  
我试过。在选择帐套B后,新增行并填写数据后,切换帐套到A时报错。如上图(保存出错1.jpg)
对A数据源操作没发现问题,因它是原先建立的。B数据源是后续切换的,可能是对b数据源的主键处理存在问题。 报错后,2个数据源都保存了记录。

--  作者:狐狸爸爸
--  发布时间:2009/11/12 17:30:00
--  
搞定,下次更新不会有了