詳讀ADO Connection對象進行研究
本文介紹,ADO Connection猜測 Excel 工作表或范圍中各列的數(shù)據(jù)類型。(這不受 Excel 單元格格式設置的影響。)如果同一列中既有數(shù)字值,也有文本值,會出現(xiàn)嚴重的問題。Jet 和 ODBC 提供程序將返回占多數(shù)的類型的數(shù)據(jù),
例如:
在被掃描的八 (8) 行中,如果該列包含五 (5) 個數(shù)字值和三 (3) 個文本值,則提供程序將返回五ADO Connection 個數(shù)字和三 (3) 個空值。在被掃描的八 (8) 行中,如果該列包含三 (3) 個數(shù)字值和五 (5) 個文本值,則提供程序將返回三 (3) 個空值和五 (5) 個文本值。
在被掃描的八 (8) 行中,如果該列包含四 (4) 個數(shù)字值和四 (4) 個文本值,則提供程序將返回四 (4) 個數(shù)字和四 (4) 個空值。因此,如果列中包含不同類型的值,唯一的解決方法是將該列中的數(shù)字值存儲為文本,然后在需要時使用ADO Connection 函數(shù)或同等功能的函數(shù)將其還原為數(shù)字。
作為解決只讀數(shù)據(jù)問題的一種替代方法,可在連接字符串的“擴展屬性”部分中使用ADO Connection 這一設置來啟用導入模式。這可強制執(zhí)行 ImportMixedTypes=Text 注冊表設置。但在此模式下,執(zhí)行更新操作時可能會出現(xiàn)意外的結果。 有關此設置的其他信息,請單擊下面的文章編號,查看 Microsoft 知識庫中相應的文章:
在 ADODC 屬性對話框的常規(guī)選項卡上指定 Excel 數(shù)據(jù)源的連接設置后,單擊記錄源選項卡。如果選擇的 CommandType 為 adCmdText,則可以使用上文介紹的語法在命令文本對話框中輸入一個 SELECT 查詢。如果選擇的 ADO Connection 為 adCmdTable,而且使用的是 Jet 提供程序,所選工作簿中的可用命名區(qū)域和工作表的名稱都會顯示在下拉列表中,命名區(qū)域排在前面。#t#
如果有可用空間,可以將記錄添加到 Excel 記錄源中。但是,如果將新記錄添加到了原來指定的區(qū)域之外,那么在對原來指定的區(qū)域重新進行查詢時,將看不到這些記錄。請參見上文中“指定區(qū)域時應注意的事項”一節(jié)。
使用 ADO Connection 可以檢索有關 Excel 數(shù)據(jù)源(表和字段)的結構的數(shù)據(jù)。雖然使用兩種 OLE DB 提供程序時至少都返回相同數(shù)量(很少)字段的有用信息,但結果在兩者之間仍有細微差別。使用 ADO Connection 對象的 OpenSchema 方法可檢索此元數(shù)據(jù)。
該方法返回一個 ADO Recordset 對象。也可以使用更強大的 Microsoft ActiveX Data Objects Extensions for Data Definition Language and Security (ADOX) 庫來檢索元數(shù)據(jù)。然而,對于 Excel 數(shù)據(jù)源,“表”既可以是工作表也可以是命名區(qū)域,而“字段”則是幾種有限的一般數(shù)據(jù)類型之一,ADO Connection 所以這一附加的功能沒有什么用處。