Access交流中心

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

帮忙分析理解一下代码!谢谢!

华  发表于:2010-07-16 17:23:31  
复制

请教高帮忙分析理解一下VBA代码.只有分析蓝色部分就可以了.谢谢!

 

第一段:

Option Compare Database
Option Explicit

Private Sub Form_Open(Cancel As Integer)
    Me.Caption = Me.OpenArgs
End Sub
Private Sub 预览_Click()
    If IsNull([开始日期]) Or IsNull([结束日期]) Then
        MsgBox "您必须输入开始日期和终止日期。"
        DoCmd.GoToControl "开始日期"
    Else
        If [开始日期] > [结束日期] Then
            MsgBox "截止日期必须大于开始日期。"
            DoCmd.GoToControl "开始日期"
        Else
            Me.Visible = False
        End If
    End If
End Sub

 

第二段:

Option Compare Database
Option Explicit

Private Sub Report_NoData(Cancel As Integer)
    MsgBox "没有此报表的数据。取消报表..."
    Cancel = -1
End Sub

Private Sub Report_Close()
    DoCmd.Close acForm, "报表日期范围"
End Sub

Private Sub Report_Open(Cancel As Integer)
    DoCmd.OpenForm "报表日期范围", , , , , acDialog, "ENT(DATE)"
    If Not IsLoaded("报表日期范围") Then
        Cancel = True
    End If
End Sub

 

第三段:

Option Compare Database
Option Explicit

Function IsLoaded(ByVal strFormName As String) As Boolean
 ' 如果指定窗体在窗体视图或数据表视图中打开,返回 True。
   
    Const conObjStateClosed = 0
    Const conDesignView = 0
   
    If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> conObjStateClosed Then
        If Forms(strFormName).CurrentView <> conDesignView Then
            IsLoaded = True
        End If
    End If
   
End Function


 

 

Top
萧云 发表于:2010-07-17 08:12:16

看来 你要好好补一下VB语言基础了。

 

 

 

针对你的上述代码简要介绍:

 

Option Compare Database 用于声明字符串比较时所用的缺省比较方法是根据数据库的国别 ID 确定的排序级别进行比较,它只能在 Microsoft Access 中使用。

 

Option Explicit  用于在文件级强制对该文件中的所有变量进行显式声明,默认设置将是 Option Explicit On 。

 

Form_Open 窗体的打开时触发的事件。

 

属性 Visible = False 代表控件或窗体 当前隐藏。

 

Report_NoData 报表中没有数据时所触发的事件。

 

Report_Close 报表关闭时所触发的事件。

 

Report_Open 报表打开时所触发的事件。

 

Function IsLoaded(ByVal strFormName As String) As Boolean  程序设计者自己编写的一个函数用来判断 窗体或报表是否已经加载,返回 true 则表示已经加载,返回 false 则表示没有加载(也可以理解没有打开),使用时调用IsLoaded("窗体名称或报表名称") 即可。

 

DoCmd.OpenForm 是一个打开窗体的宏操作,根据后面的参数可以实现打开指定名称的窗体。

 

 

如果还是理解不了,那么还是找一本参考书查阅一下为好。



华 发表于:2010-07-17 10:34:42

谢谢萧云.

因为英语基础差,之前有看过一些VB之类的书,但是很少用到工作中去,所以看过即忘,处在半知不解的状态.能介绍一本学习ACCESS的书吗?



萧云 发表于:2010-07-18 10:55:42

本站专家会员中有不少写过关于ACCESS的书,网上也能搜出很多。

这些书不一定是万能的,不可能将你所关心的所有问题详细解释,但是这些书往往暗含着如何看待问题和解决问题的方法。关键还是看你自己思想。

 

但有两本书你是必须要看的,一本是是VB语言基础(这方面的资料网上最多),另一本就是ACCESS联机文档(也称帮助文档);这两本书都不需要你单独花钱购买就能看到的。

 

注意:要学会看书的方法,还要多作实践。

 

 

以上是本人的建议,希望对你有益。

 



华 发表于:2010-08-25 14:42:32
非常感谢!

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