方案模板网站,南宁市起全网络科技有限公司,wordpress部份变英文,网站建设推广费计入什么科目大家好#xff0c;今日继续讲解《VBA数据库解决方案》#xff0c;今日讲解的内容是#xff1a;利用ADO,实现模糊查询。在上一讲中#xff0c;我们实现了利用ADO快速查找的功能#xff0c;今日我们实现工作表中模糊查找的功能。我们仍是利用上一讲的数据实现, 在两表…大家好今日继续讲解《VBA数据库解决方案》今日讲解的内容是利用ADO,实现模糊查询。在上一讲中我们实现了利用ADO快速查找的功能今日我们实现工作表中模糊查找的功能。我们仍是利用上一讲的数据实现, 在两表查询数据的工作表中有如下数据我们注意到其中型号和生产厂家的数据有些是混的这就给我们利用上讲的内容造成了不便那么这个时候就要利用模糊查找了,如下的数据我们需要在两表查询数据中A列B列的内容中找到上述表格中A列的对应的型号怎么处理呢我们看下面的代码Sub mynzexcels_8()第39讲利用ADO,实现模糊查询Dim cnADO, rsADO As ObjectDim strPath, strTable, strSQL As StringSet cnADO CreateObject(ADODB.Connection)Sheets(Sheet5).Activate建立一个ADO的连接strPath ThisWorkbook.FullNamecnADO.Open providerMicrosoft.ACE.OLEDB.12.0;extended propertiesexcel 8.0;hdrno;imex1;data source strPathi 2Do While Cells(i, 1) Cells(i, 1).SelectCells(i, 3) : Cells(i, 4) : Cells(i, 5) 这里只是提出F3,F3,F5的数据strSQL select F3,F4,F5 from [两表查询数据$] where F1F2 Like % Cells(i, 1) %Set rsADO New ADODB.RecordsetrsADO.Open strSQL, cnADO, 1, 3If rsADO.RecordCount 0 ThenMsgBox (第 i 行数据没有找到)ElseIf rsADO.RecordCount 1 ThenCells(i, 3).CopyFromRecordset rsADOElseFor TT 1 To rsADO.RecordCount - 1Rows(i TT : i TT).SelectSelection.Insert Shift:xlDown, CopyOrigin:xlFormatFromLeftOrAboveCells(i TT, 1) Cells(i TT - 1, 1): Cells(i TT, 2) Cells(i TT - 1, 2)NextCells(i, 3).CopyFromRecordset rsADOi i TT - 1End IfEnd IfrsADO.CloseSet rsADO Nothingi i 1LoopSet cnADO NothingEnd Sub代码截图代码讲解1 strSQL select F3,F4,F5 from [两表查询数据$] where F1F2 Like % Cells(i, 1) % 这句SQL语句就是实现了从两表查询数据的工作表数据中找到类似于Cells(i, 1)内容的记录大家要注意的这种SQL语句的写法是like % %的组合。2 If rsADO.RecordCount 1 ThenCells(i, 3).CopyFromRecordset rsADO如果仅为1条记录那么就直接拷贝。3 For TT 1 To rsADO.RecordCount - 1Rows(i TT : i TT).SelectSelection.Insert Shift:xlDown, CopyOrigin:xlFormatFromLeftOrAboveCells(i TT, 1) Cells(i TT - 1, 1): Cells(i TT, 2) Cells(i TT - 1, 2)NextCells(i, 3).CopyFromRecordset rsADOi i TT - 1End If如果是多条记录那么需要在原查询记录的下面插入行来填入查询的结果上述代码就是完成了这个目的。下面我们看代码的运行结果今日内容回向1 ADO如何实现模糊查找2 上述讲解中的SQL语句是否明白呢