Foxtable(狐表)用户栏目专家坐堂 → 如何实现同步更新表


  共有3363人关注过本帖树形打印复制链接

主题:如何实现同步更新表

帅哥哟,离线,有人找我吗?
9EQ98
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:492 积分:4477 威望:0 精华:0 注册:2014/1/16 16:55:00
如何实现同步更新表  发帖心情 Post By: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
按此在新窗口浏览图片


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/2/15 11:06:00 [只看该作者]

你还是上个例子吧.

 回到顶部
帅哥哟,离线,有人找我吗?
9EQ98
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:492 积分:4477 威望:0 精华:0 注册:2014/1/16 16:55:00
  发帖心情 Post By:2014/2/15 11:15:00 [只看该作者]

亲,已经是个例子了呀


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/2/15 11:18:00 [只看该作者]

我指的是文件例子, 你这只不过是把代码发出来而已,不好排查.

 回到顶部
帅哥哟,离线,有人找我吗?
9EQ98
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:492 积分:4477 威望:0 精华:0 注册:2014/1/16 16:55:00
  发帖心情 Post By:2014/2/15 11:25:00 [只看该作者]

Dim Find_Filter As String = ""  '定义查询筛选条件
MessageBox.Show("提示")
Find_Filter = "[TypeName] ="" & EL_TypeName & """ & " And " & _
"[PageName] ="" & EL_PageName & """ & " And " & _
"[TopicName] ="" & EL_TopicName & """

请问 上面那段代码,有问题吗?


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/2/15 11:27:00 [只看该作者]

我觉得,你应该增加一个唯一的编号列,可以隐藏不显示,这样每次只需要判断查找这个编号即可,不用做大量判断

 回到顶部
帅哥哟,离线,有人找我吗?
9EQ98
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:492 积分:4477 威望:0 精华:0 注册:2014/1/16 16:55:00
  发帖心情 Post By:2014/2/15 11:39:00 [只看该作者]

我已经测试出来了,是因为 双引号 引起的问题,把双引号改成 如下方式就行了

Find_Filter = "[TypeName] =" & "'" & EL_TypeName & "'" & " And " & _
"[PageName] =" & "'" & EL_PageName & "'" & " And " & _
"[TopicName] =" & "'" & EL_TopicName & "'"

之前是:"""


 回到顶部