Как отобразить набор записей ADO в Access 2010

Мне нужна помощь в решении этой проблемы. Кстати, я новичок в VB. В настоящее время у меня есть хранимая процедура, которая принимает 3 параметра и при выполнении возвращает временную таблицу. Я проверил свою процедуру в SQL, и она работает, как ожидалось.

Я использую форму доступа в качестве внешнего интерфейса. Он должен принять 3 параметра через 3 элемента управления текстового поля и затем выполнить мою процедуру "по щелчку" (пользователь нажимает кнопку поиска, чтобы выполнить и запустить SQL). Приведенный ниже код выполняет это до тех пор, пока не пора отобразить мои наборы записей в таблице. Я застрял на том, как отобразить результаты моей процедуры в таблице, используя свойства ADO. Я в порядке, когда я отображаю набор записей в форме таблицы или вставляю их в таблицу.

Кажется, код засоряется в этой строке, где я пытаюсь просмотреть свой набор записей: rs.Open cmd

Доступ к VB-коду

Private Sub cmdExecuteQuery_Click()
   Dim conn As ADODB.Connection
   Dim cmd As ADODB.Command
   Dim rs As ADODB.Recordset
   Dim accessionno As String

   Set conn = New ADODB.Connection
   Set rs = New ADODB.Recordset

   conn.ConnectionString = "Driver={SQL Server};Server=***;Database=***;Uid=****;Pwd=***;"
   conn.Open

   Set cmd = New ADODB.Command
   cmd.ActiveConnection = conn
   cmd.CommandType = adCmdStoredProc
   cmd.CommandText = "dbo.NameofStoredProcedure"

  cmd.Parameters.Append cmd.CreateParameter("@worksheetno", adVarChar, 
  adParamInput, 10, Forms!RepeatForm!txtEnterWrkSheetno)
  cmd.Parameters.Append cmd.CreateParameter("@name", adVarChar, 
  adParamInput, 10, Forms!RepeatForm!txtEnterName)
  cmd.Parameters.Append cmd.CreateParameter("@year", adVarChar, 
  adParamInput, 4, Forms!RepeatForm!txtEnterYear)

  With rs
     .ActiveConnection = conn
     .CursorType = adOpenForwardOnly
     .CursorLocation = adUseServer
  End With

  Set rs = cmd.Execute()
  DoCmd.OpenForm "frmRepeats", acViewNormal
  rs.Open cmd

  rs.Close
  conn.Close

  Set rs = Nothing
  Set cmd = Nothing
  Set conn = Nothing
End Sub

SQL

CREATE PROCEDURE [dbo].[NameofStoredProcedure] @worksheetno varchar(10), 
@name varchar(10), @year varchar(4)
AS 
BEGIN
CREATE TABLE #Temp (accessionno varchar (100),
No varchar (100),
worksheetno varchar (10),
name varchar(100),
location varchar (10),
Result varchar (100),
year varchar (4))

INSERT INTO #Temp
SELECT DISTINCT
    a.accessionno,
    e.name + substring(a.Year, 3,2) + '-' + convert(varchar(10), 
    c.SampleTestNum) AS No,
    a.worksheetno,
    b.name,
    c.platetext AS Location,
    d.finalcomment AS Result,
    a.Year
FROM
    tb_sample a (nolock), tb_patient b (nolock), tb_plate c (nolock), 
    tb_finalresult d (nolock), tb_testcode e (nolock)
WHERE
    a.sample_id = b.sample_id
    and a.sample_id = c.sample_id
    and a.sample_id = d.sample_id
    and a.test_id = e.test_id
    and finalcomment like '%1061%'
    and worksheetno = @worksheetno
    and e.name = @name
    and a.year = @year
ORDER BY No
END
select distinct * from #Temp
drop table #Temp
GO

0 ответов

Другие вопросы по тегам