entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

0voto

InvalidOperationException al intentar borrar un registro.

Intento borrar un registro, pero me da el siguiente error:

Ha especificado que el comando eliminar compare todos los valores de SqlDataSource 'SQLProveedores', pero el diccionario que se pasó para values está vacío. Pase un diccionario válido para eliminar o cambie el modo a OverwriteChanges.

He comprobado el parámetro DeleteCommand y el contenido de la etiqueta <DeleteParameteres> y parecen estar bien.

No sé si tengo que comprobar otra cosa, ni si hay forma de comprobar el dichoso diccionario.

2 Respuestas

2votos

rome Puntos500

Haría falta algo más de información, porque no sabemos cómo estás eliminando ni nada, ni parte del proceso.

Puede ser por varios motivos.
A veces cambiando los campos que no son clave primaria por EVAL en lugar de BIND, no usar "Use optimistic concurrency", etc...

pero primero habría que ver el código...

0voto

OscarCanfranc comentado

Muchas gracias. Tu respuesta me ha ayudado, pero no puedo marcarla como mejor respuesta, porque lo ha hecho de forma contraria a la que pretendía y podría liar a futuros lectores.

1voto

OscarCanfranc Puntos570

@rome

Haría falta algo más de información, porque no sabemos cómo estás eliminando ni nada, ni parte del proceso.

Soy algo nuevo en esto. Así que, no sé si mi explicación va a pecar de corta o de larga:

  • Tengo un FormView que enlaza a un SqlDataSource.
  • El SqlDataSource tiene un ConflictDetection="CompareAllValues" y un DeleteCommand con un WHERE muy largo, porque comprueba todos los campos (en mi caso, el Use Optimistic Concurrency tiene que estar activado).
  • Además, el FormView, en el ItemTemplate tiene un Button con un CommandName="Delete".

    Puede ser por varios motivos.
    A veces cambiando los campos que no son clave primaria por EVAL en lugar de BIND, no usar "Use optimistic concurrency", etc...

Lo del EVAL y el BIND ha sido la clave, pero al contrario, sorprendentemente. Es decir, tenía los campos enlazados con EVAL y, al cambiarlos por BIND, se ha ido el error y me ha borrado el registro sin problemas.

1voto

rome comentado

bueno, al menos ya tienes eso resuelto.

Te puse que a veces cambiando los campos no primarios de BIND a EVAL se solucionaba, porque lo normal es que estuvieran como BIND y sin más información, pues suponía que estaban como BIND ;)

de todas formas me alegro de que te funcione.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta