设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

123下一页
返回列表 发新帖
查看: 4877|回复: 28
打印 上一主题 下一主题

[表] 如何用SQL或其它方法更新表

[复制链接]
跳转到指定楼层
1#
发表于 2012-4-7 20:49:42 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 简 于 2012-4-7 20:52 编辑

我希望把定额表中定额更新在AA表中相对应的品号的定额字段中。

特别强调的是,

同一个产品,在同一台机床,同一天里,如果班次中有两个中班,那么该中班次的定额就取一半,否则就是全额。  
比如,本来A042的定额是2700,它在3月6号 这天,在29号机床上有两个中班,所以中班的定额就为2700/2=1350,而白班和夜班就是2700。  

像B092产品,它在3月8号这天,在21号机床 上只有一个中班,所以它白、中、夜的定额都是1800。

最后的结果如图所示。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
29#
发表于 2012-4-21 15:42:20 | 只看该作者
本帖最后由 todaynew 于 2012-4-21 16:35 编辑
简 发表于 2012-4-21 12:25
我觉得列表框也是个好办法,但列表框有个缺陷就是,不能进行条件格式的设置,比如我要求完成数量>3000的数 ...


关于用条件格式解决此问题的方法请参见:http://www.office-cn.net/thread-111494-1-1.html
28#
发表于 2012-4-21 14:20:45 | 只看该作者
本帖最后由 todaynew 于 2012-4-21 14:50 编辑
简 发表于 2012-4-21 12:25
我觉得列表框也是个好办法,但列表框有个缺陷就是,不能进行条件格式的设置,比如我要求完成数量>3000的数 ...


鬼打架。
在A子窗体写A子窗体的代码,在B子窗体写B子窗体的代码,在C子窗体写C子窗体的代码,光标在哪个子窗体上就做那个子窗体的工作,与谁活谁死有何干系?完全是莫名其妙的问题。

不能简单的复制代码,需要将其中的窗体对象做必要的修改。也可写一个带参数的函数那解决这个问题。

1、在标准模块中写:
Function FindRecord(Myfrm As Form, frm As Form, CtrlName As String)
      '参数:Myfrm--当前子窗体
      '      frm --某个需要查找对应记录的子窗体
      '      CtrlName --某个两子窗体相同的字段名称
      '示例:Call FindRecord(me.Form, Me.Parent.Child2.Form, "机床")

     Dim i As Long
     
     For i = 1 To frm.RecordsetClone.RecordCount
          frm.SelTop = i
          If frm.Controls(CtrlName).Value = Myfrm.Controls(CtrlName).Value Then
              frm.SelWidth = frm.Controls.Count / 2
              Exit For
          End If
      Next

End Function

2、在白班窗体中调用函数
Private Sub Form_Current()
     On Error Resume Next
     Call Call FindRecord(me.Form, Me.Parent.Child2.Form, "机床")
     Call Call FindRecord(me.Form, Me.Parent.Child3.Form, "机床")
End Sub

3、中班子窗体中调用函数
Private Sub Form_Current()
     On Error Resume Next
     Call Call FindRecord(me.Form, Me.Parent.Child1.Form, "机床")
     Call Call FindRecord(me.Form, Me.Parent.Child3.Form, "机床")
End Sub

4、夜班子窗体中调用函数
Private Sub Form_Current()
     On Error Resume Next
     Call Call FindRecord(me.Form, Me.Parent.Child1.Form, "机床")
     Call Call FindRecord(me.Form, Me.Parent.Child2.Form, "机床")
End Sub


27#
 楼主| 发表于 2012-4-21 12:25:30 | 只看该作者
todaynew 发表于 2012-4-21 08:11
那就用动态设置条件格式,不过代码比较麻烦。可以用列表框替代子窗体这样处理要简单一些。处理方法参见 ...

我觉得列表框也是个好办法,但列表框有个缺陷就是,不能进行条件格式的设置,比如我要求完成数量>3000的数据背景显示红色,<500件背景色为绿色。

另外老汉,我还发现两个问题,
1.我觉得用frm.SelWidth =5似乎不是很合适,因为超过5列就不能高亮反显了。为此我改用DoCmd.RunCommand acCmdSelectRecord。

2.我希望中班,夜班的子窗体也实现白班子窗体的效果,即如果我在中班子窗体中选中29号机床,白班和夜班子窗体中29号机床的记录就高亮显示。

我把代码复制后,我认为由于缺少一个对活动子窗体的判断,所以在运行中,陷入了死循环。请问老汉该怎么处理才能让白班,中班,夜班都实现上述的效果呢。
26#
发表于 2012-4-21 08:11:27 | 只看该作者
本帖最后由 todaynew 于 2012-4-21 08:13 编辑
简 发表于 2012-4-20 23:03
现在又有个问题,
比如说,选中白班子窗体的29号机床记录,中班29号机床有两条记录,我希望这两条记录都 ...


那就用动态设置条件格式,不过代码比较麻烦。可以用列表框替代子窗体这样处理要简单一些。处理方法参见:http://www.office-cn.net/forum.p ... 9%D0%ED%B9%D6%D2%EC
25#
 楼主| 发表于 2012-4-20 23:03:32 | 只看该作者
todaynew 发表于 2012-4-20 13:03
窗体加载时子窗体的加载有前后顺序,因此在后面的子窗体未加载完成时会跳出错误,解决的办法是在代码中加 ...

现在又有个问题,
比如说,选中白班子窗体的29号机床记录,中班29号机床有两条记录,我希望这两条记录都高亮显示,而不是只显示29号机床的一条记录。
24#
发表于 2012-4-20 13:12:13 | 只看该作者
简 发表于 2012-4-19 22:00
老汉,我要去带孩子了,我还有个问题,即选中列的问题。

也就是说,我在白班子窗体选中任一列,比如完 ...

加个if判断就可以了吗
if isnull(me.数量.value)=false then
       前面给你的那些代码写这里
end if
23#
发表于 2012-4-20 13:09:25 | 只看该作者
简 发表于 2012-4-19 21:50
我用过Cstr,不起作用。

我曾这样写过:

你得到的same1的值是什么?

我想你是后面的对same1的判断用反向了,不信你仔细看看。

在不存在的时候查出存在是本事,在存在时查出不存在是错误。
22#
发表于 2012-4-20 13:03:54 | 只看该作者
简 发表于 2012-4-19 21:45
Set frm = Me.Parent.Child2.Form

这段代码无法运行,出错。

窗体加载时子窗体的加载有前后顺序,因此在后面的子窗体未加载完成时会跳出错误,解决的办法是在代码中加一句:On Error Resume Next
具体看修改后的示例
21#
 楼主| 发表于 2012-4-19 22:00:31 | 只看该作者
todaynew 发表于 2012-4-19 21:22
好办呀,依据选中值动态设置背景色、或则选中或则条件格式皆可。

老汉,我要去带孩子了,我还有个问题,即选中列的问题。

也就是说,我在白班子窗体选中任一列,比如完成数量这列,则中班子窗体,夜班子窗体的完成数量这列也选中并高亮显示。

这种效果能实现不。

一共三个问题等待解决,在此先谢了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-21 12:23 , Processed in 0.108542 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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