Crystal Reports — использовать другие записи для состояния?

Я несколько новичок в отчетах о кристаллах и синтаксисе, и, похоже, не могу найти специфику с помощью поиска.

Проблема в,

Мне нужно проверить условие другой записи (связанной, как на изображении), когда Op No=10 в таблице Route, я должен затем проверить Date Complete этой записи в таблице WO Route Schedule для того же OP (см. изображение, как они связаны) с датой вводится пользователем при запуске отчета.

Ссылки на таблицы

Суть в том, что я пытаюсь показать шрифт поля красным, когда Date Complete>=FDate (пользователь) (ДЛЯ OP 10), но поскольку фактический список, который я генерирую, имеет значение OPs that are not 10, я не могу указать кристалл для поиска, когда Op No=10, который связан с текущим OP с помощью Route_ID and Work Order_ID!. Я пробовал много операторов If, а также использовал оператор case, когда Op_No=10, но безрезультатно.

Как новичок, я не совсем уверен, какая еще информация нужна. Надеюсь, изображения помогут объяснить мои мотивы, но, если вы считаете, что эту проблему можно решить, запросите дополнительную информацию.

С Уважением

РЕДАКТИРОВАТЬ: больше контекста, если это поможет (первый комментарий)

Да, это трудно объяснить, не перегружая деталями, но в каждом рабочем задании (WO) около 100 операций (OP). Теперь Crystal Reports генерирует список OP, которые все еще активны в цехе, но сначала он должен проверить, была ли завершена определенная OP ДЛЯ ЭТОГО рабочего задания, что затем создает поле с красным шрифтом, когда OP номер 10 завершен. . Теперь, если бы я просто поставил If {WO_Route_Schedule.Date_Complete}>={?FDate} , он бы использовал текущую дату завершения OP, а не OP № 10 для этого рабочего задания!


person Smithy087    schedule 28.05.2014    source источник
comment
Мне жаль говорить, но я не мог точно понять, каково ваше требование?   -  person Siva    schedule 28.05.2014
comment
Да, это трудно объяснить, не перегружая деталями, но в каждом рабочем задании (WO) около 100 операций (OP). Теперь Crystal Reports генерирует список OP, которые все еще активны в цехе, но сначала он должен проверить, была ли завершена определенная OP ДЛЯ ЭТОГО рабочего задания, что затем создает поле с красным шрифтом, когда OP номер 10 завершен. . Теперь, если бы я просто поставил If {WO_Route_Schedule.Date_Complete}›={?FDate} , он использовал бы текущую дату завершения OP, а не OP № 10 для этого рабочего задания!   -  person Smithy087    schedule 28.05.2014
comment
Хорошо, позвольте мне подытожить то, что я понял. Вам нужна дата для op = 10, а затем проверьте дату, введенную пользователем, и если оба параметра совпадают, то вы хотите изменить font to red для этого поля ... я прав? В этом случае вам также нужны записи для op not equal to 10   -  person Siva    schedule 28.05.2014
comment
Да, это звучит примерно так. В основном, когда OP 10 завершен, рабочий заказ становится укомплектованным, и если рабочий заказ комплектуется с момента ввода пользователем даты, он должен быть выделен красным. Я знаю, что оператор If позволяет этому случиться, однако я не уверен, как сказать Crystal выбрать/выбрать операцию № 10, а затем использовать дату, привязанную к этому? Спасибо   -  person Smithy087    schedule 28.05.2014
comment
В этом случае вам нужны записи для op, не равные 10, да, они просто останутся как шрифт crBlack!   -  person Smithy087    schedule 28.05.2014


Ответы (1)


ок, попробуйте следующее решение:

  1. Поместите ниже условие в record selection formula .

    {WO_Route_Schedule.Date_Complete}>={?FDate}
    

    чтобы найти формулу выбора записи, перейдите к File--> selectin formula ---> record

  2. Поместите поле операции OP No в раздел сведений,

  3. Теперь щелкните правой кнопкой мыши поле op no, перейдите к Format field ---> Tab Font ---> formula editor of color

