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