[dba-SQLServer]Calling a Sproc with Parameter

David Emerson davide at dalyn.co.nz
Wed Mar 5 17:01:37 CST 2003


Thanks for your suggestions Susan and Francisco,

The sproc works if I open it from Access and manually enter the parameter.

Tried all suggestions below - no difference.

Tried changing the name of the parameter - same result.

Tried (with same result) -
         Me.RecordSource = "EXEC spfrmCustomers @AccStatus='" & 
strAccStatus & "'"
         Me.RecordSource = "EXEC spfrmCustomers @AccStatus='" strAccStatus
         Me.RecordSource = "EXEC spfrmCustomers strAccStatus"

Finally, tried clearing the InputParameter property on the form 
(was  @AccStatus='%') and bingo!  One happy-chappy :)  Seemed to be some 
conflict with this but I don't understand why.

David


At 5/03/2003, you wrote:
>Since it works in QA, now try executing it from the stored procedure tab in
>your ADP, look for spfrmCustomers and double click it, then enter the
>parameter manually (into the input box)...  If this works fine, then the
>error lies in the call
>
>Modify for grins...
>Me.RecordSource = "EXEC spfrmCustomers @AccStatus = 'Active'"
>to
>Me.RecordSource = "EXEC spfrmCustomers 'Active'"
>OR
>Me.RecordSource = "EXEC spfrmCustomers @AccStatus = "& chr(39) & "Active" &
>chr(39)
>
>
>
>
>
>-Francisco
>http://rcm.netfirms.com
>----- Original Message -----
>From: "David Emerson" <davide at dalyn.co.nz>
>To: <dba-sqlserver at databaseadvisors.com>
>Sent: Wednesday, March 05, 2003 10:43 AM
>Subject: Re: [dba-SQLServer]Calling a Sproc with Parameter
>
>
>: I have used query analyser and run the sproc both with entering % and
>: Active as the parameter.  Both work OK.
>:
>: I can't seem to find any information on "error 2353 - Bad query
>: parameter."  Anyone know of a source that will explain this?  (I tried
>: Access help, BOL, Google).
>:
>: Here is the sproc in case I have missed something -
>:
>: ALTER PROCEDURE spfrmCustomers
>:
>:         (
>:                 @AccStatus varchar(20) = '%'
>:         )
>:
>: AS
>:         SET NOCOUNT ON
>:
>:         SELECT dbo.tblCustomers.*,
>:                 case
>:                         when [Residential]=1
>:                                 then CSurname + C1stName
>:                         else TradingName
>:                 end
>:                 as SortOrder
>:         FROM dbo.tblCustomers
>:         WHERE AccStatus like @AccStatus
>:         ORDER BY SortOrder
>:
>:         If @@Error <> 0
>:                 Begin
>:                         Select 'Unexpected error occurred: ', @@Error
>:                         Return @@Error
>:                 End
>:         else
>:                 return 0
>:
>:
>:
>: David
>:
>: At 5/03/2003, you wrote:
>:
>:
>: Both points are valid, but in this case the Sproc must be able to handle
>: the
>: '%'.  Assuming that you are not executing Dynamic Sql in your sproc you
>: maybe manipulating the sproc to select all Customers not just the active
>: ones...  Do you have access to Query Analyzer? if so I would test the
>: sproc
>: in there to make sure it executes w/o errors.  I have found certain
>: errors
>: to be Access Only.  Such as selecting data from a linked table on
>: another
>: server.
>:
>:
>: -Francisco
>: http://rcm.netfirms.com <http://rcm.netfirms.com/>
>: ----- Original Message -----
>: From: "Djabarov, Robert" <Robert.Djabarov at usaa.com>
>: To: <dba-sqlserver at databaseadvisors.com>
>: Sent: Wednesday, March 05, 2003 7:13 AM
>: Subject: RE: [dba-SQLServer]Calling a Sproc with Parameter
>:
>:
>: I will have to respectfully disagree with the previous recommendations.
>: LIKE will prevent your sp from compiling in the first place, while the
>: usage
>: of EXEC is very proper in the original code.  Although the suggested
>: form is
>: still valid, specifying named parameters is actually encouraged for the
>: clarity of the code, and MS fully supports EXEC sp_PROC
>: @Parm1='<value>',
>: @Parm2=<value>, etc.
>:
>: Robert Djabarov
>: Senior SQL Server DBA
>: USAA IT/DBMS
>: * (210) 913-3148 - phone
>: * (210) 753-3148 - pager
>:
>: -----Original Message-----
>: From: Mike and Doris Manning [ mailto:mikedorism at ntelos.net
>: <mailto:mikedorism at ntelos.net> ]
>: Sent: Wednesday, March 05, 2003 7:25 AM
>: To: dba-sqlserver at databaseadvisors.com
>: Subject: RE: [dba-SQLServer]Calling a Sproc with Parameter
>:
>: Two things.
>:
>: 1)  Make sure your sproc is looking for LIKE @AccStatus and not =
>: @AccStatus
>:
>: 2)  When you use EXEC, you don't add the name of the parameter.
>: "EXEC spfrmCustomers 'Active'"
>:
>: Doris Manning
>: Database Administrator
>: Hargrove Inc.
>: www.hargroveinc.com <http://www.hargroveinc.com/>
>: -----Original Message-----
>: From: dba-sqlserver-admin at databaseadvisors.com
>: [ mailto:dba-sqlserver-admin at databaseadvisors.com
>: <mailto:dba-sqlserver-admin at databaseadvisors.com> ] On Behalf Of David
>: Emerson
>: Sent: Tuesday, March 04, 2003 07:01 PM
>: To: dba-SQLServer at databaseadvisors.com
>: Subject: [dba-SQLServer]Calling a Sproc with Parameter
>: I have a button on a form which is used to filter the records.  The code
>: is -
>:
>: Private Sub cmdCustomerFilter_Click()
>:
>:     On Error GoTo Err_cmdCustomerFilter_Click
>:
>:     If Me!cmdCustomerFilter.Caption = "Show Active" Then
>:         Me.RecordSource = "EXEC spfrmCustomers @AccStatus = 'Active'"
>: <-
>: Problem line
>:         Me!cmdCustomerFilter.Caption = "Show All"
>:     Else
>:         Me.RecordSource = "EXEC spfrmCustomers @AccStatus='%'"
>:         Me!cmdCustomerFilter.Caption = "Show Active"
>:     End If
>: .....
>:
>: End Sub
>:
>: In the sproc the parameter is -
>:
>: @AccStatus varchar(20) = '%'
>:
>: When I click on the button I get error 2353 - Bad query parameter.  I
>: can
>: run the query in Query analyser and it runs ok.
>:
>: If I leave the @AccStatus = 'Active' off then a message appears telling
>: me
>: that the procedure expects the parameter (so this tells me it is calling
>: the
>: correct sproc)
>:
>: I think the problem is in the call but can't put my finger on it.  Any
>: help?
>:
>:
>:
>: Regards
>:
>: David Emerson
>: DALYN Software Ltd
>: 25b Cunliffe St, Johnsonville
>: Wellington, New Zealand
>: Ph/Fax (877) 456-1205
>:




More information about the dba-SQLServer mailing list