Логический результат от строки - PullRequest
0 голосов
/ 17 сентября 2018

Я использую MS Access и хотел бы хранить элементы для просмотра в таблице, например:

enter image description here

Я соберу детали из этоготаблица с использованием следующих данных (в открытом наборе записей):

Field_Review = rst1![Field_NM] & ""
Evaluation = rst1![Eval_TP] & ""
Goal = rst1![Field_Val] & ""

Я буду использовать следующий код для извлечения значений из открытой формы:

strResult = Forms![Main].Form(Field_Review).Value

Я хотел бы вернутьлогический результат, используя что-то вроде этого:

blnResult = Goal & Evaluation & strResult

Я установил blnResult: Dim blnResult as Boolean.Я получаю сообщение об ошибке «Ошибка времени выполнения 13: несоответствие типов».

Когда я пытаюсь отладить, я замечаю, что не возвращаю желаемое логическое значение;однако строка с литеральным значением «APPROVED = APPROVED».

Любые подсказки для получения результата оценки в нормальном логическом значении будут очень полезны.

1 Ответ

0 голосов
/ 17 сентября 2018

Eval() может получить то, что вы хотите.Вот пример окна Immediate.

Ваши значения ...

Goal = "APPROVED"
Evaluation = "="
strResult = "APPROVED"

Когда вы объединяете их, добавляйте кавычки для разделения текстовых значений в строке.Если вы хотите использовать двойные кавычки, поставьте 2 там, где вы хотите, чтобы один появился в последней строке.Однако одинарные кавычки проще для меня ...

strExpression = "'" & Goal & "'" & Evaluation & "'" & strResult & "'"
? strExpression
'APPROVED'='APPROVED'

А теперь оцените это выражение и сохраните его в своей переменной.Вам на самом деле не нужно CBool() ... просто Eval(strExpression) должно быть достаточно ... но я включил его здесь, потому что тогда blnResult будет отображаться как True вместо -1.Оба числа совпадают, но я хотел избежать путаницы с форматом дисплея.

blnResult = CBool(Eval(strExpression))
? blnResult
True
...