Foros del Web » Programación para mayores de 30 ;) » Programación General »

Problemas con recordset

Estas en el tema de Problemas con recordset en el foro de Programación General en Foros del Web. Hola, tengo el siguiente problema.... este es el codigo: <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> <% function llenarHoras . . declaracion de variables . . Otra parte del codigo ...
  #1 (permalink)  
Antiguo 12/04/2004, 13:42
 
Fecha de Ingreso: enero-2004
Ubicación: Caracas
Mensajes: 6
Antigüedad: 20 años, 9 meses
Puntos: 0
Pregunta Problemas con recordset

Hola, tengo el siguiente problema....
este es el codigo:


<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<% function llenarHoras
.
. declaracion de variables
.
. Otra parte del codigo
.
. Bla Bla Bla
.
strCon = "Provider=OraOLEDB.Oracle; Data Source=dev; User Id=chvr; Password=chvr;"

Set Conexion = Server.CreateObject("ADODB.connection")
Set Rs = Server.CreateObject("ADODB.Recordset")

Conexion.Open strCon

sqltext = "NO LO PONGO YA QUE ES MUY LARGO"

set Rs=Conexion.execute(sqltext)

do until Rs.EOF
descripcion = Rs("descripcion")
dom = Rs("dom")
lun = Rs("lun")
mar = Rs("mar")
mie = Rs("mie")
jue = Rs("jue")
vie = Rs("vie")
sab = Rs("sab")

aux = "CREO LA FILA QUE VOY A RETORNAR"
response.write(aux)
Rs.movenext
loop
Rs.close
End Function

Mi problema es que luego que ejecuto el query el recordset se encuentra vacio y no entre al ciclo....

La sintaxis de la instruccion sql esta bien ya que la he impreso en la pagina y la copio en SQL+ y la ejecuta y consigue los registro, es decir, que el problema no se encuentra en la instruccion SQL, pero como soy nuevo en esto de la programacion web uno nunca sabe que pueda ser, ya he buscado en varias partes pero no consegui nada igual a esto,. mucho sabria agradecer su ayuda

Gracias de antemano
  #2 (permalink)  
Antiguo 13/04/2004, 09:54
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 9 meses
Puntos: 50
Hola y bienvenido... creo que es importante que pongas tu query porque de ahí comentas que viene el error.

Escribela para que le echemos un ojo.

Por cierto.. se te está pasando después de tu
Rs.close cerrar tu conexion.

Cita:
conexion .close
Rs.close

Saludos
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 13/04/2004, 10:05
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 9 meses
Puntos: 1
El error esta en:

Cita:
do until Rs.EOF
El ciclo se va ejecutar mientra la condición sea verdadera, por lo tanto nunca va entrar al cilco porque rs.eof es falsa, aún no esta en fin de archivo.

Escribe la condición de esta forma:

Código:
Do Until  Not Rs.EOF
Te sugieros que cambien el Do Until por Do While ... Loop.

Saludes.
__________________
Leer es Saber, REEL.
Mi Blog
  #4 (permalink)  
Antiguo 13/04/2004, 11:53
 
Fecha de Ingreso: enero-2004
Ubicación: Caracas
Mensajes: 6
Antigüedad: 20 años, 9 meses
Puntos: 0
Exclamación Respuestas

Hola y Gracias por las respuestas...

Con respecto al query lo coloco mañana ya que hoy estoy en un cliente, gracias por lo de cerrar la coneccion y con lo del rs.EOF se supone que es falso hasta que llega a final del recordset ¿o me equivoco ? .

en cuanto a todo esto me di cuenta que mi query contiene muchas funciones como el distinct, to_char(), trunc(), to_date() sera que el ODBC tiene alguna limitacion con respecto a estas funciones o algunas otras, si es asi donde puedo conseguir esa documentacion.

Gracias de nuevo

Última edición por rbrown; 13/04/2004 a las 11:58
  #5 (permalink)  
Antiguo 13/04/2004, 12:08
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 9 meses
Puntos: 1
Rs.EOF es false mientras no haya llegado al fin de archivo (End of File). Esta bandera te indica cuando llegastes al final de la tabla.

Todos los ciclos se ejecutan mientras la condición sea verdadera, si es falsa terman el ciclo, en tu caso no entra al ciclo por la condición es falsa.
__________________
Leer es Saber, REEL.
Mi Blog
  #6 (permalink)  
Antiguo 14/04/2004, 07:46
 
Fecha de Ingreso: enero-2004
Ubicación: Caracas
Mensajes: 6
Antigüedad: 20 años, 9 meses
Puntos: 0
Funcion completa

Aqui esta el codigo completo:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<% function llenarHoras
dim strCon
dim sqltext
dim Conexion
dim fecha
dim descripcion
dim horas
dim cedula
dim periodo_fin
dim proyecto
dim dom, lun, mar, mie, jue, vie, sab
dim aux

periodo_fin = Trim(Request("periodo_fin"))
cedula = Trim(Request("Cedula"))
proyecto = trim(request("Proyecto"))

strCon = "Provider=OraOLEDB.Oracle; Data Source=dev; User Id=chvr; Password=chvr;"

Set Conexion = Server.CreateObject("ADODB.connection")
Set Rs = Server.CreateObject("ADODB.Recordset")

'' Conexion.Open strCon

