1

現在、ユーザーのセキュリティ グループ レベルに応じてデータベースから特定のレコードを取得する VB.net/ASPX Web アプリを実行しています。私がやりたいことは、ユーザーが複数のセキュリティ グループに属している場合、ユーザーが存在する各セキュリティ グループのレポートを取得することです。

where 句には、次の行があります。 and b.security_level_id = @security_level_id

これによりsecurity_level_id、選択クエリに渡すことができるのは 1 つだけです。

パラメータを変更して、クエリを複数回実行することは可能ですか:

<asp:Parameter DefaultValue="0" Name="security_level_id" />

または、このパラメーターから配列を作成し、単一のクエリでそれをループできますか?

ありがとう!

解決済み:

Ok。実際の VB コードで select コマンドを作成することで、この問題を解決しました。パラメーターの必要がなくなったため、変数をクエリ文字列に直接渡すことができました。

私が使用したもの: Protected Sub SqlDS_ReportCategories_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles SqlDS_ReportCategories.Init

Dim s As SqlDataSource = CType(sender, SqlDataSource) データ ソースのオブジェクト参照を作成します。

次に s.SelectCommand ="一部のクエリ" + 変数 + "残りのクエリ"

これが将来人々に役立つことを願っています!

  • マット
4

2 に答える 2

1

解決済み:

Ok。実際のVBコードでselectコマンドを作成することでこの問題を解決しました。これにより、パラメーターが不要になり、変数をクエリ文字列に直接渡すことができるようになりました。

使用したもの:Protected Sub SqlDS_ReportCategories_Init(ByVal sender As Object、ByVal e As System.EventArgs)Handles SqlDS_ReportCategories.Init

データソースのハンドルを取得し、続いて次のようにします。Dim s As SqlDataSource = CType(sender、SqlDataSource)そのオブジェクト参照を作成します。

次にs.SelectCommand="some query" + Variable + "rest of query"

これが将来の人々に役立つことを願っています!

于 2012-08-10T21:58:13.937 に答える
0

SQLINを使用して、複数のアイテムを同時に検索できます。

最初に行うことは、セキュリティ レベルをカンマ区切りのリストにまとめることです。

Dim sbSQL As New System.Text.StringBuilder(500)

For Each wSecurityLevel As Integer In theUser.SecurityLevels
    If sbSQL.Length <> 0 Then
        sbSQL.Append(",")     
    End If
    sbSQL.Append(wSecurityLevel)
Next

次に、IN を使用するように SQL ステートメントをセットアップします。

"and b.security_level_id IN (" & sbSQL.ToString() & ")"
于 2012-08-09T15:47:10.150 に答える