DataViewのRowFilterのSELECT DISTINCT
質問
別のテーブルとの関係に基づいてDataViewにある行を絞り込もうとしていますが、使用しているRowFilterは次のとおりです。
dv = new DataView(myDS.myTable,
"id IN (SELECT DISTINCT parentID FROM myOtherTable)",
"name asc",
DataViewRowState.CurrentRows);
" myTable"および「myOther」テーブルはmyTable.IDとmyOtherTable.parentIDを介して関連付けられているため、DataViewには「myTable」からの行のみを含める必要があります。 " myOtherTable"に対応する子行があります。
残念ながら、このエラーが発生しています;
構文エラー:後にオペランドがありません 「DISTINCT」演算子。
SQLは私が知っている限りでは問題ないので、RowFilterのSQLの一部としてDISTINCTキーワードを使用する際に何らかの制限があるのだろうか?誰でもアイデアはありますか?
他のヒント
残念ながら、RowFilterプロパティは個別のキーワードをサポートしていないため、そのようにすることはできません。 RowFilter(単なるデータ列式)で実行できる式のリストは次のとおりです。 http://msdn.microsoft.com/en-us/library/system.data.datacolumn.expression.aspx
DataViewsにはToTableメソッドがあり、いくつかのオーバーロードはブール値を使用して、個別の行のみを返すかどうかを指定します。
1つの方法を次に示します。 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";
次のコードは、個別の値/レコードをテーブル/データビューから抽出しています。つまり、フィールド(CONTAINER_NO)を持つ(PROD_DESP_TRN) 最後に、このコードはコンボボックス(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
「DISTINCT」を除外してください。この場合、結果の有無は同じです。そこからトラブルシューティングします。