Access : 选中行
Access : 选中行
Dim aSelTop As Long, aSelCount As Long
Private Sub 子窗体_Exit(Cancel As Integer)
aSelTop = Me.子窗体.Form.SelTop '从第n行 开始选中
aSelCount = Me.子窗体.Form.SelHeight '共选中x行
End Sub
Private Sub 追加_Click()
Dim i As Long, aControls As Controls, aControl As Control
Set aControls = Me.临时表子窗体.Form.Controls
Me.临时表子窗体.SetFocus
For i = 0 To aSelCount - 1 '逐行读取
Me.子窗体.Form.SelTop = aSelTop + i
If Me.临时表子窗体.Form.NewRecord <> True Then
DoCmd.RunCommand acCmdRecordsGoToNew '定位到 新增行
End If
For Each aControl In aControls
If aControl.ControlType <> acLabel Then
aControl.Value = Me.子窗体.Form.Controls(aControl.Name).Value '逐个字段赋值
End If
Next aControl
Me.临时表子窗体.Form.Recalc
Next
End Sub
郭少锋
创建 2025-01-08 15:42:05
Access
Access : For 循环 遍历数组
Access : For 循环 遍历数组
在VBA中,你可以使用For循环来遍历数组。以下是一个简单的例子,展示了如何在Access VBA中创建一个数组,并使用For循环来遍历它。
Sub LoopThroughArray()
Dim arr() As Variant
Dim i As Integer
arr = Array("Apple", "Banana", "Cherry") ' 初始化数组
For i = LBound(arr) To UBound(arr) ' 使用For循环遍历数组
Debug.Print arr(i) ' 输出数组元素到立即窗口
Next i
End Sub
在这个例子中,LBound函数用于获取数组的最小索引(即0,除非数组是以非零为起始的下标),而UBound函数用于获取数组的最大索引。For循环会在这个范围内迭代,并且Debug.Print语句用于将数组的当前元素打印到VBA编辑器的Immediate窗口(可以通过按Ctrl + G在VBA编辑器中打开)。
郭少锋
创建 2025-01-07 17:36:18
Access
Access : 取得 筛选条件
Access : 取得 筛选条件
'子窗体的筛选条件 发生变化,填写到 主窗体的【筛选条件】文本框
Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer)
Me.Parent!筛选条件.Value = Me.Form.Filter
End Sub
郭少锋
创建 2025-01-06 18:07:13
Access
Access : 代码分行录入
Access : 代码分行录入
Public Function ReportSheet(rpt As Report, _
ByVal RowsOfPage As Integer, _
Optional ByVal Style As Integer = 0, _
Optional ByVal HasColumnHeader As Boolean = True)
郭少锋
编辑 2025-01-03 17:19:16
创建 2025-01-03 15:48:09
Access
Access : 报表:显示隐藏 分页符
Access : 报表:显示隐藏 分页符
Option Compare Database
Option Explicit
Dim 当前行号 As Long
Dim 每页行数 As Integer
Private Sub Report_Open(Cancel As Integer)
DoCmd.Maximize
End Sub
Private Sub 主体_Format(Cancel As Integer, FormatCount As Integer)
每页行数 = 3
当前行号 = 当前行号 + 1
If 当前行号 > 每页行数 Then
Me.分页符1.Visible = True: 当前行号 = 0
Else
Me.分页符1.Visible = False
End If
End Sub
郭少锋
创建 2025-01-03 17:18:55
Access
Access : ForceNewPage 强制分页
Access : ForceNewPage 强制分页
Section.ForceNewPage【强制分页】
使用 ForceNewPage 属性可以指定窗体节 (详细信息、页脚) 还是报表节 (页眉、详细信息、页脚) 打印在单独的页面上,而不是在当前页上打印。 可读/写 Byte 类型。
例如,可能将报表的最后一页定义为订单。 如果报表页脚的 ForceNewPage 属性设置为“节前”,则订单总打印在新的一页。
ForceNewPage 属性不适用于页面页眉或页面页脚。
ForceNewPage 属性使用下列设置:
0:无,(默认) 当前部分 (要为其设置属性) 部分打印在当前页上。
1:节前,当前节在新页的顶部打印。
2:节后,紧跟当前节的下一节在新页的顶部打印。
3:节前和节后,当前节在新页的顶部打印,下一个节也将在另一新页的顶部打印。
以下示例返回“按日期销售额”报表的详细信息部分的 ForceNewPage 属性设置,并将其分配给 变量intGetVal。
Dim intGetVal As Integer
intGetVal = Reports![Sales By Date].Section(acDetail).ForceNewPage
----------
Access中的ForceNewPage属性用于控制报表或窗体节的分页行为。该属性可以指定窗体节(如主体节、页脚)是否在新的一页中打印,而不是在当前页继续打印。ForceNewPage属性适用于报表的主体节,但不适用于页面页眉或页面页脚12。
使用方法
1. 在报表设计中使用ForceNewPage属性:
打开报表设计视图。
选择需要设置分页的节(如主体节)。
在属性的设置中,找到ForceNewPage属性并设置为True或False,以控制是否在新的一页打印。
2. 在代码中动态设置ForceNewPage属性:
在报表的代码界面中,可以通过编写VBA代码来动态控制分页行为。例如,可以在报表的Format事件中编写如下代码:
这段代码会在每打印完指定行数后【强制分页】。
Private Sub 主体_Format(Cancel As Integer, FormatCount As Integer)
If 序号 Mod 每页行数 = 0 Then
Me.主体.ForceNewPage = True
Else
Me.主体.ForceNewPage = False
End If
End Sub
以下是一个简单的示例代码,演示如何在报表的Format事件中设置ForceNewPage属性:
这段代码会在每打印完指定行数后强制分页,否则在当前页继续打印。
Private Sub 主体_Format(Cancel As Integer, FormatCount As Integer)
If Me.Section(acDetail).ForceNewPage = 1 Then
Me.Section(acDetail).ForceNewPage = 0 '在当前页继续打印
ElseIf row Mod 每页行数 = 0 Then '每打印完指定行数后强制分页
Me.Section(acDetail).ForceNewPage = 1 '新一页打印
End If
End Sub
郭少锋
创建 2025-01-03 15:46:28
Access
Access : Access 包含文字
Access : Access 包含文字
在 Microsoft Access VBA 中,通常你会使用字符串函数来判断文本是否包含某些文字或字符。常用的函数有 InStr,它可以帮助你判断一个字符串中是否包含另一个子字符串。
使用 InStr 函数
InStr 是 VBA 中用来查找子字符串的一个函数。如果在一个字符串中找到了另一个子字符串,它会返回该子字符串的起始位置;如果没有找到,则返回 0。
语法:
InStr([start], string1, string2, [compare])
start:可选,指定搜索开始的位置,默认为 1。
string1:要搜索的字符串。
string2:要查找的子字符串。
compare:可选,指定比较方式(默认是二进制比较)。可以是 vbTextCompare(忽略大小写)或 vbBinaryCompare(区分大小写)。
示例代码
以下是一些常见的示例,展示如何使用 InStr 来判断一个字符串是否包含另一个字符串。
示例 1:判断字符串是否包含某个单词
假设你有一个字符串 "Hello, welcome to Access VBA",你想判断是否包含 "Access" 这个词。
Dim str As String
Dim searchTerm As String
str = "Hello, welcome to Access VBA"
searchTerm = "Access"
If InStr(1, str, searchTerm, vbTextCompare) > 0 Then
MsgBox "包含文字: " & searchTerm
Else
MsgBox "不包含文字: " & searchTerm
End If
解释:
InStr(1, str, searchTerm, vbTextCompare) 返回 "Access" 在字符串 str 中的位置。如果返回值大于 0,说明包含该文字。
vbTextCompare 参数表示忽略大小写进行比较。
示例 2:查找不区分大小写
如果你希望查找字符串时不区分大小写,可以使用 vbTextCompare:
Dim str As String
Dim searchTerm As String
str = "This is an Example of VBA"
searchTerm = "example"
If InStr(1, str, searchTerm, vbTextCompare) > 0 Then
MsgBox "找到匹配项!"
Else
MsgBox "没有找到匹配项"
End If
这里,InStr 将不区分大小写查找 "example"。
示例 3:查找子字符串的位置
如果你只想获取子字符串在字符串中的位置,可以直接使用 InStr 并处理其返回值。例如,找出 "Access" 在字符串中的位置:
Dim str As String
Dim position As Integer
str = "Hello, welcome to Access VBA"
position = InStr(1, str, "Access", vbTextCompare)
If position > 0 Then
MsgBox "Access 位置: " & position
Else
MsgBox "未找到 Access"
End If
解释:
InStr(1, str, "Access") 返回 "Access" 在 str 中的起始位置。如果返回 0,则表示没有找到。
小结
使用 InStr 函数可以方便地检查一个字符串中是否包含另一个字符串。
InStr 返回的是子字符串的起始位置,如果返回 0,则表示未找到子字符串。
可以通过设置 compare 参数来控制是否忽略大小写。
郭少锋
创建 2024-12-30 17:53:31
Access
Access : Access 设置子窗体 筛选器条件
Access : Access 设置子窗体 筛选器条件
'设置子窗体的筛选器条件
Me.frmChild.Form.Filter = strWhere
'应用筛选
Me.frmChild.Form.FilterOn = True
郭少锋
创建 2024-12-30 12:08:06
Access
Access : Access 隐藏 工具栏
Access : Access 隐藏 工具栏
使用Access的DoCmd对象来控制用户界面
DoCmd.SelectObject acForm, "230 价格库", True '在【导航窗格】中 选中名为【230 价格库】的【窗体】
DoCmd.ShowToolbar "Ribbon", acToolbarYes ' 显示工具栏,不用修改
DoCmd.ShowToolbar "Ribbon", acToolbarNo ' 隐藏工具栏
DoCmd.RunCommand acCmdWindowHide ' 隐藏侧边栏
If Me.Command8.Caption = "查看系统" And Me.Text9.Value = "xxxx" Then
DoCmd.SelectObject acForm, , True
Me.Command8.Caption = "隐藏系统"
DoCmd.RunCommand acCmdDatabaseWindow
DoCmd.SelectObject acTable, , True
DoCmd.RunCommand acCmdDesignView
Exit Sub
Else
MsgBox ("密码错误")
End If
If Me.Command8.Caption = "隐藏系统" Then
DoCmd.SelectObject acForm, , True
DoCmd.RunCommand acCmdWindowHide
Me.Command8.Caption = "查看系统"
Exit Sub
End If
隐藏 状态栏
打开Access数据库并进入设计视图。
点击“选项”按钮,在弹出的菜单中选择“当前数据库”。
在“当前数据库”选项卡下,找到“导航选项”部分。
在“导航选项”部分中,取消选中“显示状态栏”复选框。
点击“确定”按钮保存更改并关闭选项对话框。
返回主视图,你将发现状态栏已经被隐藏了。
郭少锋
编辑 2024-12-27 11:51:57
创建 2024-12-27 11:31:23
Access
Access : Access 子窗体 定位记录
Access : Access 子窗体 定位记录
Me!Sub1.Form.Recordset.MoveNext
Forms![220 单据管理]!Sub1.Form.Recordset.MoveNext
MoveFirst ' 移动到 第一条记录
MoveNext ' 移动到 下一条记录
----------------------------------------------------------------------------------------------------
' 假设子窗体名为 ChildForm,需要定位的记录在字段 FieldName 中的值为 ValueToFind
Dim subformControl As Form
Dim subform As Form
Dim rs As DAO.Recordset
Set subformControl = Me!ChildForm
Set subform = subformControl.Form
Set rs = subform.RecordsetClone
rs.MoveFirst ' 移动到第一条记录
Do While Not rs.EOF ' 循环直到找到匹配的记录或到达记录集的末尾
If rs!FieldName = ValueToFind Then ' 定位到子窗体中匹配的记录
subformControl.SetFocus
subform.Bookmark = rs.Bookmark
Exit Do
End If
rs.MoveNext
Loop
' 清理
rs.Close
Set rs = Nothing
Set subform = Nothing
Set subformControl = Nothing
郭少锋
编辑 2024-12-25 17:21:44
创建 2024-12-25 17:17:22
Access