Несоответствие типов данных в DLookUp

Ukraina
Дата: 11.09.2005 21:56:11
Господа!
Имеется разделенная база данных, где присоединенными таблицами являются таблицами из двух разных баз данных.
С помощью запроса из системной таблицы «MSysObjects» получаю пути к этим базам данных и соответствующие имена файлов без разрешения, которые буду использовать как параметр

SELECT MSysObjects.Database, strDBDate([Database]) AS FN
FROM MSysObjects
GROUP BY MSysObjects.Database, strDBDate([Database])
HAVING (((MSysObjects.Database) Is Not Null));
В итоге получаю нужный мне результат

“Database”                               FN
G:\PathKross\kross.mdb           kross
G:\PathBase\data.mdb             data
Где функция strDBDate([Database]) выделяет имя файла без расширения из полного пути

Public Function strDBDate(SPath As String) As String
Dim objFSO As FileSystemObject

Dim dbName As String, DbPath As String
Set objFSO = New FileSystemObject
dbName = SPath
DbPath = objFSO.GetParentFolderName(SPath)
dbName = objFSO.GetBaseName(dbName)
strDBDate = dbName
End Function
Теперь в некой форме мне необходимо получить один из этих путей в зависимости от нужного параметра, который я сравниваю с полем запроса FN

=DLookUp("[Database]";"NetConfig";"[FN]='data'")
или
=DLookUp("[Database]";"NetConfig";"[FN]='kross'")
Но в поле высвечивается ошибка. В запросе пославил условие «data» и выдает сообщение об ошибке «Несоответствие типов данных в условиях отбора». Что можно сделать, чтобы в DLookUp использовать этот критерий по FN=’data’ или FN=’kross’
Предполагаю, что функция strDBDate и ’data’ / ’kross’ имеют разные типы, но ведь согласно описанию функции strDBDate результат стринговый?
Serge Gavrilov
Дата: 12.09.2005 00:09:38
Дело в аргументе функции, вы его объявили As String, а значение может быть Null, поэтому слегка измените запрос:
SELECT MSysObjects.Database, strDBDate([Database]) AS FN
FROM MSysObjects
GROUP BY MSysObjects.Database, strDBDate(Nz([Database]))
HAVING (((MSysObjects.Database) Is Not Null));