【发布时间】:2020-02-15 22:22:59
【问题描述】:
我有几个交叉表查询需要计算其中的字段数。之前的工作代码没有问题。从那时起,我向交叉表添加了参数(在打开的表单上查找值),但没有其他更改。没有错误,但代码返回字段计数 = 0。 ??它事先工作得完美无缺。同样,我所做的唯一更改是将交叉表中的硬编码日期替换为表单引用,并添加了参数,以便交叉表可以是动态的。查询打开正常,没有错误,所以我很难过为什么这个改变会有所作为。
我注意到的另一件事是,在我前进到下一行之后,代码行末尾的“.Count”中的 c 更新为小写 c (.count)。我希望这仍然是一个大写字母。这是一台工作电脑,昨天它经历了很多软件更新。这可能是图书馆问题吗?
`dim n, m, p, q, a as Integer
n = db.QueryDefs("Master_Schedule_Demand_Xtab").Fields.count
m = db.QueryDefs("Production_Schedule_Future_Xtab").Fields.count
p = db.QueryDefs("Production_Schedule_PRIOR_Xtab").Fields.count
q = db.QueryDefs("Supplier_Committed_Del_Xtab").Fields.count
a = db.QueryDefs("Actual_Receipts_Xtab").Fields.count `
没有错误,只有所有值 = 0 ??我希望这些值都大于 10 以匹配交叉表中的字段/列数。 另外 - 运行代码以获取所有查询定义的结果显示如下 - 未列出字段计数?!
`Properties of Master_Schedule_Demand_Xtab
Name - Master_Schedule_Demand_Xtab
DateCreated - 10/17/2019 2:49:32 PM
LastUpdated - 10/18/2019 4:00:18 PM
Type - 16
SQL - PARAMETERS Forms!Main!MB51_Created DateTime;
TRANSFORM Sum(PO_List1_MstrSched.Scheduled_qty_) AS Qty
SELECT PO_List1_MstrSched.Material, "Master Schedule Demand" AS Type,
PO_List1_MstrSched.Short_text AS Material_Desc
FROM PO_List1_MstrSched
WHERE (((PO_List1_MstrSched.StatDelD)<#10/12/2020#))
GROUP BY PO_List1_MstrSched.Material, "Master Schedule Demand",
PO_List1_MstrSched.Short_text
PIVOT PO_List1_MstrSched.Week;
Updatable - True
Connect - [empty]
ReturnsRecords - True
ODBCTimeout - 60
RecordsAffected - 0
MaxRecords - 0
RecordLocks - 0
RecordsetType - 0
Orientation - 0
DefaultView - 2
PublishToWeb - 1
OrderByOn - False
DisplayViewsOnSharePointSite - 1
TotalsRow - False
FilterOnLoad - False
OrderByOnLoad - True
HideNewField - False
BackTint - 100
BackShade - 100
ThemeFontIndex - -1
AlternateBackThemeColorIndex - -1
AlternateBackTint - 100
AlternateBackShade - 100
ReadOnlyWhenDisconnected - False
DatasheetGridlinesThemeColorIndex - -1
DatasheetForeThemeColorIndex - -1`
【问题讨论】:
-
不熟悉 VBA,但这里有一些建议 - (a) 如果您恢复到原始代码,它是否开始工作? (b) 您可以打印原始格式的输出与其中一个字段的新格式吗?这将帮助您找出一些差距(如果有的话)。
-
不!我已恢复为原始格式,但仍无法捕获字段计数。它说零,我认为这是找不到它的默认值。
-
那么也许真的没有数据或者与数据访问相关联的东西失败了。您可以尝试使用概念验证/独立程序访问数据源并首先验证数据访问。然后您可以尝试找出代码中的问题。
-
在运行代码时,引用的表单 (
Main) 是否在 FormView 中打开?控件MB51_Created是否包含有效的日期时间值?字段的数量当然取决于该参数值。 -
是的!表格已打开。但我什至删除了变量并恢复为硬编码过滤器,我也遇到了同样的问题。
标签: vba ms-access field crosstab