设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[Access本身] 【求助】关于数据表子窗体某字段根据条件批量自动修改

[复制链接]
跳转到指定楼层
1#
发表于 2011-10-3 23:55:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 5574916 于 2011-10-4 10:37 编辑

数据库内有
表:订单明细;产品明细表
窗体:订单;订单子窗体



情况:
子窗体的单位手动更改为件/打时,规格对应产品可以自动改动。

现在问题是:
有什么办法可以实现当【组合框为件/打】时,子窗体的【规格】【对应产品各自的规格】批量自动改动。

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2011-10-4 09:16:23 | 只看该作者
应该可以
不过你得传例子
3#
 楼主| 发表于 2011-10-4 10:38:58 | 只看该作者
Henry D. Sy 发表于 2011-10-4 09:16
应该可以
不过你得传例子

昨晚网络出了问题,一直没传上,现在可以了,请多多指教。
4#
发表于 2011-10-4 11:08:45 | 只看该作者
本帖最后由 todaynew 于 2011-10-4 11:20 编辑
5574916 发表于 2011-10-4 10:38
昨晚网络出了问题,一直没传上,现在可以了,请多多指教。


用更新查询就可以了。关键是要知道修改的算法,比如统一除以100,统一乘以12什么的。

dim ssql as string
dim s,v,f
ssql="update 产品表 set 单位='"
select case me.单位.value
    case "打"
       s="件":f="*":v=12
    case "箱"
       s="盒":f="*":v=100
    .......
end select
ssql=ssql &  s & "',规格=规格" & f & v & " where 单位='" & me.单位.value & "'"
currentdb.execute ssql
5#
 楼主| 发表于 2011-10-4 12:30:21 | 只看该作者
本帖最后由 5574916 于 2011-10-4 12:35 编辑
todaynew 发表于 2011-10-4 11:08
用更新查询就可以了。关键是要知道修改的算法,比如统一除以100,统一乘以12什么的。

dim ssql as s ...


多谢版主指导,我感觉与我想实现的点出入。我把思路理清一些,看看我们想的是否一致如果有更好的思路,还请多多指教!

先理一下这样使用的原因:
我构思的与当前问题相关的开单步骤:



1.客户购买大量产品(例如客户要买的都是一件一件的话,不同的产品对应件的规格也不一样,有的是1件96,有的是144....等等);

2.制单人将客户需要的产品选入列表框(使用双列表框),确认无误后【确定】批量写入订单明细表。
3.接下来是批量写入每一个产品的购买单位为件(这个组合框选为件时可以实现)
!!问题出在这里了,当单位都为件时,如何使规格根据产品各自的的规格改动。

例如:单独操作的话,是这样的。
【订单子窗体】
选入一个商品-100-16;然后单位选为件;规格自动写入100;  如果单位改为打时,规格就写入16。
            商品-101-17 >>> 件 >>> 101  /  打 >>> 17。
以此类推...

单独操作没有问题,现在想实现的是 商品批量写入了,单位批量写入了,规格要怎么批量变动?
到这里这个思路算清晰吧望大家指教

例子附件
http://www.office-cn.net/forum.p ... XwxNjkwMjh8MTA1ODUx
6#
发表于 2011-10-4 12:38:57 | 只看该作者
  1. Private Sub 批量更改_AfterUpdate()
  2.     Dim stSql As String
  3.     Dim strWhat As String
  4.     On Error GoTo 批量更改_AfterUpdate_Error

  5.     strWhat = Me.批量更改
  6.     If strWhat = "打" Then
  7.         stSql = _
  8.         "UPDATE 产品明细表 RIGHT JOIN 订单明细 ON 产品明细表.产品名称 = 订单明细.产品名称 SET 订单明细.单位 = '" _
  9.                 & strWhat & "', 订单明细.规格 = 规格打"
  10.     Else
  11.         stSql = _
  12.         "UPDATE 产品明细表 RIGHT JOIN 订单明细 ON 产品明细表.产品名称 = 订单明细.产品名称 SET 订单明细.单位 = '" _
  13.                 & strWhat & "', 订单明细.规格 = 规格件"
  14.     End If
  15.     CurrentDb.Execute stSql

  16.     Forms![订单]![订单子窗体].Requery

  17.     On Error GoTo 0
  18.     Exit Sub

  19. 批量更改_AfterUpdate_Error:

  20.     MsgBox "Error " & Err.Number & " (" & Err.Description & ")"

  21. End Sub
复制代码
7#
 楼主| 发表于 2011-10-4 13:22:02 | 只看该作者
Henry D. Sy 发表于 2011-10-4 12:38

正解,多谢Henry D. Sy 指导!
我在示例中运行,处理的时间很快,更新后就同步改过来了。
我把代码放到实际数据库中运行(产品明细表900多条记录;订单明细表10多万条记录)处理时间大概需要4秒。这样的处理时间算是在正常吗,需不需要再继续优化?
8#
发表于 2011-10-4 13:35:21 | 只看该作者
不正常,是太快了。
9#
 楼主| 发表于 2011-10-4 13:42:37 | 只看该作者
Henry D. Sy 发表于 2011-10-4 13:35
不正常,是太快了。

嘿嘿,明白明白,再次感谢你的指导!
10#
发表于 2011-10-25 18:16:16 | 只看该作者
学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-10 22:47 , Processed in 0.102447 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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