Foros del Web » Programando para Internet » ASP Clásico »

necesito solo algun tip de ayuda en esto!

Estas en el tema de necesito solo algun tip de ayuda en esto! en el foro de ASP Clásico en Foros del Web. hola... estoy tratando de hacer una paginacion... pero en este caso es para un Store Procedure que ejecuto desde ASP no se por que pero ...
  #1 (permalink)  
Antiguo 08/08/2002, 16:05
 
Fecha de Ingreso: febrero-2002
Mensajes: 442
Antigüedad: 23 años, 2 meses
Puntos: 2
necesito solo algun tip de ayuda en esto!

hola... estoy tratando de hacer una paginacion... pero en este caso es para un Store Procedure que ejecuto desde ASP no se por que pero lo estoy haciendo igual que siempre y me da error! Bueno seguro que ustedes se dan cuenta de cual es mi error!
ahi va!

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "DSN=sistemB;UID=sa;PWD="

anio = Request.form("anio")
///Parametros a pasar al StoreProcedure
cpostal=session("cp")
panio=anio

Set objRS = Server.CreateObject("ADODB.Recordset")

///////En ves de ponerle la sentencia de SQL le paso el nombre del StoreProcedure y los parametros...
///////
Sql="ConsultaProcedure8 '"&cpostal& "','"&panio&"'"

objRS.PageSize = mostrar
objRS.CacheSize = mostrar
objRS.Open sql,objConn,3,1

//// en esta linea es donde me da el error!!
cant_paginas = objRS.PageCount
...
...
...

////////El error cuando la ejecutos es este://///
Error de Microsoft VBScript en tiempo de ejecución error '800a01a8'

Se requiere un objeto: ''

/sitecec/acceso/consulta8.asp, line 167

------------------------------------------------------
Que puede ser??????????? Me estoy volviendo loco!!!! Ayudaaaaaaaaaaaa!!!!
  #2 (permalink)  
Antiguo 08/08/2002, 16:48
 
Fecha de Ingreso: enero-2002
Mensajes: 189
Antigüedad: 23 años, 3 meses
Puntos: 0
Re: necesito solo algun tip de ayuda en esto!

Hola:

Puedes mostrar tu store procedure?

saludos!!
  #3 (permalink)  
Antiguo 08/08/2002, 16:56
 
Fecha de Ingreso: enero-2002
Mensajes: 189
Antigüedad: 23 años, 3 meses
Puntos: 0
Re: necesito solo algun tip de ayuda en esto!

Set conexion = Server.CreateObject("ADODB.Connection")
conexion.Open "DSN=dsnTienda;uid=sa;pwd=;"
------------------
sSQL = "EXEC LISTA_PEDIDOS '" + sLisPerf + "','" + sCodCriterio + "','" + sTextoBusqueda + "', " & iNumPagina & "," & sOrden & ", " & sSentido
--------------------------------
Set rsDetalle = conexion.Execute(sSQL)
--------------------------

Aqui hay un ejemplo usando DSN. Creo que ahi esta el kit del asunto.

saludos!!
  #4 (permalink)  
Antiguo 08/08/2002, 17:02
 
Fecha de Ingreso: febrero-2002
Mensajes: 442
Antigüedad: 23 años, 2 meses
Puntos: 2
Re: necesito solo algun tip de ayuda en esto!

Hola henryzs.... gracias por el codigo... lo voy a probar... y si no me funciona vuelvo!!!!!... aqui te dejo el store procedure asi lo miras tambien!... Gracias!
------------------------------------

CREATE PROCEDURE ConsultaProcedure8

@cpostal NUMERIC(9),
@panio NUMERIC(9)

AS

IF EXISTS(SELECT * FROM sysobjects WHERE NAME = 'RESTAR') BEGIN
DROP TABLE RESTAR
END

SELECT E.numero,count(P.mes) AS 'COUNT' INTO RESTAR
FROM EMPRE E inner join PAGOS P ON (E.numero=P.n_empresa)
WHERE e.codpostal=@cpostal and P.anio = @panio
GROUP BY E.numero
HAVING COUNT(P.mes) = 12
ORDER BY 1


