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

Problemas para mover el recordset

Estas en el tema de Problemas para mover el recordset en el foro de ASP Clásico en Foros del Web. Hola, Estoy haciendo una consulta a 3 diferentes tablas en 2 diferentes BD, al momento en que voy guardadno los datos con un Update, tengo ...
  #1 (permalink)  
Antiguo 30/07/2005, 15:39
 
Fecha de Ingreso: julio-2005
Mensajes: 128
Antigüedad: 19 años, 9 meses
Puntos: 0
Busqueda Problemas para mover el recordset

Hola, Estoy haciendo una consulta a 3 diferentes tablas en 2 diferentes BD, al momento en que voy guardadno los datos con un Update, tengo problemas para mover el recordset, ya que me envia el error de EOF y BOF, ya no se por donde moverle ya le he puesto la validacion con While not rsFactura.eof, y aun asi me sigue mandando error. Les anexo el codigo y espero que alguien sepa que estoy haciendo mal.

El rs que liga todo es rsFactura

<%
Dim rsFactura
Dim rsFactura_numRows

Set rsFactura = Server.CreateObject("ADODB.Recordset")
rsFactura.ActiveConnection = MM_ConFactura_STRING
rsFactura.Source = "SELECT Articulo FROM dbo.Factura Where Bandera= '" & 0 & "' group by Articulo"
rsFactura.CursorType = 0
rsFactura.CursorLocation = 2
rsFactura.LockType = 1
rsFactura.Open()

rsFactura_numRows = 0
%>
<%While (NOT rsFactura.EOF)
Dim rsFact, sqlFact
Dim rsFact_numRows
Set rsFact = Server.CreateObject("ADODB.Recordset")
rsFact.ActiveConnection = MM_ConFactura_STRING
rsFact.Source = "SELECT * FROM dbo.Factura WHERE Articulo = '"& rsFactura("Articulo")&"'"
rsFact.CursorType = 0
rsFact.CursorLocation = 2
rsFact.LockType = 1
rsFact.Open()

rsFact_numRows = 0
%>
<% 'Limpo la descripcion de comillas simples
Dim var
var = TRIM(rsFact("Descripcion"))
var = replace(var,"'","")
%>
<%response.Write(var)
-While (NOT rsFact.EOF)
Dim rsCMKArt
Dim rsCMKArt_numRows

Set rsCMKArt = Server.CreateObject("ADODB.Recordset")
rsCMKArt.ActiveConnection = MM_ConD84_STRING
rsCMKArt.Source = "SELECT * FROM dbo.Articulos Where Descripcion = '" & (var) & "'"
rsCMKArt.CursorType = 0
rsCMKArt.CursorLocation = 2
rsCMKArt.LockType = 1
rsCMKArt.Open()

rsCMKArt_numRows = 0
response.Write(rsCMKArt("Clave"))
%>
<%
Dim sqlUp, rsUpdate
Set rsUpdate = Server.CreateObject("ADODB.Recordset")

sqlUp = "UPDATE Factura Set ClaveArtCMK= '"&rsCMKArt("Clave")&"' Where Articulo='"& rsFact("Articulo")&"'"
rsUpdate.Open sqlUp,MM_ConFactura_STRING
%>
<%
rsCMKArt.MoveNext
rsFact.MoveNext
Wend
rsFactura.MoveNext
Wend
%>
  #2 (permalink)  
Antiguo 30/07/2005, 19:20
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 8 meses
Puntos: 18
Cita:
Iniciado por LluviaRamirez
...-While (NOT rsFact.EOF) ...¿¿¿???
...SELECT * FROM dbo.Articulos Where Descripcion = '" & (var) & "'"¿¿¿???
no entiendo el -while
y tampoco &(var)&
  #3 (permalink)  
Antiguo 01/08/2005, 08:34
 
