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

error: El objeto o proveedor no puede ejecutar la operación requerida al añadir regis

Estas en el tema de error: El objeto o proveedor no puede ejecutar la operación requerida al añadir regis en el foro de ASP Clásico en Foros del Web. Hola: Tengo un formulario que lista las noticias con el formato siguiente (la DB es Access): registro1 posicion (campo texto) registro2 posicion (campo texto) y ...
  #1 (permalink)  
Antiguo 05/05/2008, 12:35
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años, 10 meses
Puntos: 0
error: El objeto o proveedor no puede ejecutar la operación requerida al añadir regis

Hola:
Tengo un formulario que lista las noticias con el formato siguiente (la DB es Access):

registro1 posicion (campo texto)
registro2 posicion (campo texto)

y así sucesivamente, donde el usuario tiene que escribir una posicion

Lo que quiero conseguir es que al procesar el formulario se guarde cada posición en su correspondiente registro.

He hecho lo siguiente pero me da el error:

ADODB.Recordset error '800a0cb3'
El objeto o proveedor no puede ejecutar la operación requerida.

en la linea que esta en rojo.

Código:
Set Conn= Server.CreateObject("ADODB.Connection")
Set Command= Server.CreateObject("ADODB.Command")
Conn.open "DSN=squashsantiago.com"
Command.ActiveConnection=Conn 
Command.CommandType=adCmdText 

insertar=True
%>

<table class="gestion" align="center" cellspacing="0" cellpadding="0">

<%if insertar then
    For each parametro in Request.Form
        posicion=Request.form("posicion")
        
        if posicion => cint(7) then
            response.write "muestra el error"
            insertar = False
        else
            Command.ActiveConnection=Conn
            Command.CommandText= "select idnoticias from noticias"
            Set RsNoticias=Command.Execute ()
            
            response.write "select * from noticias where  idnoticias= " & RsNoticias("idnoticias") & " AND idusuarios=" & clave
            Command.CommandText=  "select * from noticias where  idnoticias= " & RsNoticias("idnoticias") & " AND idusuarios=" & clave
            Set RsNoticias1=Command.Execute ()
            RsNoticias1.addnew
            response.write "idnoticias =" & idnoticias & "<br>"
            if parametro="" or parametro= null then
                parametro=0
                RsNoticias1(parametro)=Request.form(parametro)
                RsNoticias1.Update
            end if
        end if
    Next

¿en que me estoy equivocando?
Gracias
__________________

Espero haber aprendido algo de tí.
A mi padre.
  #2 (permalink)  
Antiguo 05/05/2008, 12:39
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Re: error: El objeto o proveedor no puede ejecutar la operación requerida al añadir r

Hola ciberpata, por lo que entiedo de tu código, en realidad lo que tu quieres hacer es un update, entonces no necesitas el método AddNew, yo te recomendaría que simplemente hagas un

Código:
strSQL = "UPDATE tabla SET campo = valore WHERE idnoticias= " & RsNoticias("idnoticias") & " AND idusuarios=" & clave

Conn.Execute(strSQL)
Asi te ahorras el recordset.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 05/05/2008, 13:01
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años, 10 meses
Puntos: 0
Re: error: El objeto o proveedor no puede ejecutar la operación requerida al añadir r

Lo he dejado así:
Código:
Set Conn= Server.CreateObject("ADODB.Connection")
Set Command= Server.CreateObject("ADODB.Command")
Conn.open "DSN=squashsantiago.com"
Command.ActiveConnection=Conn 
Command.CommandType=adCmdText 


insertar=True
if insertar then
'Añadimos el registro
    For each parametro in Request.Form
            Command.CommandText= "select idnoticias from noticias"
            Set RsNoticias=Command.Execute ()
            response.write "UPDATE noticias SET posicion = " & Request.form(parametro) & " WHERE idnoticias= " & RsNoticias("idnoticias") & " AND idusuarios=" & clave
            cadena=  "UPDATE noticias SET posicion = " & Request.form(parametro) & " WHERE idnoticias= " & RsNoticias("idnoticias") & " AND idusuarios=" & clave
            Conn.Execute(cadena)
    Next
pero al construir el update me pone todos los valores de posicion separados por comas,
o sea que la sentencia que me construye si tengo 3 registros y por tanto 3 valores para posición (1 por cada registro) es:

UPDATE noticias SET posicion = 1, 2, 3 WHERE idnoticias= 26 AND idusuarios=1

Cuando debería construir:

UPDATE noticias SET posicion = 1 WHERE idnoticias= 26 AND idusuarios=1
UPDATE noticias SET posicion = 2 WHERE idnoticias= 26 AND idusuarios=1
UPDATE noticias SET posicion = 3 WHERE idnoticias= 26 AND idusuarios=1

se supone que al ir en un for each cada valor debería ir en una sentencia por separado, entonces donde está el error?
__________________

Espero haber aprendido algo de tí.
A mi padre.

Última edición por ciberpata; 05/05/2008 a las 13:29
  #4 (permalink)  
Antiguo 05/05/2008, 13:34
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
Re: error: El objeto o proveedor no puede ejecutar la operación requerida al añadir r

recoge parametro
has un split
y por cada uno de los valores ejecuta el update

pero eso quiere decir que al ejecutar esas 3 sentencias tus noticias 26 de el usuario 1 sera 3

dado que es el ultimo update que hacer

es lógico???
__________________
JuanRa Pérez
San Salvador, El Salvador
  #5 (permalink)  
Antiguo 05/05/2008, 13:38
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años, 10 meses
Puntos: 0
Re: error: El objeto o proveedor no puede ejecutar la operación requerida al añadir r

No lo entiendo
__________________

Espero haber aprendido algo de tí.
A mi padre.
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:23.