找回密码
 立即注册

QQ登录

只需一步,快速开始

Simon.hu 讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2020-4-22 20:01  /   查看:4111  /  回复:0
今天给大家讲一个特别基础,但是很多新手都会遇到的问题
背景
每一个故事都要有一个背景,这个故事的背景我就以做一个订单管理系统为例。

在做订单管理系统的时候,我们一般为了更加的方便和规范,我们一般会使用关联功能来完成一部分功能(这个其实就是数据库第三范式的要求,有兴趣的同学可以去了解一下),举个经典的例子,订单主表中我们可能需要填写客户信息,但是客户的信息其实已经在客户表中保存了的,那我们在给订单设置客户的时候,只需要让他把客户的唯一标识(客户ID)保存到订单表中,这样客户的其他信息都能直接通过读表拿到,方便快捷又不会有数据库的冗余, 因此我们的表会这样设置
image.png638417968.png
在页面的表格或者单元格的绑定上也会通过关联就能显示我们希望的数据
比如我只在订单表中保存了客户的ID,
image.png985588684.png
但是通过页面的绑定就能显示,我想要的数据,比如客户名称等等
image.png644007262.png

一切看起来都很完美,但是当你想直接修改的时候,就会遇到这样的问题:
问题
因为我们只在订单表中保存了客户ID,但是页面中显示了客户的名称,客户的电话;那么如果我们希望修改客户名称,客户电话等关联出来的数据怎么办?
1.即使你开启了表格的允许编辑功能这些关联的字段也是不能进入编辑状态的
image.png905314330.png
2.如果你想退而求其次,在详情页面上修改这些数据,事实会告诉你也不行
image.png23233031.png


原因
这个问题的原因是:
想想咱们本来就是只是在订单表中引用了客户表的ID,其他的客户信息都是动态查出来的啊,那你怎么可能在订单表中直接修改客户表中的数据呢?
你这样的话,同样都是表,客户表不是很没面子?
举个不太形象的例子方便大家理解哈:
每一个表都只能修改自己表中的数据,这点是真理,到哪里都一样,数据库就想一个小区,数据表就想一个个房间,你的隔壁只是住了一个跟你有关系的人而已,你可以随便改你们家的布置,动你们家的东西,你还能去乱动别人家的东西?这不是私闯民宅么?


解决方法
这个具体问题具体分析:
1.如果你是要修改客户的信息,比如说把客户A修改成客户B,那这自然代表着地址,电话,联系人都从客户A的变成客户B的;你可以直接这样做,把客户设置成下拉框
image.png671893310.png
这样你直接修改下拉框的值就行了,这种做法的需要你这样来配合,就是在详情页面的其他客户相关字段不要使用关联绑定,而是变成公式
image.png351309508.png
原因是,当你没有保存前,这个关联关系并没有建立,那你还想要动态变怎么办?那就是你自己使用公式自己查出来
2.如果你就是想要修改原来客户的电话字段怎么办?
这种问题,2个做法
做法1:
在修改订单的同时修改一下客户表
image.png835795593.png
这就相当于小区的物业,告诉你和你邻居家同事修改一下自己家的东西,这个问题就可以解决了
做法2:
直接去客户管理那边修改客户的信息
image.png369557799.png
这相当于,直接让你的邻居自己修改自己家的东西,因为你只是引用他们家而已,所以他们家的东西变了,你自然也就跟着变了

机智的你学会了吗?

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部