MY DB is in SQL. I am using Access as a frontend. Is it possible to take the value of a textbox, store it as a variable and pass it from Access to a Stored Procedure in SQL?
質問する
3663 次
2 に答える
1
VBA を使用して、パススルー クエリを実行する QueryDef を作成できます。たとえば、SQL Server に [myDb] という名前のデータベースがあり、myDb
Access が接続できるようにという名前の ODBC システム DSN を作成しました。データベースには [myContacts] という名前のテーブルが含まれています...
ID LastName
1 Thompson
2 Gumby
...そして [getContact] という名前のストアド プロシージャ
CREATE PROCEDURE getContact
-- Add the parameters for the stored procedure here
@id int = 1
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT * FROM myContacts WHERE ID=@id
END
次の VBA コードは、パススルー クエリを作成し、処理する ID 番号を識別するパラメーターを使用してストアド プロシージャを実行し、返された行を Recordset に保存します。
Sub spTest()
Dim qdf As DAO.QueryDef, rst As DAO.Recordset
Dim IdValueToProcess As Long
IdValueToProcess = 2 ' test data
Set qdf = CurrentDb.CreateQueryDef("")
qdf.ReturnsRecords = True
qdf.Connect = "ODBC;DSN=myDb;Trusted_Connection=Yes;"
qdf.SQL = "EXEC dbo.getContact " & IdValueToProcess
Set rst = qdf.OpenRecordset(dbOpenSnapshot)
Debug.Print rst!LastName ' just to make sure we got a result
rst.Close
Set rst = Nothing
qdf.Close
Set qdf = Nothing
End Sub
于 2013-06-19T19:43:41.350 に答える
0
より直接的な方法があるかもしれませんが、次のことができます。
SQL Server で 1 行 1 列のテーブルを作成します。
ストアド プロシージャを実行する前に、Access データベースはそのテーブルをクリアして値を挿入できます (標準の削除および挿入クエリを使用)。
次に、ストアド プロシージャは、単純な Select を使用してその値 (複数可) にアクセスできます。
于 2013-06-19T19:25:43.907 に答える