-- 作者:9EQ98
-- 发布时间:2014/2/15 10:57:00
-- 如何实现同步更新表
有两个表:想当其中一个表修改和新增记录后,另一个表同步更新修改或新增记录,
在【表属性】的〖BeforeSaveDataRow〗 事件中写入以下代码,提示出错
\'BeforeSaveDataRow 保存目一数据行之前执行,可以在此对数据进行最终的验证
If DataTables.Contains("Equa_GPS") = False Then \'如果表 Equa_GS 没有加载 DataTables.Load("Equa_GPS") \'加载表 Equa_GPS End If
If DataTables.Contains("Equa_GPS") = False Then \'如果 Equa_GPS 没有加载 MessageBox.Show("系统导航表未能加载,无法与菜单权限表同步更新", _ "同步更新提示", _ MessageBoxButtons.OK, _ MessageBoxIcon.Warning) \'Ok Retry Cancel Yes No,Error Information None Question Warning Return End If
\'将整行记录同步更新至 Equa_GPS 表 Dim dr_source As DataRow = e.DataRow \'正在保存的记录行
If (dr_source.RowState = DataRowState.Modified Or _ dr_source.RowState = DataRowState.Added) = False Then \'没有已修改或新增记录 Return End If
Dim EL_TypeName As String = e.DataRow("TypeName") \'分类 Dim EL_PageName As String = e.DataRow("PageName") \'导航栏名称 Dim EL_TopicName As String = e.DataRow("TopicName") \'任务栏名称
Dim dr_aim As Row \'定义数据行
Dim dr1 As DataRow \'定义重复名称检查数据查询 Dim Find_Filter As String = "" \'定义查询筛选条件 Find_Filter = "[TypeName] ="" & EL_TypeName & """ & " And " & _ "[PageName] ="" & EL_PageName & """ & " And " & _ "[TopicName] ="" & EL_TopicName & """
Tables("EQUA_GPS").Filter = "" \'取消筛选,恢复为所有记录 dr1 = DataTables("EQUA_GPS").Find(Find_Filter,"TypeName",0) \'执行查询,返回结果集(查找条件,排序)
If dr1 IsNot Nothing Then \'如果找到记录 Else \'没有找到记录,新增一行 Tables("EQUA_GPS").AddNew() \'增加一行 End If
dr_aim = Tables("EQUA_GPS").Current \'返回当前行(定位到记录行) dr_aim("IS_Ban") = dr_source("IS_Ban") \'是否禁用 dr_aim("TypeName") = dr_source("TypeName") \'分类 dr_aim("PageName") = dr_source("PageName") \'导航栏名称 dr_aim("PageText") = dr_source("PageText") \'导航栏标题 dr_aim("Order_By") = dr_source("Order_By") \'显示顺序 dr_aim("TopicName") = dr_source("TopicName") \'任务栏名称 dr_aim("TopicText") = dr_source("TopicText") \'任务栏标题 dr_aim("PageICO") = dr_source("PageICO") \'图标 dr_aim("ShowICO") = dr_source("ShowICO") \'显示图标 dr_aim("CmdText") = dr_source("CmdText") \'执行命令 dr_aim("MassText") = dr_source("MassText") \'提示信息 Tables("EQUA_GPS").Save() \'保存数据 \'Tables("EQUA_GPS").Filter = "" \'取消筛选,恢复为所有记录
\'结束
出错提示:
Exception has been thrown by the target of an invocation. Cannot interpret token \'"\' at position 13.
例外被调用的目标投掷。无法解释的标记“”在位置13
此主题相关图片如下:错误提示.jpg

两个表的表结构信息如下:
此主题相关图片如下:系统导航-表结构.jpg
此主题相关图片如下:菜单权限-表结构.jpg

|