77范文网 - 专业文章范例文档资料分享平台

Access - VBA编程(使用技巧大全)[1](4)

来源:网络收集 时间:2020-06-07 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

ACCESS-VBA编程

Me.[出生日期] = \身份证号], 7, 2) & \身份证号], 9, 2) & \身份证号], 11, 2)

ElseIf Length = 18 Then

Me.[性别] = IIf(Val(Mid(Me.身份证号, 17, 1)) / 2 = Int(Val(Mid(Me.身份证号, 17, 1)) / 2), \女\男\

Me.[出生日期] = Mid([身份证号], 7, 4) & \身份证号], 11, 2) & \身份证号], 13, 2) Else

MsgBox \身份证号错误!\

End If

End If

两行代码打开另一数据库 Private Sub 命令4_Click() On Error GoTo Err_命令4_Click Dim strDb As String strDb = \

SendKeys \Exit_命令4_Click: Exit Sub

Err_命令4_Click:

MsgBox Err.Description Resume Exit_命令4_Click End Sub

实现打开外部数据库中的报表。

Private Declare Function apiSetForegroundWindow Lib \ Alias \ (ByVal hwnd As Long) _ As Long

Private Declare Function apiShowWindow Lib \ Alias \ (ByVal hwnd As Long, _ ByVal nCmdShow As Long) _ As Long

Private Const SW_MAXIMIZE = 3 Private Const SW_NORMAL = 1

Function fOpenRemoteReport(strMDB As String, strReport As String, _ Optional intView As Variant) _ As Boolean

' strMDB: 外部数据库名称(含路径) ' strReport: 报表名称 ' intView: 报表的打开方式

Dim objAccess As Access.Application

16

ACCESS-VBA编程

Dim lngRet As Long

On Error GoTo fOpenRemoteReport_Err

If IsMissing(intView) Then intView = acViewPreview

If Len(Dir(strMDB)) > 0 Then

Set objAccess = New Access.Application With objAccess

lngRet = apiSetForegroundWindow(.hWndAccessApp) lngRet = apiShowWindow(.hWndAccessApp, SW_NORMAL) ' 第一次调用ShowWindow似乎不做任何事情

lngRet = apiShowWindow(.hWndAccessApp, SW_NORMAL) .OpenCurrentDatabase strMDB

.DoCmd.OpenReport strReport, intView Do While Len(.CurrentDb.Name) > 0 DoEvents Loop End With End If

fOpenRemoteReport_Exit: On Error Resume Next objAccess.Quit

Set objAccess = Nothing Exit Function

fOpenRemoteReport_Err:

fOpenRemoteReport = False Select Case Err.Number Case 7866:

' mdb 已经被用独占方式打开

MsgBox \该数据库:\

vbCrLf & \已经被用独占方式打开!\ & vbCrLf & \请重新用共享方式打开,再试一次!\ vbExclamation + vbOKOnly, \不能打开数据库\ Case 2103:

' 报表不存在

MsgBox \在这个\数据库中不存在该报表:\ vbCrLf & vbCrLf , _

vbExclamation + vbOKOnly, \报表不存在\ Case 7952:

' 用户关闭了这个 mdb fOpenRemoteReport = True Case Else:

MsgBox \错误#: \ vbCritical + vbOKOnly, \运行时错误\ End Select

Resume fOpenRemoteReport_Exit End Function

17

ACCESS-VBA编程

为列表框定数据源 Dim str3 As String

str3 = \jhd_mx_jiage.wp_leibie AS 类别, jhd_mx_jiage.wp_migceg AS 名称, jhd_mx_jiage.wp_xighao AS 型号, jhd_mx_jiage.jhmx_danwei AS 单位, jhd_mx_jiage.jhmx_danjia AS 单价 FROM jhd_mx_jiage \ Me.Listjhwp.RowSource = str3 Me.Listjhwp.Requery

为组合框、子窗体设置数据源

下面的示例将组合框的 RowSourceType 属性设为“Table/Query”,然后将 RowSource 属性设为“雇员列表”查询。

Forms!Employees!cmboNames.RowSourceType = \Forms!Employees!cmboNames.RowSource = \ 一:

Dim str1 As String

str1 = \\ Me.Child6zy.Form.RecordSource = str1 Me.Child6zy.Requery 二:

子窗体.FORM.recordsourse=\ziyuag.zy_daihao, ziyuag.zy_mima,ziyuag.zy_ziwu,ziyuag.zy_xigmig FROM ziyuag \ 三:

Private Sub Command38_Click() Dim sjy As String Dim pd As Integer pd = True

sjy = \病历明细表.* FROM 病历明细表\If Not IsNull(Text0) Then If pd Then