Fecha de Ingreso: julio-2005
Mensajes: 128
Antigüedad: 19 años, 9 meses
Puntos: 0
Hola, el rsFactura lo utilizo para agrupar los articulos por numero de factura, y ese dato me sirve para ir recorriendo el 2do recordset (rsFact) y le puse el While para que no me marcara el error "ADODB.Field (0x80020009)
El valor de BOF o EOF es True, o el actual registro se eliminó; la operación solicitada requiere un registro actual."
Pero aun me lo sigue marcando, ya le he probado por donde se me ocurre pero no logro librar este error.
TEngo un campo que se llama Descripcion y dentro de este a veces me encuetro con palabras que tienen una comilla simple, como MM'S MINIS, entonces al hacer mi colsulta me marca un error de sintaxis, por lo que descompuse ese campo con un replace y el resultado lo guardo en var, pero a partir de que hice eso es cuando me marca el error, ¿Pero como le puedo hacer para que no me tome en cuenta las comillas simples que tenga el campo? Ahora que te escribo esto voy a intentar limpiar mi dato de las comillas simples antes de guardarlo en la BD, y lo intentare poniendo directamente el rsFact("Descripcion") sin vaciarlo antes a una variable. Y les comento que paso .
Espero haberme dado a entender :)
  #4 (permalink)  
Antiguo 01/08/2005, 17:02
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 8 meses
Puntos: 18
no, si lo que no entiendo es el guión que tienes ANTES del while.

prueba con while not rs.bof and not rs.eof

y lo de limpiar las comillas antes de insertar, buena idea
  #5 (permalink)  
Antiguo 01/08/2005, 17:26
 
Fecha de Ingreso: julio-2005
Mensajes: 128
Antigüedad: 19 años, 9 meses
Puntos: 0
Hola muchas gracias por tus comentarios, estuve haciendo algunos cambios y no se si este muy bien estructurado mi programa pero ya funciono, les anexo el codigo por si a alguien mas le ocurre esto, lo que tuve que hacer es sacar del ciclo while todas las declaraciones de objetos y variables, y poner un if then else par ir revisando lo que estaba haciendo, y algo muy importante es que antes de hacer estas consultas guarde los datos sin comillas simples en la BD, para poder poner directo el rsFactura("Articulo") directamente en mi seleccion.
Saludos y espero que a alguien le sirva

<%
Dim rsFact, sqlFact
Dim rsFact_numRows
Set rsFact = Server.CreateObject("ADODB.Recordset")
rsFact.ActiveConnection = MM_ConFactura_STRING
rsFact.Source = "SELECT * FROM Factura WHERE Bandera='" & 0 & "'"
rsFact.CursorType = 0
rsFact.CursorLocation = 2
rsFact.LockType = 1
rsFact.Open()

rsFact_numRows = 0
%>
<%
Dim cmdUpDate, sqlUp
Set cmdUpDate = Server.CreateObject("ADODB.Command")

Dim rsCMKArt
Dim rsCMKArt_numRows

dim vardesc
While (NOT rsFact.EOF)

vardesc= rsFact("Descripcion")
response.Write(vardesc)
response.Write("<BR>")
Set rsCMKArt = Server.CreateObject("ADODB.Recordset")
rsCMKArt.ActiveConnection = MM_ConD84_STRING
rsCMKArt.Source = "SELECT * FROM Articulos Where Descripcion = '" & TRIM(rsFact("Descripcion")) & "'"
rsCMKArt.CursorType = 0
rsCMKArt.CursorLocation = 2
rsCMKArt.LockType = 1
rsCMKArt.Open()


if Not rsCMKArt.EOF then
sqlUp = "UPDATE Factura Set ClaveArtCMK= ' " & rsCMKArt("Clave") &" ' Where Descripcion='" & TRIM(rsFact("Descripcion")) & " ' "
cmdUpDate.ActiveConnection = MM_ConFactura_STRING
cmdUpdate.CommandType = 1
cmdUpDate.CommandText = sqlUp
cmdUpDate.Execute
else
response.Write("no encontro el articulo en la tabla articulos")
response.Write("<BR>")
sqlUp = "UPDATE Factura Set ClaveArtCMK= ' 00000 ' Where Descripcion='" & TRIM(rsFact("Descripcion")) & " ' "
cmdUpDate.ActiveConnection = MM_ConFactura_STRING
cmdUpdate.CommandType = 1
cmdUpDate.CommandText = sqlUp
cmdUpDate.Execute

end if

rsFact.MoveNext
Wend %>
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 21:05.