设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

123
返回列表 发新帖
楼主:
打印 上一主题 下一主题

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

[复制链接]
21#
 楼主| 发表于 2012-4-19 22:00:31 | 只看该作者
todaynew 发表于 2012-4-19 21:22
好办呀,依据选中值动态设置背景色、或则选中或则条件格式皆可。

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

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

这种效果能实现不。

一共三个问题等待解决,在此先谢了。
22#
发表于 2012-4-20 13:03:54 | 只看该作者
简 发表于 2012-4-19 21:45
Set frm = Me.Parent.Child2.Form

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

窗体加载时子窗体的加载有前后顺序,因此在后面的子窗体未加载完成时会跳出错误,解决的办法是在代码中加一句:On Error Resume Next
具体看修改后的示例
23#
发表于 2012-4-20 13:09:25 | 只看该作者
简 发表于 2012-4-19 21:50
我用过Cstr,不起作用。

我曾这样写过:

你得到的same1的值是什么?

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

在不存在的时候查出存在是本事,在存在时查出不存在是错误。
24#
发表于 2012-4-20 13:12:13 | 只看该作者
简 发表于 2012-4-19 22:00
老汉,我要去带孩子了,我还有个问题,即选中列的问题。

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

加个if判断就可以了吗
if isnull(me.数量.value)=false then
       前面给你的那些代码写这里
end if
25#
 楼主| 发表于 2012-4-20 23:03:32 | 只看该作者
todaynew 发表于 2012-4-20 13:03
窗体加载时子窗体的加载有前后顺序,因此在后面的子窗体未加载完成时会跳出错误,解决的办法是在代码中加 ...

现在又有个问题,
比如说,选中白班子窗体的29号机床记录,中班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
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号机床的记录就高亮显示。

我把代码复制后,我认为由于缺少一个对活动子窗体的判断,所以在运行中,陷入了死循环。请问老汉该怎么处理才能让白班,中班,夜班都实现上述的效果呢。
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


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
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-29 21:30 , Processed in 0.098111 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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