2016-03-02 1 views
0

Предположит, эту хранимую процедуру в SQL Server:Заполнение отчет из хранимой процедуры на переднюю доступа конца

CREATE PROCEDURE sp_MySP AS 
    BEGIN 
    SELECT a.Field1, a.Field2, v.Field3, p.Field4, a.Field5 
    INTO #Temp1 
    FROM tblMyTable1 AS a, tblMyTable2 AS p, tblMyTable3 AS v 
    WHERE a.Field1 = p.Field1 
    AND a.Field1 = v.Field1 

    SELECT a.Field1, a.Field2, v.Field3, p.Field4, a.Field5 
    INTO #Temp2 
    FROM tblMyTable1 AS a, tblMyTable2 AS p, tblMyTable3 AS v 
    WHERE a.Field1 = p.Field1 
    AND a.Field1 = v.Field1 

    SELECT * 
    FROM #Temp1 

    UNION ALL 

    SELECT * 
    FROM #Temp2 

    END 

И эта УВУ (я поставил код VBA на НАГРУЗКАХ события отчета):

Private Sub Report_Load() 
    Dim rs As ADODB.Recordset 
    Dim cnComments As New ADODB.Connection 
    Dim strConn As String 
    strConn = "PROVIDER=SQLOLEDB;DATA SOURCE=WML202;INITIAL CATALOG=TOOL_TRACKING;UID=" & CVHx(SSTR1) & ";PWD=" & CVHx(SSTR2) & ";" 
    cnComments.Open strConn 

    Set rs = cnComments.Execute("EXEC sp_MySP") 

    '** What do I do here? 

End Sub 

Фактическая хранимая процедура намного сложнее (и не нужна), но это макет набора данных. Это UNION ALL из нескольких файлов #Temp.

Как сделать часть '** What do I do here? так, чтобы результаты хранимой процедуры заполнили отчет?

+1

Боковое примечание: вы не должны ** использовать префикс 'sp_' для ваших хранимых процедур. Microsoft [зарезервировала этот префикс для собственного использования (см. * Именование сохраненных процедур *)] (http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx) и вы рискуете столкнуться с именем когда-нибудь в будущем. [Это также плохо для производительности вашей хранимой процедуры] (http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix). Лучше просто просто избегать 'sp_' и использовать что-то еще в качестве префикса - или никакого префикса вообще! –

+2

Создайте сквозной запрос, который извлекает данные из хранимой процедуры и использует запрос в качестве источника записи отчета. – HansUp

ответ

2

Вы можете установить источник записи формы для сквозного запроса, который вызывает хранимую процедуру (аналогично тому, как вы должны указывать имя таблицы или запроса/представления).

Тогда вы могли бы просто использовать элементы управления, управляемые данными.

Смежные вопросы