gpt4 book ai didi

ms-access - Access : list query dependencies

转载 作者:行者123 更新时间:2023-12-02 23:25:19 24 4
gpt4 key购买 nike

this answer的帮助下,我创建了一个报告来列出当前数据库中的所有查询,及其输入表/查询及其输出(用于操作查询)。
我对此非常满意,直到我注意到结果中缺少一些查询。
我有点不明白为什么。
有什么线索吗?

SELECT MSysObjects.Name AS queryName, 
Mid("SelectMakTblAppendUpdateDeleteXtab 777777PassThUnion ",([msysqueries]![Flag]-1)*6+1,6) AS queryType,
src.Name1 AS [Input],
MSysQueries.Name1 AS Target,
MSysQueries.Attribute
FROM (MSysQueries INNER JOIN MSysObjects ON MSysQueries.ObjectId = MSysObjects.Id)
LEFT JOIN (SELECT * FROM MSysQueries WHERE Attribute = 5) AS src ON MSysQueries.ObjectId = src.ObjectId
WHERE (((MSysObjects.Name)>"~z") AND (MSysQueries.Attribute=1))
ORDER BY MSysObjects.Name, src.Name1

编辑:发现与所有逻辑相反,INNER JOIN MSysObjects ON MSysQueries.ObjectId = MSysObjects.Id有时不会返回它应该返回的每一行。
我检查了 MSysQueries 和 MSysObjects 并确保两侧都有相同的对象 id -2147483618,我确保 MSysQueries 有一行用于该 ObjectId,其中 Attribute=1,但是,在连接表时,该特定行的 attribute=1没有出现。很奇怪。我尝试使用内部联接,用条件替换 JOIN,在过程中添加 Val 或 CLng,没办法。我在这里迷路了。

编辑2:找到了一种使用where CStr([Id]) = CStr([ObjectId])正确“连接”两个表的方法。
但这确实没有必要!

最佳答案

我现在终于搞定了,对于那些有兴趣的人:

SELECT MSysObjects.Name AS QueryName, Nz([expression],[name1]) AS Source, 
MSysQueries.Name2 AS Alias, MSysObjects.Flags, t.Target
FROM (MSysObjects INNER JOIN MSysQueries ON MSysObjects.Id = MSysQueries.ObjectId)
LEFT JOIN (SELECT ObjectId, Name1 as Target FROM MSysQueries
WHERE (Name1 Not Like "ODBC*") AND (Attribute=1)) AS t
ON MSysObjects.Id = t.ObjectId
WHERE ((MSysQueries.Attribute=5)) OR ((MSysQueries.Name1 Like "ODBC*"));

对于 passthru 查询,我选择显示完整的 SQL 语句,当然可以进行调整。我将其用作精美报告的来源,或者将数据复制到 Excel 工作表并使用自动筛选器缩小列表范围,直到明确目标表的内容来自何处。

在报告中我使用以下函数来显示查询类型:

Function GetQueryType(Flags) as String
Select Case (Flags And 247) 'Bit And 247: to clear the Hidden flag=8
Case 0: GetQueryType = "SELECT "
Case 16: GetQueryType = "XTAB "
Case 32: GetQueryType = "DELETE "
Case 48: GetQueryType = "UPDATE "
Case 64: GetQueryType = "APPEND "
Case 80: GetQueryType = "MAKE TABLE "
Case 112: GetQueryType = "PASS THRU"
Case 128: GetQueryType = "UNION"
Case 3: GetQueryType = "Report"
Case Else: GetQueryType = "Other: " & (Flags And 247)
End Select
End Function

关于ms-access - Access : list query dependencies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25199627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com