2013-09-04 1 views
1

Я отношения мастер/деталь, как показано на рисунке нижеИспользуя метод PreprocessQuery в Local Query

enter image description here

Мне нужно фильтровать данные, приведенные в таблице OrderHeaders поэтому я ве редактировал локальный запрос (нажав на ссылку Edit Query на экране), но часть фильтра основана на компьютерной собственности так что мне нужно использовать PreprocessQuery метод, поскольку свойства Вычисляемые не появляется в в разделе «Фильтр» запроса.

Но теперь я проблема в локальном запросе «Записать код» ComboBox не доступен, как в глобальном запросов, как показано на рисунке ниже

enter image description here

Так что я не» t знать, как создать метод PreprocessQuery в локальном запросе.

Может ли кто-нибудь сказать мне, как его создать?

Если он недоступен для , местные запросы есть ли другой способ фильтрации по вычислимой собственности?

+0

Я понимаю, что вы имеете в виду. Почему бы не создать подзапрос таблицы «orderHeaders». Затем измените метод preProcess. Если вы добавите параметр в запрос, вы сможете использовать его в качестве фильтра в preProcess. Затем на главной странице Создайте свойство, установите его в код в вычисленную строку и сопоставьте его с параметром запроса – TsSkTo

+0

@TsSkTo Я понимаю, что вы имеете в виду, но я не знаю, как связать это свойство или новый глобальный запрос (так как вы предложить) в качестве запроса для таблицы OrderHeaders. Можете ли вы рассказать мне, как это сделать? – vcRobe

+0

Это должно сделать это.Поиграйте с ним и посмотрите, сможете ли вы заставить его работать. Если у вас есть какие-либо вопросы, просто спросите;) – TsSkTo

ответ

2

Хорошо сначала создайте подзапрос из таблицы. Например, ваши ProductsWithouDescription и SortedProducts, щелкнув правой кнопкой мыши по таблице и «Добавить запрос». (страна должна быть эквивалентом вами таблицы «Заголовки»)

enter image description here

Имя запроса, а затем добавить параметр запроса любого типа вам нужно.

enter image description here

Теперь написать код для этого: (здесь страна таблицы я использую)

enter image description here

enter image description here

Обратите внимание, что ваш NewParameter теперь «Параметр «к вашему методу. Это будет фильтровать этот запрос, чтобы отображать только записи, где CountryName равен параметру. У вас может быть столько параметров, сколько вам нужно.

Теперь добавьте этот элемент данных на свой экран.

enter image description here

Затем добавить новое свойство типа вам нужно, а также. (Его под Добавьте данные Пункт а)

Я рекомендую вам отмените Требуется.

enter image description here

Вот основная схема запроса для моего экрана. Я использовал таблицу Местоположения как пример, так как в каждом месте есть страна в моей модели данных.Предполагается, что местоположения будут эквивалентны таблице Customer. Если я разворачиваю таблицы (ваши клиенты), я заметил, что я не могу добавить свой недавно созданный запрос напрямую. Также обратите внимание, что теперь отображается свойство Created.

enter image description here

Если вы расширить свой новый запрос слева вы увидите параметр в нижней части.

enter image description here

Нажмите на него, получить его свойства (F4) и отобразить параметр для вновь созданного имущества.

enter image description here

Теперь ваш параметр фильтрации устанавливается этим свойством мы только что создали.

Теперь вы должны установить свойство до того, как этот запрос сможет отобразить что угодно. Вот как это сделать:

Выберите клиента (Шахта места) таблицы и в левом верхнем углу нажмите на стрелку вниз рядом написать код и выберите `SelectionChanged» метод:

enter image description here

Теперь напишем код:

enter image description here

Вот моя строка дисплея является вычисляемым полем Locations. Поэтому каждый раз, когда вы выбираете что-то в сетке местоположений, он будет использовать эту «DisplayString» для фильтрации «MynewFavoriteQuery».

Некоторые вещи, чтобы отметить:

Это вы делаете параметр для подзапроса Дополнительный запрос будет отображать все без фильтрации до тех пор, как свойство NULL. (На самом деле я не уверен насчет этого, так как им, используя его немного по-другому, но вы можете играть с ним и посмотреть, что получится)

enter image description here

Если вы установите свойство Обязательно это будет вызывают ошибки проверки на экране, если для свойства установлено значение null.

Возможно, вам также придется настроить его так, чтобы свойство всегда инициализировалось нулем при создании экрана. Вы можете отредактировать метод «ScreeCreated» под общим кодом записи, чтобы установить некоторое значение этого свойства при первом создании экрана.

Дайте мне знать, если возникнут какие-либо вопросы.

+0

Кто-то на форуме Microsoft ответил на то же, что и вы, но мой ответ немного длиннее, поэтому я не могу вставить его здесь в комментарий. Вы прочитали бы это здесь http://social.msdn.microsoft.com/Forums/vstudio/en-US/c8aba095-8282-4e70-b292-bb59f1eda874/using-the-preprocessquery-method-in-a-local-query – vcRobe

+1

@vcRobe Lightswitch имеет эту опрятную функцию для быстрого добавления связанных таблиц на экран. Проблема в том, что вы выходите из этого. Подзапрос, который вы создали, не будет отображаться как удобная ссылка. Но есть довольно простая кодированная альтернатива. Все, что делает lightwitch, фильтрует первый запрос seconf. Вы можете сделать то же самое со свойствами, как я упоминал выше. Я могу указать более подробную информацию, если вам это нужно. Дайте мне знать – TsSkTo

+0

Да, пожалуйста, мне нужна более подробная информация, чтобы сделать то, что вы предлагаете мне, потому что я немного потерял ее. – vcRobe