sjy = sjy & \姓名 like '\ pd = False Else

sjy = sjy & \姓名 like '\ End If End If

If Not IsNull(Text1) And Not IsNull(Text2) Then

sjy = sjy & \时间 between #\ pd = False Else

str2 = str2 & \时间 between #\End If

If Not IsNull(Text3) Then If pd Then

sjy = sjy & \姓名 like '\ pd = False Else

sjy = sjy & \姓名 like '\ End If

18

ACCESS-VBA编程

End If

Me.子窗体.RowSource = sjy Me.Requery End Sub

为主窗体、报表设数据源

使用 RecordSource 属性可以指定窗体或报表的数据源。String 型,可读写。 一:

Dim sjy As String

sjy = \名单.* FROM 名单\姓名 like '*\Me.RecordSource = sjy Requery 二:

me.RecordSource = \名单\

用其他ACCESS的表作为本ACCESS 窗体的数据源 来源:ACCESS中国 Trynew

在Sql语句中的表名前加上数据库名就行了,下面语句动态引用当前目录的另一MDB文件的表做数据源: Private Sub Form_Load()

Me.RecordSource = \表1.* FROM [\表1;\End Sub

插入/删除一条记录

新建:DoCmd.RunCommand acCmdRecordsGoToNew

删除:DoCmd.RunCommand acCmdDeleteRecord

用代码实现对数据修改或增加的取消

在窗体中修改数据时,关闭窗体,数据已经修改,这样很容易产生错误数据. 可采用如下方法解决: 在窗体更新前判断:

Private Sub FORM_BeforeUpdate(Cancel As Integer)

If MsgBox(\保存吗?\ Cancel = True End If End Sub

' 去除系统的报错信息:

Private Sub FORM_Error(DataErr As Integer, Response As Integer) Response = acDataErrContinue End Sub

检查数据是否被修改,无则退出,有则询问是否保存

'在窗体的字段的“属性”“事件”“更新后”的右边输入“=NoAllowSave()”, '在窗体的“打开”事件中代码“allowSave = False” '定义模块

Option Compare Database Option Explicit

Public allowSave As Boolean Public Function NoAllowSave() allowSave = True

19

ACCESS-VBA编程

End Function

“退出”按钮的单击事件代码 If allowSave = True Then

If MsgBox(\当前数据已经被修改,是否保存?\请选择...\ Else

Me.Undo End If End If

DoCmd.Close 定义记录集

Dim rst As New ADODB.Recordset 打开记录集

rst.Open \语句, 关键字 FROM 结果语句表\adLockOptimistic

两子窗体之间字段赋值:

Forms!aaa!bbb.Form!bb = Forms!aaa!ccc.Form!cc

确定所显示的当前记录的记录编号。

下面的示例显示如何使用 Currentrecord 属性来确定所显示的当前记录的记录编号。在通用过程 Currentformrecord 中将当前记录的编号值赋给变量 Lngrecordnum。

Sub CurrentFormRecord(frm As Form) Dim lngrecordnum As Long

lngrecordnum = frm.CurrentRecord 'CurrentRecord是当前记录号 End Sub

读取最后一条记录

dlast(\字段名\表名\

在字段默认值中用此函数能使该字段的新纪录显示上一条记录该字段的值 怎样使窗体一打开就定位到指定记录上

定义了一个变量lngbh,要窗体打开时显示ID=Lngbh的这条记录。

DoCmd.OpenForm \使用API函数sendmessage,获得光标所在行和列。

Sub getcaretpos(byval TextHwnd&,LineNo&,ColNo&)

注释:TextHwnd为TextBox的hWnd属性值, LineNo为所在行数,ColNo为列数 dim I&,j&,k& 注释:获取起始位置到光标所在位置字节数 I=SendMessage(TextHwnd,&HB0&,0,0) j=I/2^16 注释:确定所在行 LineNo=SendMessage(TextHwnd,&HC9&,j,0)+1 注释:确定所在列

k=SendMessage(TextHwnd,&HBB&,-1,0) ColNo=j-k+1 End sub

如何在打开窗体时自动到相应记录

用法:DoCmd.RunCommand acCmdRecordsGoToNew acCmdRecordsGoToFirst 移到第一条记录 acCmdRecordsGoToLast 移到最后一条记录 acCmdRecordsGoToNew 新增一条记录 acCmdRecordsGoToNext 移到下一条记录

acCmdRecordsGoToPrevious 移到上一条记录

20

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Access - VBA编程(使用技巧大全)[1](4)在线全文阅读。

Access - VBA编程(使用技巧大全)[1](4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/1098440.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: