|
![]() |
#1 |
Участник
|
Не утруждайтесь - это только начинающие программисты смотрят в исходный код, а настоящие гуру умеют всю нужную информацию видеть в хрустальном шаре.
PS. См. также Как правильно задать вопрос, чтобы быть услышанным Последний раз редактировалось gl00mie; 12.04.2015 в 23:14. Причина: PS |
|
![]() |
#2 |
Участник
|
X++: Query query = new Query(); QueryRun queryRun; QueryBuildDataSource qbds; ; qbds = query.addDataSource(tableNum(RContractTable)); qbds.addRange(fieldNum(RContractTable, RContractAccount)).value(PayRequestTable.RContractAccount); queryRun = new QueryRun(query); if (queryRun.next()) { info("true"); } else if (!queryRun.next()) { info("false"); } |
|
![]() |
#3 |
Участник
|
Цитата:
X++: if (queryRun.next()) { info("true"); } else { info("false"); } |
|
|
За это сообщение автора поблагодарили: bitter (1). |
![]() |
#4 |
Участник
|
Цитата:
Сообщение от gl00mie
![]() Всегда используйте queryValue() (он же SysQuery::value()) для "обработки" значений, подставляемых в QueryBuildRange, в данном случае для PayRequestTable.RContractAccount. Вероятно, соотв. значение в вашем случае - пустое, поэтому выборка из таблицы договоров фактически идет без фильтрации по рег.номеру - см. также, какое значение возвращает SysQueryValue::unlimited().
Цитата:
Я понял почему всегда возвращает true. Я сравниваю полученное значение со значением в таблице, которое априори там присутствует. Соответственно вопрос был задан некорректно, прошу прощения. Попытаюсь расписать алгоритм, который мне необходимо реализовать. На форме есть лукап, с помощью которого я выбираю значение из таблицы, по этому значению мне необходимо найти строку в другой таблице и выяснить заполнено ли определенное поле в данной строке. От того, заполнено ли это поле, будут зависеть мои дальнейшие действия. Я не совсем понимаю как мне выяснить заполнено ли поле найденной строки. Необходимо добавить еще один рейндж с этим полем в QueryBuildDataSource? |
|
![]() |
#5 |
Участник
|
Цитата:
Если "таких" строк в принципе не может быть больше одной (выборка происходит по уникальному ключу), то возможно логичнее сначала прочитать значение этой записи (каким бы оно ни было пустым или заполненным) - проверить что сама запись в таблице есть, а уже вторым шагом проверить заполненность поля в выбранной записи. X++: if (queryRun.next()) { RContractTable = queryRun.get(tableNum(RContractTable)); // получаем выбранную запись if (RContractTable.ContractDate) { info("Поле заполнено"); } else { info("Поле не заполнено"); } } else { info("Запись не найдена"); } Последний раз редактировалось S.Kuskov; 13.04.2015 в 07:54. |
|
|
За это сообщение автора поблагодарили: bitter (1). |