Tengo una pagina asp que instancia una componente que a su vez consulta un sp que retorna valores.
Pues bien, si ejecuto el SP desde el Analizador de Consultas con parámetros en duro, arroja resultados.
Si ejecuto la componente desde Visual, con parametros en duro, arroja resultados. (o sea, la comunicacion DLL-SQL, funciona)
Ahora, si desde ASP le paso parámetros a la componente, no me arroja ningún resultado. Es más, me arroja el siguiente error:
Cita: Item cannot be found in the collection corresponding to the requested name or ordinal.
Estoy segurísimo de que los campos que estoy consultando existan. Le he dado vueltas y no he logrado resolverlo.
Les dejo los códigos por si pueden hecharme una manito por favor.
ASP
Código PHP:
Dim Rs
Set Rs = Server.CreateObject("ADODB.Recordset")
Set oCartolaDAO = Server.CreateObject("Security_TEFAM.CartolaDAO")
call oCartolaDAO.iniciar
If Not oCartolaDAO.obtenerS("1/5/2012", "2/15/2012", 0 ,0, 1,"96655860-1", Rs) then
Response.Write("Error al obtener cartola: " & oCartolaDAO.sMensajeError)
response.end
End If
if not Rs.EOF then
response.write Rs("CtaOrigen") & "|"
end if
oCartolaDAO.finalizar
Set Rs = Nothing
VB
Código PHP:
Public Function obtenerS( _
FechaDesde As String, _
FechaHasta As String, _
TipoTransaccion As Integer, _
IdEstadoTransferencia As Integer, _
TipoConsulta As Integer, _
RutEmpresa As String, _
rs As Variant) As Boolean
On Error GoTo Catch
Dim oCmd As ADODB.Command
Set oCmd = New ADODB.Command
oCmd.CommandType = adCmdStoredProc
oCmd.CommandText = "Usp_TEFAM_CartolaObtenerS"
oCmd.ActiveConnection = oConnection_
If oConnection_ Is Nothing Then
Me.set_iError = -1
Me.set_sMensajeError = "Conección cerrada, inicialice "
Exit Function
End If
Dim f1, f2, aux() As String
aux = Split(FechaDesde, "/")
If aux(0) < 10 Then aux(0) = "0" & aux(0)
If aux(1) < 10 Then aux(1) = "0" & aux(1)
f1 = aux(2) & "-" & aux(0) & "-" & aux(1)
aux = Split(FechaHasta, "/")
If aux(0) < 10 Then aux(0) = "0" & aux(0)
If aux(1) < 10 Then aux(1) = "0" & aux(1)
f2 = aux(2) & "-" & aux(0) & "-" & aux(1)
oCmd.Parameters("@FechaDesde").value = f1
oCmd.Parameters("@FechaHasta").value = f2
'oCmd.Parameters("@FechaDesde").value = FechaDesde
'oCmd.Parameters("@FechaHasta").value = FechaHasta
If TipoTransaccion = 0 Then
oCmd.Parameters("@TipoTransaccion").value = Null
Else
oCmd.Parameters("@TipoTransaccion").value = TipoTransaccion
End If
If IdEstadoTransferencia = 0 Then
oCmd.Parameters("@IdEstadoTransferencia").value = Null
Else
oCmd.Parameters("@IdEstadoTransferencia").value = IdEstadoTransferencia
End If
oCmd.Parameters("@TipoConsulta").value = TipoConsulta
oCmd.Parameters("@RutEmpresa").value = RutEmpresa
Set rs = oCmd.Execute
obtenerS = True
Exit Function
Catch:
Me.set_iError = Err.Number
Me.set_sMensajeError = Err.Description
obtenerS = False
End Function
SP
Código PHP:
CREATE PROCEDURE [dbo].[Usp_TEFAM_CartolaObtenerS]
(
@FechaDesde datetime
,@FechaHasta datetime
,@TipoTransaccion int
,@IdEstadoTransferencia int
,@TipoConsulta int
,@RutEmpresa Varchar(15)
)
AS
BEGIN
SET NOCOUNT ON
---------------------------------
--@TipoConsulta = 0 --> COUNT --
-- 1 --> SELECT --
---------------------------------
SET @FechaHasta = DATEADD(DD,1,@FechaHasta)
IF @TipoConsulta = 1
BEGIN
SELECT dbo.TEFAM_Transferencia.CtaOrigen
, dbo.TEFAM_Transferencia.NombreDestino
, dbo.TEFAM_Banco.Nombre AS BancoDestino
, dbo.TEFAM_Transferencia.MontoTRX
, dbo.TEFAM_Transferencia.IdEstadoTransferencia
, dbo.TEFAM_Transferencia.IdTipoTrfTransferencia
, dbo.TEFAM_EstadoTransferencia.Nombre AS EstadoTransferencia
, dbo.TEFAM_TipoTrfTransferencia.Nombre AS TipoTransferencia
, CONVERT(VARCHAR,dbo.TEFAM_Transferencia.FechaCreacion,105) + ' ' + CONVERT(VARCHAR,dbo.TEFAM_Transferencia.FechaCreacion,108) AS FechaUsuarioNormal
, dbo.TEFAM_Transferencia.IdTransferencia
, ISNULL(dbo.TEFAM_Transferencia.IdNominaCabecera,0) AS IdNominaCabecera
, dbo.TEFAM_Transferencia.MotivoTransferencia AS MotivoTransferencia
FROM dbo.TEFAM_Transferencia INNER JOIN
dbo.TEFAM_Banco ON dbo.TEFAM_Transferencia.IdBancoDestino = dbo.TEFAM_Banco.IdBanco
INNER JOIN dbo.TEFAM_EstadoTransferencia
ON dbo.TEFAM_Transferencia.IdEstadoTransferencia = dbo.TEFAM_EstadoTransferencia.IdEstadoTransferencia INNER JOIN
dbo.TEFAM_TipoTrfTransferencia ON dbo.TEFAM_Transferencia.IdTipoTrfTransferencia = dbo.TEFAM_TipoTrfTransferencia.IdTipoTrfTransferencia
WHERE FechaCreacion BETWEEN @FechaDesde AND @FechaHasta
AND ((@IdEstadoTransferencia is null) OR (@IdEstadoTransferencia IS NOT NULL AND @IdEstadoTransferencia = TEFAM_EstadoTransferencia.IdEstadoTransferencia))
AND ((@TipoTransaccion is null) OR (@TipoTransaccion IS NOT NULL AND @TipoTransaccion = TEFAM_TipoTrfTransferencia.IdTipoTrfTransferencia))
AND dbo.TEFAM_Transferencia.RutEmpresa = @RutEmpresa
AND dbo.TEFAM_Transferencia.IdEstadoTransferencia <> 9
END
ELSE
BEGIN
SELECT cuantos=count(dbo.TEFAM_Transferencia.CtaOrigen)
FROM dbo.TEFAM_Transferencia INNER JOIN
dbo.TEFAM_Banco ON dbo.TEFAM_Transferencia.IdBancoDestino = dbo.TEFAM_Banco.IdBanco INNER JOIN
dbo.TEFAM_EstadoTransferencia ON dbo.TEFAM_Transferencia.IdEstadoTransferencia = dbo.TEFAM_EstadoTransferencia.IdEstadoTransferencia INNER JOIN
dbo.TEFAM_TipoTrfTransferencia ON dbo.TEFAM_Transferencia.IdTipoTrfTransferencia = dbo.TEFAM_TipoTrfTransferencia.IdTipoTrfTransferencia
WHERE FechaCreacion BETWEEN @FechaDesde AND @FechaHasta
AND ((@IdEstadoTransferencia is null) OR (@IdEstadoTransferencia IS NOT NULL AND @IdEstadoTransferencia = TEFAM_EstadoTransferencia.IdEstadoTransferencia))
AND ((@TipoTransaccion is null) OR (@TipoTransaccion IS NOT NULL AND @TipoTransaccion = TEFAM_TipoTrfTransferencia.IdTipoTrfTransferencia)) AND dbo.TEFAM_Transferencia.RutEmpresa = @RutEmpresa
AND dbo.TEFAM_Transferencia.IdEstadoTransferencia <> 9
END
END