Prologika Forums
Making sense of data

Dimension Security

rated by 0 users
This post has 1 Reply | 1 Follower

Top 25 Contributor
Posts 18
Noordin Posted: Wed, Dec 20 2006 7:28 AM

Hi Teo, I am using the code in the book 16.1 to implment dynamic security. It is working fine as far the SQL returns only one record. If there are more than one record coming through datareader, at the line resultSetBuildler.Add(tupleBuilder.ToTuple) it gives me error.

While debuging it gives "Error in Application" which is not really very helpful.

Regards

Noordin

Public Shared Function GetMarketByEmployee(ByVal UserName As String) As [Set]

Using connection As SqlConnection = New SqlConnection("Data Source=COMPAQ-SERVER;Initial Catalog=tempMIQB;Integrated Security=SSPI;")

Dim strSQL As String = "SELECT distinct '[Market].[Market].&[' + Market_Name + ']' as Market " & _

" FROM Employee INNER JOIN Market ON Employee.FK_Market = Market.PK_Market " & _

" WHERE (Employee.NT_User_Name = '" & UserName & "')"

Public Shared Function GetMarketByEmployee(ByVal UserName As String) As [Set]

Using connection As SqlConnection = New SqlConnection("Data Source=COMPAQ-SERVER;Initial Catalog=tempMIQB;Integrated Security=SSPI;")

Dim strSQL As String = "SELECT distinct '[Market].[Market].&[' + Market_Name + ']' as Market " & _

" FROM Employee INNER JOIN Market ON Employee.FK_Market = Market.PK_Market " & _

" WHERE (Employee.NT_User_Name = '" & UserName & "')"

Using connection As SqlConnection = New SqlConnection("Data Source=COMPAQ-SERVER;Initial Catalog=tempMIQB;Integrated Security=SSPI;")

Dim strSQL As String = "SELECT distinct '[Market].[Market].&[' + Market_Name + ']' as Market " & _

" FROM Employee INNER JOIN Market ON Employee.FK_Market = Market.PK_Market " & _

" WHERE (Employee.NT_User_Name = '" & UserName & "')"

Dim strSQL As String = "SELECT distinct '[Market].[Market].&[' + Market_Name + ']' as Market " & _

" FROM Employee INNER JOIN Market ON Employee.FK_Market = Market.PK_Market " & _

" WHERE (Employee.NT_User_Name = '" & UserName & "')"

" FROM Employee INNER JOIN Market ON Employee.FK_Market = Market.PK_Market " & _

" WHERE (Employee.NT_User_Name = '" & UserName & "')"

" WHERE (Employee.NT_User_Name = '" & UserName & "')"

connection.Open()

Dim command As SqlCommand = New SqlCommand(strSQL, connection)

command.CommandType = CommandType.Text

Dim reader As SqlDataReader = command.ExecuteReader

Dim expr As Expression = New Expression

Dim resultSetBuildler As SetBuilder = New SetBuilder

Dim tupleBuilder As New TupleBuilder

While reader.Read

expr.ExpressionText = reader(0).ToString

Dim mMDXValue As MDXValue = expr.CalculateMdxObject(Nothing)

Dim member As Member = mMDXValue.ToMember

tupleBuilder.Add(member)

resultSetBuildler.Add(tupleBuilder.ToTuple)

End While

Dim command As SqlCommand = New SqlCommand(strSQL, connection)

command.CommandType = CommandType.Text

Dim reader As SqlDataReader = command.ExecuteReader

Dim expr As Expression = New Expression

Dim resultSetBuildler As SetBuilder = New SetBuilder

Dim tupleBuilder As New TupleBuilder

While reader.Read

expr.ExpressionText = reader(0).ToString

Dim mMDXValue As MDXValue = expr.CalculateMdxObject(Nothing)

Dim member As Member = mMDXValue.ToMember

tupleBuilder.Add(member)

resultSetBuildler.Add(tupleBuilder.ToTuple)

End While

Dim reader As SqlDataReader = command.ExecuteReader

Dim expr As Expression = New Expression

Dim resultSetBuildler As SetBuilder = New SetBuilder

Dim tupleBuilder As New TupleBuilder

While reader.Read

expr.ExpressionText = reader(0).ToString

Dim mMDXValue As MDXValue = expr.CalculateMdxObject(Nothing)

Dim member As Member = mMDXValue.ToMember

tupleBuilder.Add(member)

resultSetBuildler.Add(tupleBuilder.ToTuple)

End While

Dim expr As Expression = New Expression

Dim resultSetBuildler As SetBuilder = New SetBuilder

Dim tupleBuilder As New TupleBuilder

While reader.Read

expr.ExpressionText = reader(0).ToString

Dim mMDXValue As MDXValue = expr.CalculateMdxObject(Nothing)

Dim member As Member = mMDXValue.ToMember

tupleBuilder.Add(member)

resultSetBuildler.Add(tupleBuilder.ToTuple)

End While

Dim resultSetBuildler As SetBuilder = New SetBuilder

Dim tupleBuilder As New TupleBuilder

While reader.Read

expr.ExpressionText = reader(0).ToString

Dim mMDXValue As MDXValue = expr.CalculateMdxObject(Nothing)

Dim member As Member = mMDXValue.ToMember

tupleBuilder.Add(member)

resultSetBuildler.Add(tupleBuilder.ToTuple)

End While

Dim tupleBuilder As New TupleBuilder

While reader.Read

expr.ExpressionText = reader(0).ToString

Dim mMDXValue As MDXValue = expr.CalculateMdxObject(Nothing)

Dim member As Member = mMDXValue.ToMember

tupleBuilder.Add(member)

resultSetBuildler.Add(tupleBuilder.ToTuple)

End While

While reader.Read

expr.ExpressionText = reader(0).ToString

Dim mMDXValue As MDXValue = expr.CalculateMdxObject(Nothing)

Dim member As Member = mMDXValue.ToMember

tupleBuilder.Add(member)

resultSetBuildler.Add(tupleBuilder.ToTuple)

End While

Dim mMDXValue As MDXValue = expr.CalculateMdxObject(Nothing)

Dim member As Member = mMDXValue.ToMember

tupleBuilder.Add(member)

resultSetBuildler.Add(tupleBuilder.ToTuple)

End While

Dim member As Member = mMDXValue.ToMember

tupleBuilder.Add(member)

resultSetBuildler.Add(tupleBuilder.ToTuple)

End While

End While

reader.Close()

Return resultSetBuildler.ToSet

End Using

Return resultSetBuildler.ToSet

End Using

End Using

End Function

End Function
Top 10 Contributor
Posts 1,857

Thanks for reporting this. Please try the following code and let me know if it works for you. The differences are shown in bold.

        Dim expr As AdomdServer.Expression = New AdomdServer.BLOCKED EXPRESSION
        Dim resultSetBuilder As SetBuilder = New SetBuilder()
        Dim tupleBuilder As TupleBuilder

        While reader.Read()
            expr.ExpressionText = reader(0).ToString()
            ' Get the member
            Dim member As Member = expr.CalculateMdxObject(Nothing).ToMember()
            ' Construct a tuple
            tupleBuilder = New TupleBuilder(member)
            'tupleBuilder.Add(member)
            ' Add the tuple to set
            Dim t As Tuple = tupleBuilder.ToTuple()
            resultSetBuilder.Add(t)
        End While

Page 1 of 1 (2 items) | RSS