David Lewis
David at sierranevada.com
Wed Mar 4 12:16:55 CST 2009
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.