我是新來的VBA宏。任何想法如何檢查一個表是否存在? 我已經搜索過以前的帖子,但沒有得到明確的解決方案。
回答
設置對Microsoft Access 12.0對象庫的引用允許我們使用DCount測試表是否存在。
Public Function ifTableExists(tblName As String) As Boolean
If DCount("[Name]", "MSysObjects", "[Name] = '" & tblName & "'") = 1 Then
ifTableExists = True
End If
End Function
此方法的問題在於,對於非工作後端的鏈接表,它將返回True。使用DCount會慢很多,但更可靠。 – 2013-01-15 10:46:10
另一個問題是,它似乎也發現窗體和報告... ifTableExists(「myFormName」) 返回true – Peter 2015-07-29 21:25:03
謝謝你的回答。我知道dCount函數,但不知道如何向它發送**變量**(tableName)。謝謝。一個可能導致錯誤的小問題:您每次都直接更改返回的值。你應該做的是'dim b as Boolean b = False If ... b = True End If ifTableExists = b End Function' – MJH 2015-11-29 11:02:34
Exists = IsObject(CurrentDb.TableDefs(tablename))
我該如何使用它? 我像這樣使用, 已存在=則IsObject(CurrentDb.TableDefs( 「&ConctNmeforDB&」)) MSGBOX已存在 之後,我得到了運行時錯誤的3265項此集合中沒有找到。 – Karthik 2010-07-28 10:36:30
實際上,你不能單獨使用它。它必須包裝在錯誤處理程序中,以便在遇到錯誤3265時返回false。請參閱http://stackoverflow.com/questions/2985513/check-if-access-table-exists/2992743#2992743 3種不同的實現TableExists()函數。 – 2010-07-30 18:28:18
訪問具有某種系統表You can read about it a little here你可以解僱如下因素查詢,看是否存在(1 =存在,0 =它不;))
SELECT Count([MSysObjects].[Name]) AS [Count]
FROM MSysObjects
WHERE (((MSysObjects.Name)="TblObject") AND ((MSysObjects.Type)=1));
這將錯過鏈接表,type = 4。 – Fionnuala 2010-07-28 10:09:06
這不是一個新問題。我在comments in one SO post中添加了它,並在另一篇文章中發佈了my alternative implementations。第一篇文章中的評論實際上闡明瞭不同實現之間的性能差異。
基本上,最快的工作取決於你使用的數據庫對象。
我知道這個問題已經回答了,但我發現,現有的答案是無效的:
他們將返回True以鏈接表與非工作後端。
使用DCount可能會慢很多,但更可靠。
Function IsTable(sTblName As String) As Boolean
'does table exists and work ?
'note: finding the name in the TableDefs collection is not enough,
' since the backend might be invalid or missing
On Error GoTo hell
Dim x
x = DCount("*", sTblName)
IsTable = True
Exit Function
hell:
Debug.Print Now, sTblName, Err.Number, Err.Description
IsTable = False
End Function
- 1. MS Access查詢循環宏
- 2. 如何檢查電子郵件已經存在於在MS Access登記表2007
- 3. MS ACCESS,VB將外部MS Access表導入SQL服務器表
- 4. VB 2010 MS ACCESS datetime
- 5. 檢查MS Access數據庫表是否存在創建它
- 6. 如何在VB宏
- 7. 語法錯誤VB中的MS-Access查詢(但不是在Ms Access中)
- 8. MS Access參數化查詢VB
- 9. 在MS Access中檢查現有的已保存查詢
- 10. 如何在MS Access
- 11. 如何在MS Access
- 12. MS Access:我如何知道在哪裏使用表格,查詢,宏等?
- 13. MS-Access在查詢窗口中打開VB構建的查詢
- 14. 如何使用C#創建MS Access宏?
- 15. 如何從python運行MS Access宏
- 16. 檢查時差,MS Access
- 17. MS Access SQL代碼檢查
- 18. MS Access查詢哪裏不存在
- 19. 如何在MS-Word宏中檢查段落是否在表格中?
- 20. 在VB 2008中查詢MS Access數據庫
- 21. 在MS Access上保存臨時表格
- 22. 插入宏後的MS Access
- 23. MS Access VBA/SQL檢查任何兒童
- 24. 如何檢查MS Access數據庫中是否存在指定的列?
- 25. 如何使用vb.net檢查ms access數據庫中是否存在記錄?
- 26. 如何通過Delphi檢查MS Access(數據庫)中是否存在記錄?
- 27. 如何從數據宏MS Access運行追加查詢?
- 28. 在vb和Ms-Access的兩個表中插入數據
- 29. 我如何在MS Access
- 30. 如何從在MS Access
儘管它隱含地相關,但由於檢查表是否存在將需要查看集合的成員,因此它幾乎不是重複的。 – 2010-07-28 19:06:10