Первый же день - проблема. Описываю:
Требуется получить список таблиц в БД (*.mdb)
Есть опциональный список допустимых паттернов и исключительных паттернов (т.е. sPattern = "ware%;ch%", sExPattern = "msys%;tmp%")
- Код: Выделить всё
If Len(sPattern) > 0 Then sCriteria = "(TABLE_NAME like '" & Join(Split(sPattern, ";"), "' or TABLE_NAME like '") & "')"
If Len(sExPattern) > 0 Then sCriteria = sCriteria & IIf(Len(sCriteria) > 0, " and ", "") & "(TABLE_NAME not like '" & Join(Split(sExPattern, ";"), "' and TABLE_NAME not like '") & "')"
Set rs = cn.OpenSchema(adSchemaTables)
rs.Filter = sCriteria
Вываливается в ошибку, что аргумент не того типа, вне допустимого диапазона или конфликтует хз с кем
После некоторого количества кругов, описанных вокруг костра с бубном в руках, пришел к следующему:
не работает конструкция NOT LIKE. Т.е. в простейшем приближении
rs.Filter = "TABLE_NAME like 'ware%'" - работает
rs.Filter = "TABLE_NAME not like 'ware%'" - не работает
rs.Filter = "not (TABLE_NAME like 'ware%')" - не работает
В чем косяк?!!
Текст функции:
- Код: Выделить всё
Function ADOTableList(sBase As String, v, Optional sPattern As String, Optional sExPattern _
As String, Optional cn As ADODB.Connection, Optional sConnStr As String = cConnStr, _
Optional sErr As String) As Boolean
Dim bCN As Boolean, sCriteria As String, s As String
On Error GoTo er
If Not ADOOpen(sBase, sConnStr, cn, bCN, sErr) Then Err.Raise clERROR, , sErr
If Len(sPattern) > 0 Then sCriteria = "(TABLE_NAME like '" & Join(Split(sPattern, ";"), "' or TABLE_NAME like '") & "')"
If Len(sExPattern) > 0 Then sCriteria = sCriteria & IIf(Len(sCriteria) > 0, " and ", "") & _
"(TABLE_NAME not like '" & Join(Split(sExPattern, ";"), "' and TABLE_NAME not like '") & "')"
With cn.OpenSchema(adSchemaTables)
.Filter = sCriteria
If Not .EOF Then
Do Until .EOF
s = s & Null2Str(!TABLE_NAME) & vbLf
.MoveNext
Loop
v = Split(left$(s, Len(s) - 1), vbLf)
End If
.Close
End With
ADOTableList = True
GoTo ok
er:
sErr = Err.Description
ok:
If bCN Then cn.Close: Set cn = Nothing
End Function