Access 2010表单中的可编辑交叉表查询(如何改进代码)

registoni

目前,根据专家的一些建议,我尝试以一种形式提供可编辑的交叉表查询,例如用于在平面表的几列中显示值的表格(数据是各个时期的财务数据=每个财务报表项目的FFI_Period = FinStmtItem)。我首先通过从表格中将所需的值检索到表单上的未绑定字段上来对表格进行非规范化(通过recordset.findfirst方法,然后将表格字段中的值分配给未绑定的文本字段),然后将字段保存回去(通过recordset.edit /)。 add方法)以规范化的形式添加到表格中。

一段代码在我的过程中不断重复几次。这是通过对平面表进行非规范化来检索数据的示例(* PrevPerItem * X-是表单上未绑定文本字段的名称):

Set myR = CurrentDb.OpenRecordset("tbl_FFIFinancials")
myR.FindFirst ("[FFI_PERIOD] =" & intFFIPeriod1 & "And [FinStmtItem] = 1")
PrevPerItem1 = myR.Fields("Amount").Value

myR.FindFirst ("[FFI_PERIOD] =" & intFFIPeriod1 & "And [FinStmtItem] = 2")
PrevPerItem2 = myR.Fields("Amount").Value

myR.FindFirst ("[FFI_PERIOD] =" & intFFIPeriod1 & "And [FinStmtItem] = 3")
PrevPerItem3 = myR.Fields("Amount").Value

'.... [similar codes repeats here as well from No 4 throu 16]............


myR.FindFirst ("[FFI_PERIOD] =" & intFFIPeriod1 & "And [FinStmtItem] = 17")
PrevPerItem17 = myR.Fields("Amount").Value

myR.Close

Set myR = Nothing

类似的代码用于编辑和添加方法(放回归一化的数据)

 Set myR = CurrentDb.OpenRecordset("tbl_FFIFinancials")

'updating values for the previous period

MsgBox "Updating values into Database for the period - " & intPrevYear & "-Q" & byteSelectQuarter

myR.FindFirst ("[FFI_PERIOD] =" & intFFIPeriod1 & "And [FinStmtItem] = 1")
myR.Edit
myR.Fields("Amount").Value = PrevPerItem1
myR.Update

myR.FindFirst ("[FFI_PERIOD] =" & intFFIPeriod1 & "And [FinStmtItem] = 2")
myR.Edit
myR.Fields("Amount").Value = PrevPerItem2
myR.Update

myR.FindFirst ("[FFI_PERIOD] =" & intFFIPeriod1 & "And [FinStmtItem] = 3")
myR.Edit
myR.Fields("Amount").Value = PrevPerItem3
myR.Update

'....[repeating code for values No 4 though 16]

myR.FindFirst ("[FFI_PERIOD] =" & intFFIPeriod1 & "And [FinStmtItem] = 17")
myR.Edit
myR.Fields("Amount").Value = PrevPerItem17
myR.Update

myR.Close

Set myR = Nothing

我相信有一些方法可以通过使用诸如do while循环或next方法之类的快捷方法来优化代码。因为我只是vba编程的新手,所以我很难理解它的实际操作方式,并且不得不重复执行几次代码行。


更新:我尝试过尝试这一步骤来实现代码的优化,但是它重新调整了我的新自定义函数上的不匹配错误:

Dim myR As DAO.Recordset
Set myR = CurrentDb.OpenRecordset("tbl_FFIFinancials", dbOpenDynaset)

For byteItemNumber = 1 To 17 Step 1
myR.FindFirst "[FFI_PERIOD] =" & intFFIPeriod1 & "And [FinStmtItem] =" & byteItemNumber
Me.MyFieldName(Name).Value = myR.Fields("Amount").Value

Next byteItemNumber

....我的新自定义函数引用当前表单上的文本字段名称。

Function MyFieldName(Name As Field)
Dim strName As String

srtName = "PrevPerItem" & byteItemNumber
Name.Name = strName

End Function
registoni

在其他地方找到了解决方案。通常,它指出以下内容:表单上的字段可以称为1。Me.YourTextboxName.Value = myR.Fields(“ Amount”)。Va lue

2. Me(文本框).Value = myR.Fields(“金额”).Value

