当然可以共存了,问题是你在做如下类似的变量声明时:dim rs as Recordset要注意 因为如果你先加载得是ADO后加载的是DAO,那么这句就相当于dim rs as ADODB.Recordset;而如果加载顺序是相反的,那么这句就相当于dim rs as DAO.Recordset 所以,如果出现下面的情况:你先在Reference中加载了ADO,然后有加载了DAO,在程序中还出现如下的语句: dim rs as Recordset dim db as Database set rs=db.OpenRecordset("your source") 那么第三句就会出现你所说的“类型不批配”的错误,因为在这里你的rs实际上是ADODB.Recordset类型,而db.OpenRecordset返回的是DAO.Recordset 当然了,如果你现在加载的是DAO,那么dim rs as Recordset就相当于 dim rs as DAO.Recordset
huang_yi_cn 说得太详细了 就是这么一会事 所以定义对象时一定要写全 不能偷懒
DAO用前绑定,ADO用后绑定就是
声明的时候注意,如果是这样: dim daoRs as recordset dim adoRs as recordset 肯定是不行的,VB不知道你要用哪个库,改成这样: dim daoRs as DAO.recordset dim adoRs as ADODBrecordset问题应该可以解决
可以同存的用ADO时: dim rs as new adodb.recordset注意这个adodb这个关键字。
因为如果你先加载得是ADO后加载的是DAO,那么这句就相当于dim rs as ADODB.Recordset;而如果加载顺序是相反的,那么这句就相当于dim rs as DAO.Recordset
所以,如果出现下面的情况:你先在Reference中加载了ADO,然后有加载了DAO,在程序中还出现如下的语句:
dim rs as Recordset
dim db as Database
set rs=db.OpenRecordset("your source")
那么第三句就会出现你所说的“类型不批配”的错误,因为在这里你的rs实际上是ADODB.Recordset类型,而db.OpenRecordset返回的是DAO.Recordset
当然了,如果你现在加载的是DAO,那么dim rs as Recordset就相当于
dim rs as DAO.Recordset
说得太详细了
就是这么一会事
所以定义对象时一定要写全
不能偷懒
dim daoRs as recordset
dim adoRs as recordset
肯定是不行的,VB不知道你要用哪个库,改成这样:
dim daoRs as DAO.recordset
dim adoRs as ADODBrecordset问题应该可以解决
dim rs as new adodb.recordset注意这个adodb这个关键字。