Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/02/2012, 06:59
Avatar de pcarvajal
pcarvajal
 
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 24 años, 9 meses
Puntos: 8
ASP+DLL+SP: Item cannot be found in the collection corresponding to the requested...

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