문제

내가 사용하여 VS2008C#Express 및 Northwind 데이터베이스에서 윈도우 응용 프로그램 Form.

나는 사용 드래그 앤 드롭을 설정하는 마스터 세부 사항 바인딩(내가 사용하는 주문과 주문 정보)두 datagridviews.이 시점에서,모두 예상대로 작동합니다.하지 않도록 반환 모든 행 테이블에서 원하는 필터 순서를 기반으로 테이블에 대한 필터 순서 테이블도에서 필드를 주문정이다.에이브 구성 마법사를 이용 쿼리 빌더를 추가하는 새로운 FillByMyFilter 는 다음과 같은 쿼리:

주문을 선택하십시오.[주문 ID],주문입니다.[고객 ID],주문입니다.[Employee ID],주문입니다.[선]이름,주문입니다.[배소],주문입니다.[선박 도시],주문입니다.[선박 지역], 주문입니다.[배송 우편번호],주문입니다.[선박 국가],주문입니다.[통해 배],주문입니다.[주문 날짜],주문입니다.[필요한 날짜],주문입니다.[배송 날짜], 주문입니다.운송 에서 주문을 안 가입 [주문 정보]에서 주문입니다.[주문 ID]=[주문 정보].[주문 ID] 여기서(주문입니다.[배 이름]]처럼 N'%')AND([주문 정보].수량 < 20 개)

이에 추가하여 두 테이블에 하지 않았다 하지만 확인해야에 상자를 주문 정보는 테이블도록 그것은 단지 반환 열에서 사용되는 원본을 채우 쿼리가 있습니다.내가 하려고만을 필터에서 데이터 집합 마스터 테이블에서 이 시점으로 돌아가지 않고 다른 개수의 열이 있습니다.아이의 행 주문 정보는 여전히 작동과 같은 기본되지 않은 결과를 설정합니다.

지금 문제는:면 쿼리 실행 버튼을 이 상품에 대한 리뷰가 없습니다.나 53 행 위에서 쿼리를 보다는 오히려 1078 를 사용하는 기본 채워 디자이너에 의해 만들어집니다.그것은 동일한 열로 원본을 채우 쿼리가 있습니다.그러나 빠르게 액세스할 수 있습니하고 응용 프로그램을 실행하면 다음과 같은 제약 조건에 오류가:

"를 사용하지 못했 제약 조건이 있습니다.하나 이상의 행 값을 포함 위반 null 이 아닌,유일한,또는 외국-키 제약 조건이 있습니다."

무엇이 잘못된 것입니까?

업데이트:내 생각에 나는 조건 때문에 발생의 내부 조에 의해 만들어하는 방법에 대해 설명합니다편집하면 쿼리가 사용하는 왼쪽에 가입한 후 마법사를 변경 다시 내 참여합니다.

나의 질문은 여전히 뜻하는 방법으로 필터 기록 부모 테이블에서(주)기준에 따라 모두에서 부모와 자식이다.내 옆에 테스트를 사용하려고 노력해 저장 proc 지만 알고 싶은 사이브 사용자 지정 FillBy 방법입니다.

감사합니다,

디버그

도움이 되었습니까?

해결책 3

감사하시는 대답이다.여기에 내가했던 방법입니다 그것을 사용하여브 마법사 Northwind 입력합니다.

1)오른쪽 클릭하여 상위의 테이블에 xsd 디자이너를 추가하거나 구성하는 쿼리를 실행합니다.2)Click"Next"버튼을 클릭에서는 마법사를 표시될 때까지"쿼리 빌더"버튼을 누릅니다.쿼리 작성기 단추를 클릭합니다 자신을 얻을 쿼리에서 작성기 모드입니다.3)오른쪽 클릭하여 추가 자식에서 테이블의 디자인 창이 있습니다.당신이 있어야 모두의 테이블과 기본 제약 조건을 검사할 것입니다.4)열을 클릭합 아이에는 테이블을 필터링할(이 확인 표시가 될 것이다 나중에 제거)하기 위해 추가 조건 창에 그래서를 필터링할 수 있습니다.5)필터를 추가한 부모와 아이의 열이 있습니다.이 예에서 나는 필터링된 우주선의 이름처럼에'%'를 주문 수량 < 20.

