使用ADO的OpenSchema或ADOX無法讀取所有Access數據庫裡所有查詢名稱列錶的問題
- 2017-09-07 16:31:00
- zstmtony 原創
- 4933
一箇Access交流網的版主在使用ADO的OpenSchema或ADOX 讀取Access數據庫裡所有查詢的清單時
髮現結果總是少瞭一箇查詢,Access查詢列錶中有5箇,但用VBA 或VB代碼讀齣來隻有4箇,少瞭一箇
ADO讀取Access數據庫所有查詢名的代碼如下
Private Sub OpenDBSchema(FileName As String) Dim conn As New ADODB.Connection Dim mProvider As String Dim fso As New FileSystemObject If Not fso.FileExists(FileName) Then Set grid1.DataSource = Nothing Select Case LCase(fso.GetExtensionName(FileName)) Case "mdb" mProvider = "Microsoft.Jet.OLEDB.4.0" Case "accdb" mProvider = "Microsoft.ACE.OLEDB.12.0" End Select conn.ConnectionString = "Provider=" & mProvider & ";Data Source=" & FileName & ";Persist Security Info=False;" conn.Open Set grid1.DataSource = conn.OpenSchema(adSchemaTables) grid1.AllowUserResizing = flexResizeBoth End Sub
齣現 的錯誤如下(ADO VBA代碼取得的結果與Access數據庫查詢實際對比)
經過不斷嚐試與分析,終於髮現,原來這箇少掉的Access查詢,使用瞭一箇Access模塊中的自定義函數
這樣導緻 無法識彆到這箇查詢
將查詢中用到的自定義函數刪除後,則成功穫取瞭
吐槽】064-姚文濤-10年(21959068) 14:30:49
我得翻翻,好久之前的事情瞭,一直沒結果,代碼不知道放哪去瞭
等等,我現寫一下看看
【話嘮】ZPY2(1928323988) 14:40:06
【吐槽】064-姚文濤-10年(21959068) 14:41:31
這箇結果輸齣時對的
【吐槽】064-姚文濤-10年(21959068) 14:43:22
有些時候沒問題,有些時候又有問題,當初那箇問題數據庫我找不到瞭
【話嘮】席主習_smileyoufu(86053924) 14:44:38
你列齣有問題的例子來
【管理員】tmtony小辣椒(18449932) 14:44:56
用ADOX 也會這樣?
【話嘮】ZPY2(1928323988) 14:47:01
不會的,
【吐槽】064-姚文濤-10年(21959068) 14:47:56
我翻翻看看,難道是我當初導齣到datagridview之後眼睛看花瞭
【話嘮】席主習_smileyoufu(86053924) 14:50:23
幾十年的東西,彆輕易説有問題
【吐槽】064-姚文濤-10年(21959068) 15:20:01
少瞭一箇z開頭的查詢
【吐槽】064-姚文濤-10年(21959068) 15:25:15
這是另一箇,也少一箇查詢
【吐槽】064-姚文濤-10年(21959068) 15:26:28
我這是Ado.net
的測試結果,Ado似乎也一樣,總是會莫名其妙少幾箇查詢
【話嘮】席主習_smileyoufu(86053924) 15:42:01
這是.net 不會用
【管理員】tmtony小辣椒(18449932) 15:43:28
@064-姚文濤-10年 建議弄箇vb6+ado+mdb數據庫 上來,大傢來測試一下
【吐槽】064-姚文濤-10年(21959068) 15:43:46
好,等等
【話嘮】ZPY2(1928323988) 16:04:21
【吐槽】064-姚文濤-10年(21959068) 16:04:39
【管理員】tmtony小辣椒(18449932) 16:04:45
@ZPY2 截圖不清
【吐槽】064-姚文濤-10年(21959068) 16:05:01
上傳瞭VB6的工程文件
裡麵有箇數據庫
【話嘮】ZPY2(1928323988) 16:05:11
查詢和錶,蔘數不一樣
【吐槽】064-姚文濤-10年(21959068) 16:05:11
讀取之後少箇查詢
【話嘮】ZPY2(1928323988) 16:07:30
view oledbschemaguid.tables 這箇蔘數
【吐槽】064-姚文濤-10年(21959068) 16:07:43
就是這箇OleDbSchemaGuid.Tables,控製是否是查詢還是錶,是後麵那箇object裡的值控製的
【管理員】tmtony小辣椒(18449932) 16:08:16
@064-姚文濤-10年 少瞭哪箇查詢名?
【吐槽】064-姚文濤-10年(21959068) 16:09:12
【話嘮】ZPY2(1928323988) 16:11:47
我是ado的,
【吐槽】064-姚文濤-10年(21959068) 16:11:49
我上傳VB6工程,用的ADO
一樣的問題
【吐槽】064-姚文濤-10年(21959068) 16:14:08
我上次還髮現一箇有好多查詢都找不到的,不過我實在是翻不到那箇數據庫瞭
【活躍】新手(1742595842) 16:21:38
你的查詢錶在access裡麵可以打開嗎?
我在你的access裡麵打不開你查詢不到的那箇錶
【管理員】tmtony小辣椒(18449932) 16:27:35
@064-姚文濤-10年 原因找到瞭
【吐槽】064-姚文濤-10年(21959068) 16:27:56
啥原因?
【管理員】tmtony小辣椒(18449932) 16:28:09
因爲你這箇查詢使用瞭access模塊的自定義函數,所以取不到
把這箇函數中用的自定義函數取消,就可能瞭
【話嘮】ZPY2(1928323988) 16:28:49
老大厲害
【吐槽】064-姚文濤-10年(21959068) 16:29:11
哦,終於知道原因瞭,迷惑瞭我好久
那我又想要那箇自定義函數的查詢,咋辦啊
【話嘮】ZPY2(1928323988) 16:29:33
自定義函數 隻能在 access vba執行,
【管理員】tmtony小辣椒(18449932) 16:30:02
這箇你可在Access使用時動態 設置qdf.sql
但這箇查詢在VB調用肯定用不瞭這箇函數的
【話嘮】ZPY2(1928323988) 16:31:43
是啊,
【吐槽】064-姚文濤-10年(21959068) 16:33:04
如果是動態設置Sql,是不是要將自定義函數的這箇模塊保存在VB6工程項目裡?
【管理員】tmtony小辣椒(18449932) 16:34:07
Access的查詢是無法讀取VB的自定義函數的:)
這箇是不太好解決,DAO則可以
你隻有在VB中瞭到查詢內容,再用VB再處理瞭
我得翻翻,好久之前的事情瞭,一直沒結果,代碼不知道放哪去瞭
等等,我現寫一下看看
【話嘮】ZPY2(1928323988) 14:40:06
set xCat = Server.CreateObject("ADOX.Catalog") if xCat Is Nothing or IsEmpty(xCat) or not UseADOX Then 'ADOX is not available, so we'll get tables list using schemas set xCat = JetConnection_.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, Empty)) Do While Not xCat.EOF tableType = xCat("TABLE_TYPE").Value If tableType = "SYSTEM TABLE" or tableType = "TABLE" or tableType = "ACCESS TABLE" or tableType = "LINK" _ or tableType = "PASS-THROUGH" Then set tbl = new DBATable With tbl .Name = xCat("TABLE_NAME").Value .DateCreated = xCat("DATE_CREATED").Value .DateModified = xCat("DATE_MODIFIED").Value .Description = xCat("DESCRIPTION").Value .TableType = xCat("TABLE_TYPE").Value Set .Parent = Me End With Set Tables_.Item(tbl.Name ) = tbl End If xCat.MoveNext Loop call xCat.Close() end if
【吐槽】064-姚文濤-10年(21959068) 14:41:31
這箇結果輸齣時對的
【吐槽】064-姚文濤-10年(21959068) 14:43:22
有些時候沒問題,有些時候又有問題,當初那箇問題數據庫我找不到瞭
【話嘮】席主習_smileyoufu(86053924) 14:44:38
你列齣有問題的例子來
【管理員】tmtony小辣椒(18449932) 14:44:56
用ADOX 也會這樣?
【話嘮】ZPY2(1928323988) 14:47:01
不會的,
【吐槽】064-姚文濤-10年(21959068) 14:47:56
我翻翻看看,難道是我當初導齣到datagridview之後眼睛看花瞭
【話嘮】席主習_smileyoufu(86053924) 14:50:23
幾十年的東西,彆輕易説有問題
【吐槽】064-姚文濤-10年(21959068) 15:20:01
少瞭一箇z開頭的查詢
【吐槽】064-姚文濤-10年(21959068) 15:25:15
這是另一箇,也少一箇查詢
【吐槽】064-姚文濤-10年(21959068) 15:26:28
我這是Ado.net
的測試結果,Ado似乎也一樣,總是會莫名其妙少幾箇查詢
【話嘮】席主習_smileyoufu(86053924) 15:42:01
這是.net 不會用
【管理員】tmtony小辣椒(18449932) 15:43:28
@064-姚文濤-10年 建議弄箇vb6+ado+mdb數據庫 上來,大傢來測試一下
【吐槽】064-姚文濤-10年(21959068) 15:43:46
好,等等
【話嘮】ZPY2(1928323988) 16:04:21
【吐槽】064-姚文濤-10年(21959068) 16:04:39
【管理員】tmtony小辣椒(18449932) 16:04:45
@ZPY2 截圖不清
【吐槽】064-姚文濤-10年(21959068) 16:05:01
上傳瞭VB6的工程文件
裡麵有箇數據庫
【話嘮】ZPY2(1928323988) 16:05:11
查詢和錶,蔘數不一樣
【吐槽】064-姚文濤-10年(21959068) 16:05:11
讀取之後少箇查詢
【話嘮】ZPY2(1928323988) 16:07:30
view oledbschemaguid.tables 這箇蔘數
【吐槽】064-姚文濤-10年(21959068) 16:07:43
就是這箇OleDbSchemaGuid.Tables,控製是否是查詢還是錶,是後麵那箇object裡的值控製的
【管理員】tmtony小辣椒(18449932) 16:08:16
@064-姚文濤-10年 少瞭哪箇查詢名?
【吐槽】064-姚文濤-10年(21959068) 16:09:12
【話嘮】ZPY2(1928323988) 16:11:47
我是ado的,
【吐槽】064-姚文濤-10年(21959068) 16:11:49
我上傳VB6工程,用的ADO
一樣的問題
【吐槽】064-姚文濤-10年(21959068) 16:14:08
我上次還髮現一箇有好多查詢都找不到的,不過我實在是翻不到那箇數據庫瞭
【活躍】新手(1742595842) 16:21:38
你的查詢錶在access裡麵可以打開嗎?
我在你的access裡麵打不開你查詢不到的那箇錶
【管理員】tmtony小辣椒(18449932) 16:27:35
@064-姚文濤-10年 原因找到瞭
【吐槽】064-姚文濤-10年(21959068) 16:27:56
啥原因?
【管理員】tmtony小辣椒(18449932) 16:28:09
因爲你這箇查詢使用瞭access模塊的自定義函數,所以取不到
把這箇函數中用的自定義函數取消,就可能瞭
【話嘮】ZPY2(1928323988) 16:28:49
老大厲害
【吐槽】064-姚文濤-10年(21959068) 16:29:11
哦,終於知道原因瞭,迷惑瞭我好久
那我又想要那箇自定義函數的查詢,咋辦啊
【話嘮】ZPY2(1928323988) 16:29:33
自定義函數 隻能在 access vba執行,
【管理員】tmtony小辣椒(18449932) 16:30:02
這箇你可在Access使用時動態 設置qdf.sql
但這箇查詢在VB調用肯定用不瞭這箇函數的
【話嘮】ZPY2(1928323988) 16:31:43
是啊,
【吐槽】064-姚文濤-10年(21959068) 16:33:04
如果是動態設置Sql,是不是要將自定義函數的這箇模塊保存在VB6工程項目裡?
【管理員】tmtony小辣椒(18449932) 16:34:07
Access的查詢是無法讀取VB的自定義函數的:)
這箇是不太好解決,DAO則可以
你隻有在VB中瞭到查詢內容,再用VB再處理瞭
Access數據庫自身
- office課程播放地址及課程明細
- Excel Word PPT Access VBA等Office技巧學習平颱
- 將( .accdb) 文件格式數據庫轉換爲早期版本(.mdb)的文件格式
- 將早期的數據庫文件格式(.mdb)轉換爲 (.accdb) 文件格式
- KB5002984:配置 Jet Red Database Engine 數據庫引擎和訪問連接引擎以阻止對遠程數據庫的訪問(remote table)
- Access 365 /Access 2019 數據庫中哪些函數功能和屬性被沙箱模式阻止(如未啟動宏時)
- Access Runtime(運行時)最全的下載(2007 2010 2013 2016 2019 Access 365)
Access Activex第三方控件
- Activex控件或Dll 在某些電腦無法正常註冊的解決辦法(regsvr32註冊時卡住)
- office使用部分控件時提示“您沒有使用該ActiveX控件許可的問題”的解決方法
- RTF文件(富文本格式)的一些解析
- Access樹控件(treeview) 64位Office下齣現橫曏滾動條不會自動定位的解決辦法
- Access中國樹控件 在win10電腦 節點行間距太小的解決辦法
- EXCEL 2019 64位版(Office 2019 64位)早就支持64位Treeview 樹控件 ListView列錶等64位MSCOMMCTL.OCX控件下載
- VBA或VB6調用WebService(直接Post方式)併解析返迴的XML
Access ADP Sql Server等
- 早期PB程序連接Sqlserver齣現錯誤
- MMC 不能打開文件C:/Program Files/Microsoft SQL Server/80/Tools/Binn/SQL Server Enterprise Manager.MSC 可能是由於文件不存在,不是一箇MMC控製颱,或者用後來的MMC版
- sql server連接不瞭的解決辦法
- localhost與127.0.0.1區彆
- Roych的淺談數據庫開髮繫列(Sql Server)
- sqlserver 自動備份對備份目録沒有存取權限的解決辦法
- 安裝Sql server 2005 express 和SQLServer2005 Express版企業管理器 SQLServer2005_SSMSEE
文章分類
聯繫我們
聯繫人: | 王先生 |
---|---|
Email: | 18449932@qq.com |
QQ: | 18449932 |
微博: | officecn01 |