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