문제

나는 다른 테이블과의 관계를 기반으로 내 Dataview에있는 행을 좁히려고 노력하고 있으며, 내가 사용하는 RowFilter는 다음과 같습니다.

dv = new DataView(myDS.myTable,
                 "id IN (SELECT DISTINCT parentID FROM myOtherTable)",
                 "name asc",
                 DataViewRowState.CurrentRows);

"mytable"과 "myother"테이블은 mytable.id 및 myothertable.parentid를 통해 관련되어 있으므로 아이디어는 "myothertable"에 해당하는 자식 행이있는 "mytable"의 행만 포함해야한다는 아이디어입니다.

불행히도, 나는이 오류를 받고 있습니다.

구문 오류 : '별도의'연산자 후 피연산자가 누락되었습니다.

SQL은 내가 아는 한 괜찮으므로 RowFilter의 SQL의 일부로 고유 한 키워드를 사용하는 데 약간의 제한이 있는지 궁금합니다. 누구든지 아이디어가 있습니까?

도움이 되었습니까?

해결책

불행히도, 나는 당신이 dataview의 필터 표현식에서 하위 쿼리를 수행 할 수 있다고 생각하지 않습니다. 일부 표현식에서 SQL의 서브 세트 만 사용할 수 있습니다 (문서화 여기).

하위 쿼리를 수행해야 할 것입니다 (SELECT DISTINCT parentID FROM myOtherTable) 별도.

이 기사 문제와 가능한 해결책을 설명합니다.

다른 팁

불행히도 RowFilter 속성이 별개의 키워드를 지원하지 않기 때문에 그렇게 할 수 없습니다. 다음은 행 필터에서 수행 할 수있는 표현식 목록입니다 (이것은 단지 데이터 컬럼 표현식). http://msdn.microsoft.com/en-us/library/system.data.datacolumn.expression.aspx

Dataview에는 Totable 방법이 있으며, 여러 개의 과부하에는 부울이 필요합니다.

다음은 다음과 같습니다. http://msdn.microsoft.com/en-us/library/wec2b2e6.aspx

사용 방법은 다음과 같습니다.

dataTable newDatatable = myDataView.totable (true, [열 이름의 문자열로서]);

DataView dvBindAssignedByDropDown = new DataView();

DataTable dtBindAssignedByDropDown = new DataTable();

dvBindAssignedByDropDown = ds.Tables[0].DefaultView;


string[] strColnames=new string[2];

strColnames[0] = "RedNames";

strColnames[1] = "RedValues";

dtBindAssignedByDropDown = dvBindAssignedByDropDown.ToTable(true, strColnames);

ddlAssignedby.DataTextField = "RedNamesNames";
ddlAssignedby.DataValueField = "RedNames";
ddlAssignedby.DataSource = dtBindAssignedByDropDown;
ddlAssignedby.DataBind();
ddlAssignedby.Items.Insert(0, "Assigned By");
ddlAssignedby.Items[0].Value = "0";

다음 코드는 테이블/dataview, 즉 필드 (container_no)가있는 (prod_desp_trn)에서 고유 한 값/레코드를 추출하는 것입니다. 마지막 으로이 코드는 고유 한 값/레코드로 Combobox (cmbcontainerno)를 채우고 있습니다.

양식 레벨 선언 :

Dim dsLocal As DataSet 
Dim dvm As DataViewManager
Private Sub FillcomboContainer()

    Try
        Dim dv As DataView = New DataView

        cmbContainerNo.DataSource = Nothing
        dv = dvm.CreateDataView(dsLocal.Tables("PROD_DESP_TRN"))
        dv.Sort = "CONTAINER_NO"

        cmbContainerNo.DataSource = dv.ToTable(True, "CONTAINER_NO")
        cmbContainerNo.DisplayMember = "CONTAINER_NO"

    Catch ex As Exception
        MsgBox(ex.Message)
    Finally
    End Try
End Sub

"뚜렷한"을 남기십시오. 이 경우 결과는 유무에 관계없이 동일해야합니다. 거기에서 문제를 해결하십시오.

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