设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[模块/函数] 请大家帮忙建立一个模块

[复制链接]
跳转到指定楼层
1#
发表于 2011-11-29 11:50:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 siaele 于 2011-11-29 11:50 编辑

这几天都在琢磨这个问题,还是没有根本解决,还是要论坛的大大们帮一下忙.我的模块基础实在是太差了{:soso_e106:} .

见附件例子:
  1.有窗体1,窗体2,窗体3......,它些窗体上面都有一个按钮(放大镜那个),点击按钮后,修改查询"b_InQuiry_VendorQuery",将查询里面的where条件改成当前窗体的文本框(VendorNO)的值>>
  2.弹出窗体B,窗体B的子窗体数据源是被修改后的查询"b_InQuiry_VendorQuery">>
  3.双击窗体B上的查询结果,将结果传送给"上一个窗体"(即从窗体1打开窗体B,就将内容传递给窗体1),然后关闭窗体B.

我现在的做法是(对应上面的顺序):
1.打开窗体1后,单击按钮事件后: 修改查询(见VBA里的"NewSql "子程序,调用了模块"UpdateSql"
   
  1. Sub NewSql() '更新查询
  2. Dim VendorSql As String
  3. Dim frName As String

  4. frName = Me.Form.Name '获取当前窗体名

  5. '*开始输出SQL
  6. VendorSql = "SELECT [2_Vendor_Information].VendorNO, [2_Vendor_Information].VendorName, [2_Vendor_Information].VenAdress1, [2_Vendor_Information].VenAdress2,"
  7. VendorSql = VendorSql + "[2_Vendor_Information].Contact1, [2_Vendor_Information].Mobile1, [2_Vendor_Information].Contact2, [2_Vendor_Information].Mobile2,[2_Vendor_Information].Tel,"
  8. VendorSql = VendorSql + "[2_Vendor_Information].Fax, [2_Vendor_Information].Credit, [2_Vendor_Information].Checkout, [2_Vendor_Information].Email,[2_Vendor_Information].State"
  9. VendorSql = VendorSql + " FROM 2_Vendor_Information"
  10. VendorSql = VendorSql + " WHERE ((([2_Vendor_Information].VendorNO) Like" & Chr$(34) & "*" & Chr$(34)
  11. VendorSql = VendorSql + " & [Forms]!["
  12. VendorSql = VendorSql & frName
  13. VendorSql = VendorSql + "]![VendorNO] & " & Chr$(34) & "*" & Chr$(34)
  14. VendorSql = VendorSql + ")) OR ((([2_Vendor_Information].VendorName) Like" & Chr$(34) & "*" & Chr$(34)
  15. VendorSql = VendorSql + "& [Forms]!["
  16. VendorSql = VendorSql & frName
  17. VendorSql = VendorSql + "]![VendorNO] &" & Chr$(34) & "*" & Chr$(34)
  18. VendorSql = VendorSql + ")) ORDER BY [2_Vendor_Information].VendorNO;"

  19. Call UpSql("b_InQuiry_VendorQuery", VendorSql)
  20. End Sub
复制代码
2.弹出窗体B,窗体B在加载事件执行 Me.PreFmName = Forms(Forms.Count - 2).Name ,使用文本框控件PreFmName获取窗体1的窗体名(呵呵,得到了t小宝版主的指点)
3.双击窗体B中的内容,将内容传送到窗体1.
  1. Sub TranVendor()
  2. Dim fName As String
  3. fName = Me.Parent.PreFmName
  4. Forms(fName).[VendorNO] = Me.VendorNO
  5. DoCmd.Close

  6. End Sub
复制代码

'------------------------------------------
上面的方法达到了我的要求,但是窗体1,窗体2,窗体3......都个窗体都要包含一个子程序"NewSql",感觉程序有些臃肿. 我觉得应该可以用模块来进行精简,但是小弟的access是边用边学,以前没接触过,对模块是一头雾水. 所以请大家帮一下忙,编一个模块,可以将"NewSql" 这个子程序精简到模块里.

附件在这里:





本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2011-11-29 12:55:56 | 只看该作者
这么复杂,看得有点晕!
3#
 楼主| 发表于 2011-11-29 16:45:54 | 只看该作者
自己顶一下.
4#
 楼主| 发表于 2011-11-30 08:43:22 | 只看该作者
回看,盼交流
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 02:25 , Processed in 0.108928 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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