Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

Help! Access 如何使用按钮从子窗体中的数据传输到另一个子窗体?(VBA)

hildaliu  发表于:2015-02-05 23:51:28  
复制

我有两个子窗体在我的订单,一个是Order item,另一个是product category。当我按订Add to Order Button 時不能传输数据。另外,我想要添加MSGBOX警告重复数据,我知道MSGBOX应使用DCount函数,但我不知道该怎么做, 可以帮我解决这个问题嗎?


这就是我试图做的代码,但是这仍然有一些问题


Private Sub AddToOrder_Click()

If DCount("ProductID", "T_Product", "ProductID=" & Me.ProductID) > 1 Then
Me.ProductID.Undo
MsgBox "repeat"

Else

Forms![F_Orders]![F_Order_line_subform].SetFocus
ProductID.SetFocus
DoCmd.GoToRecord , , acNewRec


End If

End sub

 

Top
易勋 发表于:2015-02-06 14:36:20

按钮的单击事件写 子窗体1窗体名称.字段名=子窗体2窗体名称.字段名  有多少字段就重复几次

然后使用Dcount函数检测重复 http://www.accessoft.com/article-show.asp?id=3660 

  请不要重复发帖



zhaoyoulong 发表于:2015-02-06 17:01:58

dim Str as string


If DCount("ProductID", "T_Product", "ProductID=" & Me.ProductID) >= 1 Then 
MsgBox "repeat"
exit sub
else


str=INSERT INTO Order item ( 字段1, 字段2... )" _
& "SELECT "  & 
Forms![F_Orders]![F_Order_line_subform].控件1 & ", " &  Forms![F_Orders]![F_Order_line_subform].控件2 & ", " & ...;"

dcmd.runsql str

me.Recalc 

end if




何保辛 发表于:2015-02-08 02:38:44

这里大家要小心!


1.  用 DCount 的话,有可能打开 下方窗体的时候,上方窗体没有保存的时候是 检测不出来的;

2.  用 dmd.runsql 的话,能加入数据库,但是上方窗体不会显示;要上方窗体显示的话,还需要用 requery,但

   a) 上方子窗体当前没保存的记录就会自动保存;要是有写入条件又写不入的时候,就在一个错误里面!

   b) 尽管后来的 Access2007 在焦点离开子窗体的时候,能自动保存;但做一次子窗体requery ,数据的排序不一定按用户期待一样放到最后一条去。


所以,我会建议提高用户的体检:


set targetForm = Forms![F_Orders]![F_Order_line_subform]

set targetRS = targetForm.recordsetclone    '检测重复用画面缓存了的 数据集副本来检测;

do while not targetRS.eof

    if targetRS!ProductID = me!ProductID then

        msgbox "Repeated!"

        exit sub

    end if

    targetRS.movenext

loop


targetForm.SetFocus

targetForm!Quantity.SetFocus  '把焦点已经移到输入数量的框里面,而且在新的记录上,等待输入数量;
DoCmd.GotoRecord ,, acNewRec


targetForm!ProductId = me!ProductId

targetForm!Desc = me!Desc

targetForm!Price = me!Price


'记录不进行保存,保持记录在编辑状态,用户还可以 按 ESC 来取消保存。


Exit Sub




总记录:3篇  页次:1/1 9 1 :