--Saca los que pagaron TODO el anio. 12 meses

SELECT e.nombre,d.localidad,e.mesalta,e.mesbaja,p.anio,p. mes,e.numero,p.total
FROM EMPRE as E INNER JOIN PAGOS as P on (e.numero=p.n_empresa) join dat_post as D on (e.codpostal = d.codigo)
WHERE e.codpostal=@cpostal and (P.anio = @panio or p.anio is null) and e.numero not in (select numero from restar)


UNION

SELECT e.nombre,d.localidad,e.mesalta,e.mesbaja,p.anio,p. mes,e.numero,isnull(p.total, -1)
FROM EMPRE as E LEFT JOIN PAGOS as P on (e.numero=p.n_empresa) join dat_post as D on (e.codpostal = d.codigo)
WHERE e.codpostal=@cpostal and (P.anio = @panio or p.anio is null) and p.total is null
order by 7,1,6,5
  #5 (permalink)  
Antiguo 08/08/2002, 17:11
 
Fecha de Ingreso: febrero-2002
Mensajes: 442
Antigüedad: 23 años, 2 meses
Puntos: 2
Re: necesito solo algun tip de ayuda en esto!

Hola de nuevo amigo!.... mira!.... he probado lo que me has dicho pero no hay caso!
O sea... cuando ejecuto el Store Procedure... directamente con execute y sin poner la paginacion!... anda todo en perfectas condiciones pero cuando le pongo los comandos de paginacion no anda nada!..
y me tira error en los comandos... PageCount, absolutepage.... ETC!!
Me han dicho que tengo que utilizar... ADODB.Command.... tu que piensas... puede ser??
  #6 (permalink)  
Antiguo 08/08/2002, 17:22
 
Fecha de Ingreso: enero-2002
Mensajes: 189
Antigüedad: 23 años, 3 meses
Puntos: 0
Re: necesito solo algun tip de ayuda en esto!

Hola:

Creo que es por la forma de conexion a bd. Intenta conectarse con oledb u usa ADO para ejecutar el store procedure.

Aqui te paso un codigo de paginacion pero en com, de todas formas te ayudara un poco. Me conecto por oledb.
-------------------------------------
'Metodo que ejecuta un sp y devuelve un recordset paginado
Public Function execProcedurePage(ByVal intNumReg As Integer, ByVal intNumPag As Integer, ByRef intNumPagTot As Variant, ByRef intNumRegTot As Variant, ByVal strSP As String, ParamArray params() As Variant) As ADODB.Recordset

On Error GoTo Exception

'Declarando objetos Origen
Dim rstSource As ADODB.Recordset
Dim rstDestino As ADODB.Recordset
Dim cmd As ADODB.Command
Dim intPos, intPosicionFinal As Byte

'Instanciando objetos ADO
Set rstSource = CreateObject("ADODB.Recordset")
Set rstDestino = CreateObject("ADODB.Recordset")
Set cmd = CreateObject("ADODB.Command")

'Seteando parametros de objeto command
cmd.ActiveConnection = GetConnectionString()
cmd.CommandText = strSP
cmd.CommandType = adCmdStoredProc

'Asignando parametros
setParameter cmd, params

'Seteando parametros de objeto recordset
rstSource.CursorLocation = adUseClient 'cursor de servidor
rstSource.CursorType = adOpenStatic
rstSource.LockType = adLockReadOnly

'Inicializando valores de paginación
rstSource.PageSize = intNumReg
rstSource.CacheSize = intNumReg

'Ejecutando operación
rstSource.Open cmd
  #7 (permalink)  
Antiguo 08/08/2002, 17:23
 
Fecha de Ingreso: enero-2002
Mensajes: 189
Antigüedad: 23 años, 3 meses
Puntos: 0
Re: necesito solo algun tip de ayuda en esto!

continuacion...

