Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problemas de Eliminación (https://www.clubdelphi.com/foros/showthread.php?t=29735)

Palmiro 31-01-2006 15:19:05

Problemas de Eliminación
 
Hola Genta....

acudo a uds. para preguntarle como hago para solucionar el siguiente problemita que estoy teniendo.

Tengo una aplicacion conectada a una base de datos Access, mediante ADO---> DateSet
Resulta que cuando quiero hacer la eliminacion de un registro me aperece este error que me esta volviendo loco y nose como hacer para solucionarlo...

información de columna clave insufisiente para realizar la operación UpDate o Refresh

si alguin me puede brindar alguna ayuda, desde ya muchas gracias

Neftali [Germán.Estévez] 31-01-2006 15:34:47

Crea una clave primaria en la tabla (un autonumérico si es necesario) y prueba de nuevo.

Palmiro 31-01-2006 21:09:58

Tengo la clave que es autonumerica y ademas es unica, osea no es una clave compuesta, solo esta formada por campo del registro.

Neftali [Germán.Estévez] 01-02-2006 09:49:35

¿Cómo estás haciendo el borrado?
¿Puedes poner el código que utilizas para hacerlo?

Palmiro 01-02-2006 13:10:15

Primero que nada te agradesco tu inteción de ayudarme...aqui esta el codigo:

Código Delphi [-]
procedure TfrmCelulas.cmdEliminarCelClick(Sender: TObject);
begin
  if Application.MessageBox(' Confirma que desea Eliminar la Celula y todos sus Integrantes.',
      'Celulas', MB_YESNO + MB_ICONQUESTION) = ID_YES then
    DataSourceCel.DataSet.Delete;
end;

Jonnathan 01-02-2006 19:19:41

Hola Palmiro, estuve buscando ese error que te aparece en foros y encontre un detalle común para todos los que hacían la pregunta: todos estaban tratando de modificar o borrar a partir de un conjunto de registros obtenidos por una consulta entre varias tablas o con otras funciones de SQL. Si es tu caso entonces deberas tratar de eliminar por otro medio y no usando la función del Dataset "Delete()", como por ejemplo armar una consulta de tipo "Delete from Tabla where campo1=:campo1...".
Si estas usando un ADOQuery puedes mostrarnos la consulta SQL que usas, asi te podemos recomendar como hacer el borrado. Saludos.

Palmiro 01-02-2006 20:24:44

muchas gracias por tu repuesta. Voy a hacer como me lo propusiste

Hasta pronto.

Palmiro 03-02-2006 12:15:35

Aqui nuestro mi consulta...
Código SQL [-]
SELECT Celulas.CelLider, (Persona.PerApe+', '+Persona.PerNom) AS [Apellido y Nombre],                                                                                   
 Celulas.CelAnfitrion, (Anfitrion.PerApe+', '+Anfitrion.PerNom) AS Anfitrion, Anfitrion.PerDom, 
FORMAT(Celulas.CelHorario,"hh:mm AM/PM") AS Horario, CelId, Celulas.CelPastor, (Pastor.PerApe+', '+Pastor.PerNom)
 AS Pastor, Celulas.CelHorario, Celulas.CelDia, Celulas.CelActiva, Celulas.CelObserv, Celulas.CelFecInicio, 
Celulas.ZonaId
FROM Persona 
INNER JOIN ((Celulas 
INNER JOIN Persona AS Anfitrion ON Celulas.CelAnfitrion = Anfitrion.PerDNI) 
INNER JOIN Persona AS Pastor ON Celulas.CelPastor = Pastor.PerDNI) 
ON Persona.PerDNI = Celulas.CelLider

tambien me gustaria preguntarles porque cuando modificos los datos en dicha consulta los cambion no se ven inmediatamente, recien se pueden observar los cambios cuando la aplicación es cerrada, y luego la vuelvo a abrir.es decir que en tiempo de ejecución da la sensación de que los datos no se modificaron. He intentado con los siguientes codigos DateSet.Post; DateSet.Close; DateSet.Open; y con DateSet.Post; DateSet.Refresh; pero no sucede nada, los cambios no se ven en tiempo de ejecución. Si alguien me puede ayudar con esto desde ya se lo agradesco. Muchas Gracias

EDITO: Utiliza los Tags de SQL; En éste mensaje ya los he colocado yo; Comprueba la mejora.

lucasarts_18 03-02-2006 14:45:14

Hola:

Creo que Jonnathan tiene razon sobre la eliminación, ya que es un join de varias tablas, el delete se hace a través de una tabla, no tiene estas capacidades, creo sensato que lo mejor es armar una delete de la forma que proponen.

Hasta Luego -


La franja horaria es GMT +2. Ahora son las 22:02:28.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi