设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2799|回复: 5
打印 上一主题 下一主题

[窗体] 求助!根据子窗体不同字段值打开不同的编辑窗体!

[复制链接]
跳转到指定楼层
1#
发表于 2021-4-9 17:28:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
菜鸟求助大佬:
    现有三个表
    表1字段为:ID,Type,Name
    表2字段为:ID,Type,Name,Nation
    表3字段为:ID,Type,Name,Nation,Phone

    Type字段内容有:自有,派遣,其他
    根据三个表建了个联合查询Qry,并且以联合查询作为记录源建立窗体(平台生成):查询.Qry和查询.Edit
    并且三个表各自建立窗体:表1.Qry,表1.Edit,表2.Qry,表2.Edit,表3.Qry,表3.Edit

    目前通过"查询.Qry"窗体双击或点击编辑可以打开对应记录的编辑窗体,但因记录源是联合查询,无法直接编辑。

    现在需求:
    通过“查询.Qry”窗体
    1)如果当前记录中Type=自有,则打开“表1.Edit”对应ID的编辑窗体
    2)如果当前记录中Type=派遣,则打开“表2.Edit”对应ID的编辑窗体
    3)如果当前记录中Type=其他,则打开“表3.Edit”对应ID的编辑窗体


麻烦高手给个代码,谢谢了!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2021-4-9 17:29:39 | 只看该作者
因为三个表的ID虽然字段名称相同,但是自动编号规则不一致。
3#
发表于 2021-4-11 17:25:07 | 只看该作者
明明用表3就可以了,没搞懂为啥建三张表。
按我理解,可能是三个BU(事业群)各自建一张表。但是,——我还是要说“但是”,你就不能把三张表联合查询后追加到同一张表么?加一个字段(比如,“事业群”)来区分各个表的来源么?
后面根据这个字段做一个查询(where 事业群="'"&txt事业群&"'")即可分配权限了。
4#
 楼主| 发表于 2021-4-12 15:31:16 | 只看该作者
roych 发表于 2021-4-11 17:25
明明用表3就可以了,没搞懂为啥建三张表。
按我理解,可能是三个BU(事业群)各自建一张表。但是,——我 ...

感谢版主答复。是这样的
之所以建3张表,原因在于每张表的ID自动编号规则(表1编号,表2编号,表3编号)并不一致,而且3张表中除了有共同字段外,也有不同字段,每张表的编辑窗体是不一样的,字段1的下拉数据为A,B,C

能否帮忙改一下代码,现有表1、表2、表3

表1:ID,字段1,字段2,字段3
表2:ID,字段1,字段2,字段3,字段4,字段5
表3:ID,字段1,字段2,字段3,字段4,字段5,字段6,字段7
联合查询表1、表2和表3:ID,字段1,字段2,字段3

3张表和联合查询各自通过平台窗体生成主窗体(main)、列表窗体(list)和编辑窗体(edit)

因为联合查询打开的编辑窗体无法进行数据修改只能查看(而且根据联合查询,只查询3张表的共同字段),所以现在想实现的功能是:

在联合查询main窗体中点击编辑,如果选中行字段1的值为A,则打开表1edit,如果为B则打开表2edit,如果为C则打开表3edit

能否给一个根据字段1的值不同而打开不同编辑窗体的代码
5#
 楼主| 发表于 2021-4-12 15:31:36 | 只看该作者
roych 发表于 2021-4-11 17:25
明明用表3就可以了,没搞懂为啥建三张表。
按我理解,可能是三个BU(事业群)各自建一张表。但是,——我 ...

感谢版主答复。是这样的
之所以建3张表,原因在于每张表的ID自动编号规则(表1编号,表2编号,表3编号)并不一致,而且3张表中除了有共同字段外,也有不同字段,每张表的编辑窗体是不一样的,字段1的下拉数据为A,B,C

能否帮忙改一下代码,现有表1、表2、表3

表1:ID,字段1,字段2,字段3
表2:ID,字段1,字段2,字段3,字段4,字段5
表3:ID,字段1,字段2,字段3,字段4,字段5,字段6,字段7
联合查询表1、表2和表3:ID,字段1,字段2,字段3

3张表和联合查询各自通过平台窗体生成主窗体(main)、列表窗体(list)和编辑窗体(edit)

因为联合查询打开的编辑窗体无法进行数据修改只能查看(而且根据联合查询,只查询3张表的共同字段),所以现在想实现的功能是:

在联合查询main窗体中点击编辑,如果选中行字段1的值为A,则打开表1edit,如果为B则打开表2edit,如果为C则打开表3edit

能否给一个根据字段1的值不同而打开不同编辑窗体的代码
6#
发表于 2021-4-16 23:59:14 | 只看该作者
是不是我说得还不够清楚?把三张表的三个字段追加到同一张表,加上表来源,后面以这张表的表来源作为条件来筛选。
比如,
  1. insert into 汇总表(字段1,字段2,字段3,数据源)
  2. select 字段1,字段2,字段3,"表1" as 数据源 from 表1
  3. union all
  4. select 字段1,字段2,字段3,"表2" as 数据源 from 表2
  5. union all
  6. select 字段1,字段2,字段3,"表2" as 数据源 from 表2
复制代码

后面,是不是可以根据“汇总表的字段“数据源”作为条件来筛选?
比如,甲用户只能修改”表1“的数据,那么就创建一个窗体。数据源设置为:select * from 汇总表 where 数据源="表1";乙用户只能修改”表2“的数据源,同样创建一个数据源=”表2“的窗体供他使用。。。。
事实上。这些完全可以在登录时设置好,而不必创建三个窗体。登录时,将用户和”数据源“做一个绑定,可以创建一个用户表:
用户 数据源
甲    表1
乙    表2
丙    表3
……
当用户登录时,匹配到相应的数据源,然后引用到窗体上即可。
其实吧,我知道,即使说了这么多,你还是一头雾水。因为从你的表设计思路来看,大概是新手,还没去理解该如何整合数据源,就开始着手权限问题了。——这里没有取笑的意思,只是希望你不要走我当年走过的弯路。——当年我看了三个月的书就急吼吼地去设计窗体了,直至后面各种问题,按下葫芦浮起瓢,改得面目全非,不得不推翻重来,才开始去看表设计范式。
不过还是给出一些例子,希望对你理解数据库设计有些许帮助。
以下是简单的权限设计(第一个是通过引用登录用户作为条件让用户只能编辑自己权限下的数据):
http://www.office-cn.net/thread-119118-1-1.html
http://www.office-cn.net/thread-79760-1-1.html
以下是数据源整合(多种数据源,最后整合到一张表,然后出具报表):
http://www.office-cn.net/thread-121627-1-1.html
以下是数据表范式设计:
http://www.office-cn.net/thread-118819-1-1.html
http://www.office-cn.net/thread-120215-1-1.html
http://www.office-cn.net/thread-126428-1-1.html
帖子不多,认真看看吧。如能对你有所启发,也不枉费我敲这么多字了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-9 09:16 , Processed in 0.128107 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表