Jim Dettman
jimdettman at verizon.net
Sat Aug 6 07:11:27 CDT 2011
John,
You can use a temp querydef:
Dim qdf As QueryDef
Dim sParam As string
sParam = ""
For i = 0 To rs.Fields.count - 2
sParam = "?," & sParam
Next i
sParam = sParam & "?"
sql = "{call qrySoTransHeaderInsert(" & sParam & ")}"
Set qdf = gConSqlComp.CreateQueryDef("", sql)
For i = 0 To rs.Fields.count - 1
qdf.Parameters(i) = rs.Fields(i).Value
Next
qdf.Execute
qdf.Close
This snippet of code is used to move a record between a local JET table
and a SQL one in the backend. The sproc is doing the actual insert into the
BE table.
Here is part of the corresponding fetch:
sql = "{call qrySoTransGet('" & Me!cboTransId & "')}"
Set qdf = gConSqlComp.CreateQueryDef("", sql)
qdf.ODBCTimeout = 0 ' was 10
Set rs = qdf.OpenRecordset(dbOpenForwardOnly)
If rs.EOF Then GoTo No_Data
If (TID = Exchange_All) Then
sql = "Delete From tblSoTransHeader"
gDbSo.Execute sql
Set rsD = gDbSo.OpenRecordset("tblSoTransHeader", dbOpenDynaset,
dbAppendOnly)
rsD.AddNew
ts = rs!ts
For Each fld In rsD.Fields
fld.Value = rs(fld.Name)
Next
rsD.Update
rsD.Close
End If
rs.NextRecordset
If (TID = Exchange_All Or TID = Exchange_Dtl) And Not rs.EOF Then
sql = "Delete From tblSoTransDetail"
qrySOTransGet is a sproc that returns multiple recordsets, one for each
table involved in with the order system.
Last, here's a handy routine when your debugging calling sproc's:
Sub GetSPParameters(strSPName As String)
' Return the attributes of the parameters of a stored procedure.
' From the debug window:
' Call GetSPParameters("qrySMGetPeriod")
'
Dim strConnect As String
Dim cnn As ADODB.Connection
Dim cmd As ADODB.Command
Dim prm As ADODB.Parameter
10 Set cnn = New ADODB.Connection
20 cnn.Open "DSN=SYS"
30 Set cmd = New ADODB.Command
40 cmd.ActiveConnection = cnn
50 cmd.CommandText = strSPName
60 cmd.CommandType = adCmdStoredProc
70 cmd.Parameters.Refresh
80 For i = 0 To cmd.Parameters.Count - 1
90 Debug.Print "Parameter: " & i
100 Debug.Print " Name: " & cmd.Parameters(i).Name
110 Debug.Print " Type: " & cmd.Parameters(i).Type
120 Debug.Print "Direction: " & cmd.Parameters(i).Direction
130 Debug.Print " Size: " & cmd.Parameters(i).size
140 Debug.Print " Attrib: " & cmd.Parameters(i).Attributes
150 Debug.Print " Value: " & cmd.Parameters(i).Value
160 Debug.Print ""
170 Next i
180 cnn.Close
190 Set cnn = Nothing
End Sub
It's in ADO, but it's a great way to determine all the params and their
attributes.
Jim.
-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of jwcolby
Sent: Friday, August 05, 2011 11:58 PM
To: Access Developers discussion and problem solving
Subject: [AccessD] Stored procedures as Queries
I am using pass through queries where I reference a stored procedure and
pass a param through. At
the moment I am having to open the querydef and replace the parameter with
some value, save the sql
of the querydef and then save the querydef. Is there any other way to do
this? It seems crude to
the max.
--
John W. Colby
www.ColbyConsulting.com
--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com