sqltext = "select distinct upper(descripcion) descripcion, " _
&" nvl(f_horas('"& periodo_fin &"'," & cedula & ",to_char(to_date('"& periodo_fin &"','dd-mm-rrrr')-4), upper(a.descripcion)),0) Dom," _
&" nvl(f_horas('"& periodo_fin &"'," & cedula & ",to_char(to_date('"& periodo_fin &"','dd-mm-rrrr')-3), upper(a.descripcion)),0) Lun," _
&" nvl(f_horas('"& periodo_fin &"'," & cedula & ",to_char(to_date('"& periodo_fin &"','dd-mm-rrrr')-2), upper(a.descripcion)),0) Mar," _
&" nvl(f_horas('"& periodo_fin &"'," & cedula & ",to_char(to_date('"& periodo_fin &"','dd-mm-rrrr')-1), upper(a.descripcion)),0) Mie," _
&" nvl(f_horas('"& periodo_fin &"'," & cedula & ",to_char(to_date('"& periodo_fin &"','dd-mm-rrrr') ), upper(a.descripcion)),0) Jue," _
&" nvl(f_horas('"& periodo_fin &"'," & cedula & ",to_char(to_date('"& periodo_fin &"','dd-mm-rrrr')-6), upper(a.descripcion)),0) Vie," _
&" nvl(f_horas('"& periodo_fin &"'," & cedula & ",to_char(to_date('"& periodo_fin &"','dd-mm-rrrr')-5), upper(a.descripcion)),0) Sab" _
&" from horas a "
' &" where trunc(fecha_fin) = to_date(to_date('"& periodo_fin &"','dd-mm-yyyy'),'dd-mon-yy') and id_empleados = " & cedula

'' Conexion.Open strCon
rs.open sqltext, strcon
'' set Rs=Conexion.execute(sqltext)
response.write(sqltext)
'' response.write(" casi ENTRE ")
response.write(Rs.eof)
do while not Rs.EOF
'' response.write(" ya ENTRE ")
descripcion = Rs("descripcion")
dom = Rs("dom")
lun = Rs("lun")
mar = Rs("mar")
mie = Rs("mie")
jue = Rs("jue")
vie = Rs("vie")
sab = Rs("sab")

aux = " <tr> " _
&"<td height='21' bgcolor='#99CCFF'>" & descripcion & "</td>" _
&"<td bgcolor='#CCFFCC'> "& Dom & " </td>" _
&"<td>"& Lun &"</td>" _
&"<td>"& Mar &"</td>" _
&"<td>"& Mie &"</td>" _
&"<td>"& Jue &"</td>" _
&"<td>"& Vie&"</td>" _
&"<td bgcolor='#CCFFCC'>"& Sab &"</td>" _
&"</tr> "
response.write(aux)
Rs.movenext
loop
response.write(" fin LOOP ")
Rs.close
End Function

Como pueden ver luego que realizo el QUERY mando a imprimir rs.EOF para ver el resultado, pero este es TRUE es decir que no devuelve nada. Por esta razon pienso que pueda se el ODBC que tiene alguna restriccion, ya que el imprimo el query y lo ejecuto en SQL+ y trae los registros.

Gracias
  #7 (permalink)  
Antiguo 14/04/2004, 10:13
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 9 meses
Puntos: 1
Está algo díficil ayudarte, pero te recomiendo una pequeñas cosillas:

1 - Los objeto ADO

Código:
 Set ObjConexion = Server.CreateObject("ADODB.connection")
Set ObjRs = Server.CreateObject("ADODB.Recordset")

ObjConexion.Open CadenaConexion

ObjRs.Open CadenaSql, ObjConexion

.......

ObjRs.Close
ObjConexion.Close
Tienes que abrir y luego cerrar los objetos ADO.

Cita:
rs.open sqltext, strcon
En tu codigo en el segudno parametro has puesto en el metodo Open del RecordSet la cadena de conexión, lo caul es incorrecto, tiene poner el Objeto de conexión.

2- Intenta ejecutar la consulta haciendo un Select *, para ver si logras presetnar los datos

3- Luego Filtra pero paso a paso, un parametro primero y ve si te ejecuta, luego ve aunmento los parametros hata que tengas la consulta que necesitas.

4- Hora empeza a selecionar los campos que mostrarás uno a uno, para que vayas viendo como se van presentando los datos.

Te recomiendo esto para que puedas saber en que parte de la consulta se te presenta el problema, si es que el problema es la consulta.

Saludes
__________________
Leer es Saber, REEL.
Mi Blog
  #8 (permalink)  
Antiguo 14/04/2004, 12:14
 
Fecha de Ingreso: enero-2004
Ubicación: Caracas
Mensajes: 6
Antigüedad: 20 años, 9 meses
Puntos: 0
OraOLEDB.Oracle

Hola de nuevo.....

ya se cual es el problema , como se los habia comentado el query esta perfecto pero cuando se pasa el query al ODBC resulta que este no resuelve las funciones que son llamadas desde el Query, aparte de eso no acepta Select dentro de select, ya les habia comentado algo de esto pero no estaba seguro, ESTE ES MI PROBLEMA

No se que mas les puedo decir aparte de gracias... ...eso si... tratare de buscar una solucion y se las comunicare, de todos modos su ayuda seria muy agradecida
  #9 (permalink)  
Antiguo 14/04/2004, 15:39
 
Fecha de Ingreso: enero-2004
Ubicación: Caracas
Mensajes: 6
Antigüedad: 20 años, 9 meses
Puntos: 0
No se que decir

OK... al revisar bien el codigo SQL me di cuenta que el pase de parametros no estaba funcionando bien y el manejador no devolvia ningun error...
y simplemente no retornaba nada al recordset, corregi la funcion que se llamaba y todo funciona correctamente... gracias y disulpen por el tiempo perdido..
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 14:18.