Я использую VS2008 C # Express и базу данных Northwind в приложении Windows Form.
Я использовал перетаскивание, чтобы настроить привязку основных данных (я использовал Заказы и Детали заказов) для двух видов сетки данных. На данный момент все работает как положено. Чтобы не возвращать каждую строку в таблице, я хочу отфильтровать таблицу «Заказы» на основе фильтра для таблицы «Заказы» И также по полю в таблице «Сведения о заказах». В мастере настройки адаптера таблиц я использовал построитель запросов, чтобы добавить новый FillByMyFilter, который создал следующий запрос:
ВЫБРАТЬ Заказы. [ID заказа], Заказы. [Идентификатор клиента], Заказы. [Идентификатор сотрудника], Заказы. [Имя корабля], Заказы. [Адрес корабля], Заказы. [Город отправления], Заказы. [Отправка Область, край],
Заказы. [Почтовый индекс отгрузки], Заказы. [Страна доставки], Заказы. [Доставка через], Заказы. [Дата заказа], Заказы. [Требуемая дата], Заказы. [Дата отгрузки],
Orders.Freight
ИЗ ЗАКАЗОВ ВНУТРЕННЕГО СОЕДИНЕНИЯ
[Детали заказа] ON Заказы. [Код заказа] = [Детали заказа]. [Код заказа]
ГДЕ (Заказы. [Название корабля] НРАВИТСЯ% ') И ([Детали заказа]. Количество <20) </p>
Я получил это, добавив обе таблицы, но не проверял ни одно из полей в таблице «Сведения о заказе», чтобы он возвращал только те столбцы, которые использовались в исходном запросе Fill. Я только пытаюсь отфильтровать DataSet в основной таблице на данный момент и не вернуть другое количество столбцов. Дочерние строки сведений о заказе по-прежнему должны работать как нефильтрованный набор результатов по умолчанию.
Теперь проблема: когда я нажимаю кнопку «Выполнить запрос», она работает нормально. Я получаю 53 строки из вышеуказанного запроса, а не 1078, используя заливку по умолчанию, созданную дизайнером. Он возвращает те же столбцы, что и исходный запрос заполнения. Однако, когда я пытаюсь запустить приложение, я получаю следующую ошибку ограничения:
"Не удалось включить ограничения. Одна или несколько строк содержат значения, нарушающие ненулевые, уникальные или ограничения внешнего ключа."
Что я делаю не так?
ОБНОВЛЕНИЕ: Я думаю, что получаю ошибку ограничения из-за ВНУТРЕННЕГО СОЕДИНЕНИЯ, созданного Мастером. Если я отредактирую запрос, чтобы использовать LEFT JOIN, мастер снова изменит его на INNER JOIN.
Мой вопрос по-прежнему заключается в том, как фильтровать записи в родительской таблице (заказы) на основе критериев из родительской и дочерней таблиц. Мой следующий тест - попытаться использовать сохраненный процесс, но хотел бы знать, используя только пользовательский метод TableAdapter FillBy.
С уважением,
Debug