Всем привет! Проблема возникла, какой не ждал: в фейсе ищу запись в таблице MARPUNKT таким образом: ...
s := DBFGetFieldValue(f,'Punk_naz');
if (getfirst MARPUNKT where (SubStr(MARPUNKT.code,1,5) = s ) = tsOk) then ...
...
т.е. считываю значение с поля DBF-ки (оно 5 знаков строковое) и по фильтру хочу найти значение в Галактике (у нас в MARPUNKT.code - 6 знак контрольная сумма). Ругается: "Не могу осуществить преобразование типов!". Запускаю такой же пробный селект в ЛОТе - все находит!
Объясните, в чем дело? Везде же стринговые значения что поля, что переменные
Спасибо за ответ!
Это что получается: если используется конструкция Where , обязательно должны быть перед константой tsOk двойные скобки, а то компилятор не понимает? Интересные дела.. А в справочнике по атлантису это не описано, или я не нашел этого
В скобки нужно заключить конструкцию getfirst вместе со всем ее содержимым, иначе "(SubStr(MARPUNKT.code,1,5) = s ) = tsOk" станет частью where, а результат, возвращаемый модификатором, компилятор попытается преобразовать к boolean. А делать это неявно компилятор не умеет. Вот и ругается.
То есть, дело не в двойных скобках, а только в умелой их расстановке.
доброго времени суток.
у меня похожая беда - пишу:
.Create view d1 as SELECT APPOINTMENTS.Apptabnmb, APPOINTMENTS.post, catalogs.nrec, catalogs.name from persons, catalogs where ((Tabn==APPOINTMENTS.Apptabnmb and APPOINTMENTS.POST== catalogs.nrec));
а мне Галка ругается на невозможность преобразования типов.
обе переменные с типом integer.
как с этим бороться? подскажите, плиз.
Предупреждение: Неявное добавление таблицы APPOINTMENTS в логическую таблицу D1
Ошибка: Нужен ключ APPTABNMB для APPOINTMENTS
Ошибка: Ошибка настройки логических таблиц
Т. е. это уже ошибки следующего этапа, проблем с преобразованием типов здесь быть не должно. Посмотрите, что написано непосредственно перед .create view (может быть, предыдущая конструкция не закончена, и этот оператор воспринимается как ее продолжение). Убедитесь, что точка стоит в первой позиции. Либо выкладывайте форму целиком.