'Creando recordset destino con la misma estructura de origen
For intPos = 0 To rstSource.Fields.Count - 1
rstDestino.Fields.Append rstSource.Fields(intPos).Name, rstSource.Fields(intPos).Type, rstSource.Fields(intPos).DefinedSize, rstSource.Fields(intPos).Attributes
Next

'Inicializando valores de paginación de objeto destino
If rstSource.RecordCount > 0 Then
intNumPagTot = rstSource.PageCount
intNumRegTot = rstSource.RecordCount
rstSource.AbsolutePage = intNumPag
intPosicionFinal = intNumReg * intNumPag
End If

'Abriendo recordset para ingreso de datos
rstDestino.Open

'Insertando datos
While Not rstSource.EOF And rstSource.AbsolutePosition <= intPosicionFinal
rstDestino.AddNew
For intPos = 0 To rstDestino.Fields.Count - 1
rstDestino.Fields.Item(intPos).Value = Trim(rstSource.Fields(intPos).Value())
Next
rstDestino.Update
rstSource.MoveNext
Wend

'Asignando recordset
Set execProcedurePage = rstDestino

'Cerrando conexión
Set cmd.ActiveConnection = Nothing
rstSource.Close

'Destruyendo objetos
Set rstSource = Nothing
Set rstDestino = Nothing
Set cmd = Nothing

'Liberando recursos
ctx.SetComplete

'Finalizando funcion
Exit Function

Exception:

'Destruyendo objetos
Set rstSource = Nothing
Set rstDestino = Nothing
Set cmd = Nothing

'liberando recursos
ctx.SetAbort

'Lanzando error
Err.Raise Err.Number, Err.Source, Err.Description

End Function
  #8 (permalink)  
Antiguo 11/08/2002, 17:43
 
Fecha de Ingreso: febrero-2002
Mensajes: 442
Antigüedad: 23 años, 2 meses
Puntos: 2
Re: necesito solo algun tip de ayuda en esto!

Por que Utilizas dos recorset????
No entiendo!!!
  #9 (permalink)  
Antiguo 11/08/2002, 17:59
 
Fecha de Ingreso: febrero-2002
Mensajes: 442
Antigüedad: 23 años, 2 meses
Puntos: 2
Re: necesito solo algun tip de ayuda en esto!

hola... estoy usando este codigo!!!

el que me pasaste tu amigo!.. me resulta muy complicado.. porque usas dos recorset y ademas esta todo muy orientado a objetos!... estoy buscando algo mas sencillo!... haber por ejemplo... ahora estoy usando este codigo

<%@LANGUAGE="VBSCRIPT"%>
<%
MM_objConn_STRING = "dsn=sistemB;uid=sa;"

if request.form("hfaf")=1 then
Dim Cmd__panio
Cmd__panio = ""
if(request.form("anio") <> "") then Cmd__panio = request.form("anio")

Dim Cmd__cpostal
Cmd__cpostal = ""
if(session("cp") <> "") then Cmd__cpostal = session("cp")

set Cmd = Server.CreateObject("ADODB.Command")
Cmd.ActiveConnection = MM_objConn_STRING
Cmd.CommandText = "dbo.ConsultaProcedure8"
Cmd.Parameters.Append Cmd.CreateParameter("RETURN_VALUE", 3, 4)
Cmd.Parameters.Append Cmd.CreateParameter("@panio", 3, 1,4,Cmd__panio)
Cmd.Parameters.Append Cmd.CreateParameter("@cpostal", 3, 1,4,Cmd__cpostal)
Cmd.CommandType = 4
Cmd.CommandTimeout = 0
Cmd.Prepared = true
set objRS = Cmd.Execute()
paso = 1
end if
objRS_numRows = 0
%>
----------------------------
pero no me deja manipular el recorset...
Por que puede ser??? tengo que crear el recordset tambien como Objeto??
O sea... lo que yo quiero es poder mostrar los datos que hago en el StoreProcedure como si estaria manipulando un recordset comun y corriente... ej: <%=objRS("nombre")%>

espero alguna respuesta!!!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:46.