如果您有一系列文本框,并且要动态分配值(例如,您有17个名为TxtBox1,TxtBox2和TxtBox3 ... TextBox17的文本框),则第二个很有用

for i = 1 to 17    Me("TxtBox" & i).value=myR.Fields("Amount").Value
next i 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将查询结果插入MS Access 2010中的表

来自分类Dev

从Access VBA中的表查询日期

来自分类Dev

在Access 2010中锁定表

来自分类Dev

Access 2010限制查询结果

来自分类Dev

查询以从Access中的多个表中删除

来自分类Dev

如何在Access表单中添加网格?

来自分类Dev

在MS Access 2010中对表单上的记录进行排序

来自分类Dev

MS ACCESS交叉表数据

来自分类Dev

如何在数字格式和Access交叉表查询中显示小数点后两位?

来自分类Dev

MS Access数据库(2010)如何从查询设计器创建临时表/过程/视图

来自分类Dev

Access和/或SQL中的交叉表查询以完成表组合

来自分类Dev

Access 2010参数查询-AND OR

来自分类Dev

MS Access 2010在查询中的运行总计

来自分类Dev

基于转换表的Access 2010更新查询

来自分类Dev

在MS ACCESS 2010中创建表-使用Oracle SQL查询

来自分类Dev

查询以从Access中的多个表中删除

来自分类Dev

如何在数字格式和Access交叉表查询中显示小数点后两位?

来自分类Dev

在Access 2010表单中显示文件路径

来自分类Dev

在Access 2010中,当基于日期执行查询时,如何在查询框中显示今天的日期

来自分类Dev

在Access 2010中停止具有多个用户的子表单重新查询

来自分类Dev

在Access 2010中使用表单定义查询中的字段

来自分类Dev

选择查询在Access2010中工作正常,但不能在C#代码中工作

来自分类Dev

在Access上建立交叉表重新查询的问题

来自分类Dev

使用查询提供Access表单

来自分类Dev

Access 2010表单查询

来自分类Dev

如何在 Access 中关闭表单 onclick

来自分类Dev

DLookup:MS Access VBA 中的查询与表?

来自分类Dev

日期数据不会从制作表查询 (Access) 中的表单填充

来自分类Dev

如何防止用户在 MS ACCESS 2013 中删除/编辑或添加子表单上的记录

Related 相关文章

  1. 1

    将查询结果插入MS Access 2010中的表

  2. 2

    从Access VBA中的表查询日期

  3. 3

    在Access 2010中锁定表

  4. 4

    Access 2010限制查询结果

  5. 5

    查询以从Access中的多个表中删除

  6. 6

    如何在Access表单中添加网格?

  7. 7

    在MS Access 2010中对表单上的记录进行排序

  8. 8

    MS ACCESS交叉表数据

  9. 9

    如何在数字格式和Access交叉表查询中显示小数点后两位?

  10. 10

    MS Access数据库(2010)如何从查询设计器创建临时表/过程/视图

  11. 11

    Access和/或SQL中的交叉表查询以完成表组合

  12. 12

    Access 2010参数查询-AND OR

  13. 13

    MS Access 2010在查询中的运行总计

  14. 14

    基于转换表的Access 2010更新查询

  15. 15

    在MS ACCESS 2010中创建表-使用Oracle SQL查询

  16. 16

    查询以从Access中的多个表中删除

  17. 17

    如何在数字格式和Access交叉表查询中显示小数点后两位?

  18. 18

    在Access 2010表单中显示文件路径

  19. 19

    在Access 2010中,当基于日期执行查询时,如何在查询框中显示今天的日期

  20. 20

    在Access 2010中停止具有多个用户的子表单重新查询

  21. 21

    在Access 2010中使用表单定义查询中的字段

  22. 22

    选择查询在Access2010中工作正常,但不能在C#代码中工作

  23. 23

    在Access上建立交叉表重新查询的问题

  24. 24

    使用查询提供Access表单

  25. 25

    Access 2010表单查询

  26. 26

    如何在 Access 中关闭表单 onclick

  27. 27

    DLookup:MS Access VBA 中的查询与表?

  28. 28

    日期数据不会从制作表查询 (Access) 中的表单填充

  29. 29

    如何防止用户在 MS ACCESS 2013 中删除/编辑或添加子表单上的记录

热门标签

归档