Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access开发平台

变速箱你可能会碰到的问题:整机库存月结模块数据的正确传递

时 间:2012-08-09 02:44:14
作 者:七夜   ID:16896  城市:厦门
摘 要:变速箱整机库存月结值的正确传递
正 文:

关于变速箱的第一个难点

整机库存月结表的修改和删除功能之间的数据传递

虽然 老师已经在Acces开发平台--数值型变量在修改与删除功能中的使用方法\数字型变量用法http://www.accessoft.com/article-show.asp?id=3318中解释了这节难点的操作,但是在实际过程中我还是在这里耽误了很长时间,主要是老师有一句话讲的比较模拟两可,

进入child主窗体的第一个字段获得焦点事件代码区
将这段里面的selectstr   改为NumSelectID

 在以往的数据记录传递我们使用的都是selectstr 但在这一个模块中就行不通了,数据间的传递必须要通过自动编号的主键ID来进行数据传递。而selectstr是我们在模块中定义的为string型的变量,是不能够接受来自主键ID的值的,主键ID的值是long型,所以在定义的时候要在模块中重新定义一个新的接受数值型数据传递的变量NumSelectID 

可能老师觉得这里比较简单,所以没有比较详细的教程,我是因为在这里耽误了两个晚上才解决了问题,刚好在群里有看到也有人碰到了我类似的问题,就擅自对老师原有的教程进行一个补充,望后来人少走弯路。

 

'在模块中定义数值型变量
Public NumSelectID As Long

进入整机库存月结修改窗体的加载事件代码,代码如下:

Private Sub Form_Load()
    Me.RecordSource = "Select * FROM tblZjkcyj Where Id =
'" & selectstr & "'"
End Sub

修改方法,将上面红色部分全部改为这里的蓝色  " & NumSelectID

这里之所以要吧红色的那么多的标点更改为蓝色这么少的标点,实际上是VBA的数据类型不一样,用法也不一样的原因。

进入child主窗体的第一个字段获得焦点事件代码区
将这段里面的selectstr   改为NumSelectID

基础窗体一定要有ID的这个字段,我的之前没有添加这个字段,错误就错误在这里,另外获得焦点时间不在是【整机名称】文本框了,而是【ID】这个控件了。

错误代码:

Private Sub 整机名称_GotFocus()

On Error GoTo Err_整机名称_GotFocus:

NumSelectID = Me.ID

Forms!usysfrmMain!labFind.Tag = 1

Forms!usysfrmMain!btnEdit.Tag = 999

Exit_整机名称_GotFocus:

Exit Sub

Err_整机名称_GotFocus:

Resume Exit_整机名称_GotFocus

 

End Sub

若使用错误代码,你必须双击整机名称这个字段,使得光标在整机名称里面变得闪烁才可以使得整机名称真正获得焦点,才能够进行ID的值赋值给NumSelectID

而这样的功能肯定不是我们希望的,我们希望的是直接单击某一行的任何一个地方都使得NumSelectID能够正确赋值。这里用到了一个集成到平台里的函数 selectrecord(),在变速箱的开发平台上,这个函数已经被老师们封装到我们看不到的集成函数中了,而这个函数实际上我们在VBA入门教程中有见过,代码是如下部分:

 
Function selectRecord()
    On Error GoTo Err_selectRecord:
'  鼠标单击时选定整行记录
    DoCmd.RunCommand acCmdSelectRecord
Exit_selectRecord:
    Exit Function
Err_selectRecord:
    Resume Exit_selectRecord
End Function

其功能据我推测应该是不管你选择的是该行记录的哪个字段,此函数都能使得记录的第一列获得焦点,从而解决了我们随便单击某行均能正确传递所选记录的目的。

在该整机库存月结模块中,在窗体的成为当前事件中使用了平台的这个集成函数= selectrecord(),所以无论我们选择哪一行,当该行变色的时候,该行的第一列已经获得了焦点,所以以上红色的这段以整机名称获得焦点事件的代码应该改为以ID文本框获得焦点事件:

正确代码如下

Private Sub ID_GotFocus()

On Error GoTo Err_ID_GotFocus:

NumSelectID = Me.ID

Forms!usysfrmMain!labFind.Tag = 1

Forms!usysfrmMain!btnEdit.Tag = 999

Exit_ID_GotFocus:

Exit Sub

Err_ID_GotFocus:

Resume Exit_ID_GotFocus

 

End Sub

至此,功能实现。希望后来人少走弯路。



Access快速开发平台QQ群 (群号:321554481)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助