附件案例中,表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。如果此时再新增行保存又会报错。

此主题相关图片如下:保存出错1.jpg


此主题相关图片如下:保存出错2.jpg
[此贴子已经被作者于2009-11-12 16:17:41编辑过]