Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-03-2008
Avatar de Zakio14
Zakio14 Zakio14 is offline
Miembro
 
Registrado: feb 2008
Ubicación: Costa Rica
Posts: 22
Poder: 0
Zakio14 Va por buen camino
Eliminar registro

Pura vida foro!

Trabajo con Firebird
Tabla Aquiler
Campos Id_socio, id_pelicula, nombre_pelicula (No tienen llave primaria)
Tengo un Edti(Id)
Y un Boton(Eliminar) en este botón tengo el siguiente código

if not Modulo.IBTransaction1.InTransaction then
Modulo.IBTransaction1.StartTransaction;

with Modulo.IBAlquiler do begin

Close;
SelectSQL.Clear;
SelectSQL.Add('SELECT * FROM Alquiler ');
SelectSQL.Add('Where ID_pelicula = :car');
ParamByName('car').AsTrimString := id.Text;
open;
Delete;
Refresh;
Close;
Modulo.IBTransaction1.CommitRetaining;
end;

La cosa es que me elimina todo lo que tengo en la tabla y no solo el registro que quiero.

Alguien me puede decir que estoy haciendo mal o algún comentario que me ayude hacer que funcione...

Se los agradezco

Mil millones de gracias
Responder Con Cita
  #2  
Antiguo 15-03-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Código Delphi [-]
if not Modulo.IBTransaction1.InTransaction then
Modulo.IBTransaction1.StartTransaction;
with Modulo.IBAlquiler do begin
Close;
SelectSQL.Text:= 'Delete * FROM Alquiler Where ID_pelicula = :car';
ParamByName('car').AsTrimString := id.Text;
ExecSQL;
Modulo.IBTransaction1.CommitRetaining;
end;
Saludos
Responder Con Cita
  #3  
Antiguo 15-03-2008
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Yo no uso FB, pero como lo haces es válido siempre que las consultas sean editables. El problema puede ser que no tengas mas registros en la tabla. LA ventaja de hacerlo como lo haces es que si tienes ligada la consulta a un grid o algo similar éstos se actualizan reflejando el registro borrado.

Como lo hace Caral también funciona pero tendrás que refrescar cualquier componente enlazado a la tabla.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #4  
Antiguo 15-03-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Estas demasiado exigente maestro.
Bueno, cambiemos ExecSQL por Open
Nos exigen demasiado a los novatos
Saludos
Responder Con Cita
  #5  
Antiguo 15-03-2008
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
Hola Zakio14 como estas "alimentando" el IBdataSet (IBAlquiler) en tiempo de ejecucion debes poner también las otras sentencias SQL, es decir, te falta deleSQL, updateSQL y refreshSQL (que peude ser el mismo selectSQL), algo así como lo siguiente:


Código SQL [-]
size="3">    //El query para borrar:
    DeleteSQL.Add('delete FROM Alquiler ');
   size="3">Deletesize="3">SQL.Add('Where ID_pelicula = :car');
  
    //Actualizar:
size="3">   updateSQL.Add('Alquiler set campo1 =:campo1, campo2 = :campo2');
   size="3">updateSQL.Add('Where ID_pelicula = :car');

o mas Fácil aun, en tiempo de desarrollo solo pones el query que tu mismo hiciste en la propiedad selectSQL (de IBAlquiler) en el inspector de objetos, luego en el le das click derecho al componente visual y le seleccionas DataSet Editor y ahi das click en get Table Files, luego en key FIleds seleccionas ID_pelicula y en "Update Fields" seleccionas tod, al final das click en el boton generate SQL y ya....


Nota: Personalmente creo que es una mala practica ir poniendo querys en cualquier parte del código, prefiero llenar el modulo de componentes IBDataSet, IBQuery y IBScrips con sus correspondientes e inmutables querys donde solo mando parámetros, mas nunca (valga la redundancia) en otra unidad uso xxxSQL.add(´el cambio que sea´), ya que a la hora de mantener en el futuro dicho código será en extremo desgastante.


__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H"
Responder Con Cita
  #6  
Antiguo 20-03-2008
Avatar de Zakio14
Zakio14 Zakio14 is offline
Miembro
 
Registrado: feb 2008
Ubicación: Costa Rica
Posts: 22
Poder: 0
Zakio14 Va por buen camino
Pura vida foristas!

Gracias por sus valiosas respuestas!!

Gracias CARAL por tu respuesta tan acertada

y gracias RONPABLO por ese comentario que tomare mucho en cuenta


mil millones de gracias!!!!!!!!!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Eliminar Registro (Validar) UTECYBER OOP 8 29-10-2008 18:15:13
Eliminar registro de BD desde PHP fide PHP 5 31-01-2008 14:01:44
Eliminar registro de un .mdb con ADO ¥0n1 Conexión con bases de datos 2 07-11-2007 11:29:12
Eliminar registro de Windows verm83 Varios 1 11-04-2004 22:27:39
Problemas al eliminar un registro en Firebird IcebergDelphi Firebird e Interbase 0 15-02-2004 20:55:34


La franja horaria es GMT +2. Ahora son las 21:34:24.


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
Copyright 1996-2007 Club Delphi