David McAfee
davidmcafee at gmail.com
Wed Mar 4 12:57:50 CST 2009
Try this: ALTER PROCEDURE usp_MyStoredProcedure (@nvcPayroll [nvarchar](50), @dtiJobDate [datetime], @nvcCode [nvarchar](1))AS BEGIN DECLARE @intUpdateFailed INT SET NOCOUNT ON UPDATE dbo.MyTable SET AvailabilityCode=@nvcCode WHERE PayrollNo = @nvcPayroll AND JobDate = @dtiJobDate AND (@nvcCode = 'A' OR @nvcCode = 'N') AND (AvailabilityCode= 'A' OR AvailabilityCode= 'N') SET @intUpdateFailed=@@ROWCOUNT DELETE FROM dbo.MyTable2 WHERE PayrollNo=@nvcPayroll INSERT INTO MyTable2 (WebResult, PayrollNo) SELECT CASE WHEN @intUpdateFailed>0 THEN 'Success' ELSE 'Failed' END, @nvcPayroll SET NOCOUNT OFF SELECT WebResult, PayrollNo FROM MyTable2 WHERE PayrollNo=@nvcPayroll END I added the NOCOUNT statements and also selected the actual field names from the final select. David On Wed, Mar 4, 2009 at 10:16 AM, David Lewis <David at sierranevada.com> wrote: > > > You might try the following kludge: > > At the beginning of the sproc, before all other code, have a dummy select > statement that mirrors the final select that you want to execute: > pseudo code: SELECT 'Success' as Result, > ,'Some text' as nvcPayroll > ,[Column 1] > ,[Column 2] > ... > FROM MyTable2 > WHERE 1=0 > Obviously this will not return any rows, but it will let the front end know > what kind of result set to expect. Then have the rest of the sproc as > below. I'm not certain this will solve your problem, but I have used in in > other instances successfully. > > Regards, d lewis > > > > To all, > > Sorry about cross posting this but really having a nightmare, I have the > following store procedure in SQL Server 2005 : > > usp_MyStoredProcedure > ( > @nvcPayroll [nvarchar](50), > @dtiJobDate [datetime], > @nvcCode [nvarchar](1) > ) > AS > BEGIN > DECLARE @intUpdateFailed INT > UPDATE dbo.MyTable > SET AvailabilityCode=@nvcCode > WHERE PayrollNo = @nvcPayroll AND > JobDate = @dtiJobDate AND > ( > @nvcCode = 'A' OR > @nvcCode = 'N' > ) AND > ( > AvailabilityCode= 'A' OR > AvailabilityCode= 'N' > ) > > SET @intUpdateFailed=@@ROWCOUNT > DELETE FROM dbo.MyTable2 > WHERE PayrollNo=@nvcPayroll > INSERT INTO MyTable2 (WebResult, PayrollNo) > SELECT CASE WHEN @intUpdateFailed>0 THEN 'Success' ELSE 'Failed' END, > @nvcPayroll > SELECT * > FROM MyTable2 > WHERE PayrollNo=@nvcPayroll > END > > If I run this in SQL Server seems to work fine, and the SELECT * FROM > MyTable2 WHERE PayrollNo=@nvcPayroll returns all the fields. However I > have > a simple piece of VB code as below: > > Dim rs As ADODB.Recordset > If DE.Conn.Start = adStateClosed Then > DE.Conn.Open > Endif > Set rs = DE.Conn.Execute(usp_MyStoredProcedure '999999', '" & > format(Date,"mm/dd/yy") & "','N'") > msgbox rs.fields(0) > > DE.Conn.Close > > ' DE.Conn is a DataEnvironment connection which links to the SQL Server > > The vb code returns Item cannot be found in the collection corresponding to > the requested name or ordinal. > > However if I run the SP, then comment out everything except the SELECT > statement it returns the resultset. > > Can anyone tell me what is happening or what I am doing wrong please. > > Thanks in advance for any help on this.... > > > > > > The contents of this e-mail message and its attachments are covered by the > Electronic Communications Privacy Act (18 U.S.C. 2510-2521) and are intended > solely for the addressee(s) hereof. If you are not the named recipient, or > the employee or agent responsible for delivering the message to the intended > recipient, or if this message has been addressed to you in error, you are > directed not to read, disclose, reproduce, distribute, disseminate or > otherwise use this transmission. If you have received this communication in > error, please notify us immediately by return e-mail or by telephone, > 530-893-3520, and delete and/or destroy all copies of the message > immediately. > > _______________________________________________ > dba-SQLServer mailing list > dba-SQLServer at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/dba-sqlserver > http://www.databaseadvisors.com > >