Access交流中心

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

记录指针在窗体刷新后如何让它指向刚才打开的记录?

殷小宝  发表于:2010-11-09 12:13:56  
复制

我在药品库存窗体中单击选中的一行或字段弹出了一个药品消耗窗体,填上消耗数量,再点击“确认消耗”,即关闭了药品消耗窗体,药品库存窗体要么更新了数据,可指针指向了第一条,要么不让药品库存窗体更新,指针可以指向刚才打开的记录,我想这二者功能同时实现,即更新了数据,又指针指向刚才打开的记录。敬请各位老师指导。点击下载此附件

 

Top
王樵民 发表于:2010-11-09 16:01:05

参见带色的语句

Private Sub 确认消耗_Click()
  On Error Resume Next
  Dim q
  q = Val(selectstr)
  frm_药品库存.药品ID = selectstr
  Forms!frm_药品分类查询1.Form.药品ID = selectstr
  Dim curdb As Database
  Set curdb = CurrentDb
   curdb.Execute "insert into 出库记录(药品ID,出库日期,药品名称,厂家,规格,有效期,药品分类,单位,出库数量) Values('" & 药品ID.Value & "','" _
  & 出库日期.Value & "','" & 药品名称.Value & "','" & 厂家.Value & "','" & 规格.Value & "','" & 有效期.Value & "','" & 药品分类.Value & "','" _
  & 单位.Value & "','" & 出库数量.Value & "')"
   MsgBox ("药品消耗成功!")
 DoCmd.Close
  'Forms!frm_药品库存.Requery
   Forms!frm_药品库存.药品ID.SetFocus
   Forms!frm_药品库存.Requery
   Forms!frm_药品分类查询1.Requery
   Forms!frm_药品分类查询1.Form.药品ID.SetFocus
   'DoCmd.GoToRecord , , "药品ID"
   DoCmd.GoToRecord acDataForm, "frm_药品库存", acGoTo, q
    '或者用这句也行: DoCmd.GoToRecord acDataForm, " Forms!frm_药品库存", "药品ID.SetFocus"
End Sub



王樵民 发表于:2010-11-09 16:06:58
Private Sub 确认消耗_Click()
  On Error Resume Next
  Dim q
  q = DCount("*", "库存查询3", "药品ID<='" & selectstr & "'")
  frm_药品库存.药品ID = selectstr
  Forms!frm_药品分类查询1.Form.药品ID = selectstr
  Dim curdb As Database
  Set curdb = CurrentDb
   curdb.Execute "insert into 出库记录(药品ID,出库日期,药品名称,厂家,规格,有效期,药品分类,单位,出库数量) Values('" & 药品ID.Value & "','" _
  & 出库日期.Value & "','" & 药品名称.Value & "','" & 厂家.Value & "','" & 规格.Value & "','" & 有效期.Value & "','" & 药品分类.Value & "','" _
  & 单位.Value & "','" & 出库数量.Value & "')"
   MsgBox ("药品消耗成功!")
 DoCmd.Close
  'Forms!frm_药品库存.Requery
   Forms!frm_药品库存.药品ID.SetFocus
   Forms!frm_药品库存.Requery
   Forms!frm_药品分类查询1.Requery
   Forms!frm_药品分类查询1.Form.药品ID.SetFocus
   'DoCmd.GoToRecord , , "药品ID"
   DoCmd.GoToRecord acDataForm, "frm_药品库存", acGoTo, q
    '或者用这句也行: DoCmd.GoToRecord acDataForm, " Forms!frm_药品库存", "药品ID.SetFocus"
End Sub

殷小宝  发表于:2010-11-09 21:13:17
王老师,首先感谢您在百忙中抽出时间来为我详细解答。我在反思自己,为什么我没有想到这一点呢?第一,忽略了解selectstr是一个文本,我甚至将“'DoCmd.GoToRecord , , "药品ID"”写成了'DoCmd.GoToRecord , , "selectstr"”,现在明白了这句前面两个逗号指代不明,能够写明白,就要尽量写明白,后面的Record参数不会写,在这里不应用变量,即使写成了"药品ID"也没想到前面设置其为焦点的含义,只是想将焦点转移到“药品ID”上面来,才好进行写'DoCmd.GoToRecord "这个语句,还以为"药品ID"就代表"药品ID.setfocus",原来记录也可指向焦点处.第二,对DCount函数应用较少,只知道用DLookUp函数.才导致没有想出来,感谢王老师让我掌握了不少知识.非常感激.

殷小宝  发表于:2010-11-09 23:08:32

最重要一点是:先将药品ID设为焦点,然后再查询窗体。



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