By the way, if I run the script on the blog for option #4, I get: System.Data.SqlClient.SqlException: Invalid object name 'dbo.DataSprings_DynamicViews_GetDynamicFormsResults'. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at DotNetNuke.Data.SqlDataProvider.ExecuteADOScript(String ConnectionString, String SQL) at DotNetNuke.Data.SqlDataProvider.ExecuteScript(String ConnectionString, String Script) Alter Procedure dbo.[DataSprings_DynamicViews_GetDynamicFormsResults] @ModuleID int, @UserID int, @MySQL nvarchar(MAX) OUTPUT AS Declare curBubba Cursor FOR SELECT ShortFieldName, DynamicQuestionID FROM dbo.[dynamicforms_question] where QuestionType <> 'HTML' AND QuestionType <> 'HR' AND Question NOT LIKE '%(' AND Question NOT LIKE ')%' AND InActive=0 AND ModuleID = @ModuleID AND ShortFieldName NOT IN (Select ShortFieldName from DynamicForms_Question where ModuleID = @ModuleID And InActive=0 Group By ShortFieldName Having Count(*) > 1) ORDER BY SortOrder FOR READ ONLY; Declare @Question VarChar(500); Declare @DynamicQuestionID uniqueidentifier; Declare @SQLToUse VarChar(MAX); Declare @SQLToUseJoin VarChar(MAX); Declare @SQLToExecute Varchar(MAX); Declare @Alias VarChar(10); Declare @intCounter Int; set @Question = ''; set @SQLToUse = ''; set @intCounter = 0; set @Alias = ''; set @SQLToUseJoin = ''; OPEN curBubba; FETCH NEXT FROM curBubba INTO @Question, @DynamicQuestionID; WHILE @@FETCH_STATUS = 0 BEGIN set @intCounter = @intCounter + 1; set @Alias = '[RJoin_' + CAST(@intCounter as varchar(20)) + ']'; if DataLength(@SQLToUse) = 0 BEGIN set @SQLToUse = 'SELECT A.UniqueResponseID as UniqueID, A.UserID, IsNull(' + @Alias + '.response,''N/A'') as [' + lower(@Question) + '] ' set @SQLToUseJoin = ' From ( SELECT distinct Y.uniqueresponseID, Y.UserID, B.UserName from dbo.[DynamicForms_QuestionResponse] As Y inner join dbo.[DynamicForms_Question] as Z on (Y.DynamicQuestionID = Z.DynamicQuestionID) Left Outer Join dbo.[Users] B on B.UserID = Y.UserID where ((Y.UserID = ' + Cast(@UserID as varchar(10)) + ') OR (' + Cast(@UserID as varchar(10)) + ' = -2)) AND Z.ModuleID = ' + Cast(@ModuleID as varchar(20)) + ' ) As A Left Outer join dbo.[DynamicForms_QuestionResponse] as ' + @Alias + ' on (A.uniqueresponseID = ' + @Alias + '.uniqueresponseID and ''' + Cast(@DynamicQuestionID as varchar(50))+ ''' = ' + @Alias + '.DynamicQuestionID) ' END ELSE BEGIN set @SQLToUse = @SQLToUse + ', ' + @Alias + '.response as [' + lower(@Question) + '] ' set @SQLToUseJoin = @SQLToUseJoin + 'Left Outer join dbo.[DynamicForms_QuestionResponse] as ' + @Alias + ' on (A.uniqueresponseID = ' + @Alias + '.uniqueresponseID and ''' + Cast(@DynamicQuestionID as varchar(50))+ ''' = ' + @Alias + '.DynamicQuestionID) ' END; FETCH NEXT FROM curBubba INTO @Question, @DynamicQuestionID; END CLOSE curBubba; DEALLOCATE curBubba; Set @SQLToExecute = Convert(varchar(MAX), @SQLToUse) + Convert(varchar(MAX), @SQLToUseJoin) SET @MySQL = @SQLToExecute RETURN |