0

for ループがあり、最後の項目が表示されます。すべてのアイテムを取得し、ストアド プロシージャのパラメーターとして使用したいと思います。最後の項目のみを表示する基本的な理由はありますか?

Dim Flipper As String
For x As Integer = 0 To EngineContext.Current.Resolve(Of IWorkContext)().CurrentCustomer.CustomerRoles().Count - 1
        Flipper = EngineContext.Current.Resolve(Of IWorkContext)().CurrentCustomer.CustomerRoles(x).Name

    Next

Stored Proc:
Select * From myTable Inner Join myOtherTalbe ON myTable.Id = myOtherTable.Id Where RoleId = @RoleId

VB CodeBehind:
Dim strConnection As String = "myDataSource"
        Dim con As New SqlConnection(strConnection)
        Dim cmd As New SqlCommand("mainForumA", con)
        cmd.CommandType = CommandType.StoredProcedure
        'params here if needed
        cmd.Parameters.Add(New SqlParameter("@RoleId", Flippers))
        con.Open()
        Dim ds = New DataSet()
        Dim da = New SqlDataAdapter(cmd)
        da.Fill(ds)

        cdcatalog.DataSource = ds
        cdcatalog.DataBind()
        con.Close()

ロールが 1 つしかない場合は問題ありませんが、ロールが複数ある場合は次のものが必要です。

Select * From myTable Inner Join myOtherTalbe ON myTable.Id = myOtherTable.Id Where RoleId = @RoleId1 Or RoleId = @RoleId2, etc
4

2 に答える 2

1

コンマ区切りの文字列が必要Inで、SQL テキストで演算子を使用します。

Dim Flippers As New List(Of String)
For x As Integer = 0 To EngineContext.Current.Resolve(Of IWorkContext)().CurrentCustomer.CustomerRoles().Count - 1
    Flippers.Add(EngineContext.Current.Resolve(Of IWorkContext)().CurrentCustomer.CustomerRoles(x).Name)
Next
Dim values As String = String.Join(Flippers.ToArray, ",") 

Dim sqlText = "Select * From table Where Role In (" & values & ")"
于 2013-09-01T03:50:30.497 に答える
0

上記の返信が言ったように、あなたは Flipper で何もしていません。名前をリストに追加してから、それをバインドしてみてください。また、毎回 IWorkContext を解決する代わりに、CustomerRoles をリストに格納します。読みやすさと、場合によってはパフォーマンスの向上に役立ちます。

 Dim Flipper As String
    Dim names As New List(Of String)
    For x As Integer = 0 To EngineContext.Current.Resolve(Of IWorkContext)().CurrentCustomer.CustomerRoles().Count - 1
            Flipper = EngineContext.Current.Resolve(Of IWorkContext)().CurrentCustomer.CustomerRoles(x).Name
            names.Add(Flipper)
        Next

    ListView1.DataSource = names
    ListView1.DataBind()
于 2013-09-01T03:53:36.767 に答える