напишите ниже условие там

if Op No=10
then crRed
else crBlack

Дайте мне знать, как это происходит

person Siva    schedule 28.05.2014
comment
Безрезультатно, к сожалению, я не думаю, что то, что я ищу, возможно с программным обеспечением для создания отчетов. Мне нужно каким-то образом захватить WO_ID, затем использовать это, чтобы вернуться к OP no, изменить это на 10, затем полностью проследить обратно к table WO_Route_Schedule, а затем использовать: If (FOR OP 10 of same WO) {WO_Route_Schedule.Date_Complete}>={?FDate} then crRed else crBlack. Спасибо за вашу помощь и терпение! - person Smithy087; 28.05.2014
comment
почему ты куда попал? в чем проблема с решением? - person Siva; 28.05.2014
comment
Похоже, что решение извлекает записи, отличные от ожидаемых, и красные поля не создаются. Если бы я знал, как использовать OP No 10 для того же самого WO_ID, на который смотрит реальный кристалл OP. затем используйте это, чтобы найти дату завершения OP 10 для того же WO_ID. - person Smithy087; 28.05.2014
comment
Я не знаю, как вы восприняли решение, но связывание должно быть сделано на вкладке ссылок кристаллических отчетов и полей, а фильтрация должна применяться в самом CR. отредактировал мой ответ и поставил 10 вместо 1 - person Siva; 28.05.2014
comment
Я вижу, откуда исходит ваше решение, но проблема определенно связана с моим объяснением, поскольку у меня нет большого опыта в этом. Кроме того, отчет используется более года. Я просто пытаюсь улучшить его, выделяя изменения с [user date] красным, чтобы ускорить работу в офисе... Поэтому изменение выбора записи может нарушить то, что уже есть. Если я смогу придумать лучший способ сформулировать это, я отредактирую, или если я решу это, я отвечу своим собственным решением. Спасибо! - person Smithy087; 28.05.2014
comment
Основная причина (я думаю), что это решение не работает, заключается в том, что OP, которые перечисляет Crystal, никогда не будут OP No = 10, поэтому я изо всех сил пытаюсь найти Crystal OP = 10, который связан с тем же заказ на работу (по идентификатору заказа на работу - см. изображение в исходном вопросе) - person Smithy087; 28.05.2014
comment
есть op no=10 выходы в базе данных, и если кристалл выбирает, то кристалл никак не может их не выбрать... проверьте формулу выбора записи, возможно, она фильтрует вашу операцию № = 10... теперь в предварительном просмотре вы можете видеть op no = 10, тогда мое решение работает отлично... Я бы посоветовал сначала проверить уровень базы данных для op no = 10, существует или нет - person Siva; 28.05.2014
comment
Я думаю, что проблема с выбором записей заключается в том, что мы используем своего рода внешний интерфейс базы данных под названием E-max, который, по сути, фильтрует результаты, чтобы показать их специфичность для определенной машины в цеху. Бит выбора записи в кристалле пуст (пока я не попробовал ваше решение), однако я считаю, что между E-max и кристаллом что-то происходит, что автоматически фильтрует результаты по Work Centre Name (имя машины). РЕДАКТИРОВАТЬ: например, когда Я нажимаю verify Database, он запрашивает Select Recordset, это как-то связано с проблемой? Спасибо - person Smithy087; 28.05.2014
comment
Да, OP=10 действительно существует, однако OP 10 всегда отличается Work Centre Name, который, как я полагаю, фильтруется либо E-max, либо кристаллом, вероятно, emax, потому что выбор записи кристалла пуст... - person Smithy087; 28.05.2014
comment
хорошо, тогда в этом случае используйте только выбор кристальной записи и проверьте, указав только дату, чтобы он вернул все записи операции - person Siva; 28.05.2014