참고로 이 지점에서 테스트할 수 있습니다 쿼리 클릭하여 쿼리를 실행 버튼입니다.사용 Northwind DB SQL2008compact edition 나 53 행 반환됩니다.당신이 그것을 저장하는 이 시점에서 그것에 실패한 런타임때문에 중복된 기본 키에 결과를 설정합니다.그래서 다음 몇 가지 단계를 없애'em.

6)기준을 창에서 선택 아이는 테이블의 열을 추가한다.필터 남아 있을 것이고 동일한 열 이제 선택은 디자인에서 창뿐만 아니라.쿼리를 실행 하는 경우 당신은 여전히 53 행하지만 아이없이 테이블의 열입니다.7)오른쪽 클릭을 디자인 창고 추가"그룹에".이 시점에서 실행할 경우 이 쿼리,당신이 있어야 하지 않에서 중복을 위해 ID 입니다.나는 정확하게 29 행 반환됩니다.8)확인을 클릭하고"다음"버튼을 저장할 때까지는 새로운 FillBy 쿼리가 있습니다.9)변경하려면 소스 코드를 사용하여 새로운 FillBy.

실행하는 경우 응용 프로그램,내가 가지고 필터링 부모 테이블과 같은 29 일 행하는 쿼리를 실행 버튼을 반환됩니다.아이블 일으로 예상되고 포함된 하나 이상의 아이는 행 포함된 수량 < 20.

을 위해 실제 응용 프로그램,생각하는 더 나은 것을 사용하는 저장 proc 또는 LINQ.그러나 이 문제는 나를 머리를 긁적이고 그래서 내가 만든"그것에 맞게"다만 그것 때문에 도전이었(at least for me).

다른 팁

이 문서에서는 몇 가지 문제 해결 방법을 정확하게 정확한 행의 문제를 일으키는:

데이터 집합 지옥"를 사용하지 못했 제약 조건이 있습니다.하나 이상의 행 포함 값...."

에서 보면 주문이 있습니다.디자이너입니다.cs(추측,으로 나는 일에 VB),당신은 가능성이 나타납니다 독특한 제약 조건에서 정의한 주문(주 key).

나는 문제는 때,당신은 쿼리를 실행하고,당신이 얻고 있는 하나 이상의 개별 주문자>1OrderDetails.Quanity>20....그래서,그 순서 반환됩에서 두 번의 결과 집합을 위반하는,primary key.

Try:SELECT*from 문[Ship Name]'같은%무%과십시오에서(선택하십시오에서 OrderDetails 는 수량 < 20 개)

이것은 가능성이 매우 비효율적이 그것을 할 수있는 방법,oracle 에서 사용하는 존재()는 대신에()그러나 내가 알지 못하는 sql server 동일합니다.

희망을 가지고 이것에 대답하지 않는 경우에는,이 생각했다.

데이터 집합에 있는 경우에는 순서와 OrderDetail DataTables 있는 그들 사이의 관계를 한 다음 그것은 작품처럼 다소 FK 제약 조건이 있습니다.그래서 될 수 있는 레코드가 없에 아동 테이블(OrderDetail)이 없는 cooresponding 부모(주)레코드입니다.그래서 될 수 있습니다 무엇이 일어나고나면 새로 고침하기 위해 categories 테이블 쿼리와 함께 당신은 위에서 언급하기는 여전히 아이의 행 OrderDetail 테이블이있을 것이다 refrernces 부모(주)레코드가 더 이상 없을 것이 후 새로 고칩니다.는 경우,새로 고침하기 위해 DataTable 필요 또한 새로 OrderDetail 데이터를 테이블 또는 제거 둘 사이의 관계를 DataTables.

희망이는 데 도움이...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top