Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-06-2006
JoanKa JoanKa is offline
Miembro
 
Registrado: ene 2005
Posts: 92
Poder: 20
JoanKa Va por buen camino
Por que no me puede borrar registros

Hola a todos una consulta.

Les cuento que estoy haciendo un maestro-detalle de una factura, lo que pasa es que cuando doy sobre el boton cancelar ejecuto esta sentencia pero no logo eliminar los registros:

consulta_eliminar := 'DELETE FROM T_LINEAS_FACTURAS WHERE FACT_CODIGO = ' + IntToStr(TBL_LINEAS_FACTURA.FieldByName('FACT_CODIGO').AsInteger);
QRY_ELIMINAR_LINEAS.Close;
QRY_ELIMINAR_LINEAS.SQL.Clear;
QRY_ELIMINAR_LINEAS.SQL.Add(consulta_eliminar);
QRY_ELIMINAR_LINEAS.ExecSQL;
TBL_FACTURAS.Cancel;
TBL_FACTURAS.Last;

Lo que pasa que primeramente estoy en un formulario donde estan los paneles de cliente, lineas de la factura y totales, entonces cuando deseo agregar un articulo me voy a otro formulario donde estan todos los articulos y de alli selecciono el que deseo y coloco la cantidad y cuando presiono sobre un boton que dice "Enviar a factura" y me lo envia y me lo graba en la tabla T_LINEAS y asi sigo ingresando articulos pero cuando le digo cancelar factura, me debe borrar los registros de T_LINEAS, e inclusive e evaluado la variable consulta_eliminar me lo hace bien ya que recibo bien el numero de factura PERO NO ME LO ELIMINA QUE PUEDE ESTAR PASANDO.

E inclusive me ido al IB EXPERT y como los articulos estan en T_LINEAS ejecuto por ejmplo un SELECT * FROM T_LINEAS WHERE FACT_CODIGO='1520' y si obtengo los registros, pero cuando hago la eliminacion mediante codigo de ejecucion, es decir, desde el sistema no me lo hace.

Donde puede estar el fallo.

Uso DELPHI 2005 y e Interbase

Gracias y saludos.
Responder Con Cita
  #2  
Antiguo 28-06-2006
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Hola.. yo tenia un problema similar.. pero con un Sistema de Ordenes de Compra....

teniendo los sgtes tablas
- Proveedores // listado de proveedores
- CentroCosto // listado de centros de costos
- Orden // registro de ordenes emitidas
- DetalleOrden // registro de los items de la orden de compra
- Cargo // registro asignacion de cargos a diferentes centros de costos

NOTA: No use una de articulos, ya que nunca se compra lo mismo, ni tampoco al mismo proveedor, por lo que no era necesario estar almacenando articulos....

En primer lugar, lo que hice fue ir almacenando en una tabla temporar todos los detalles de la orden (DetalleOrdenBK) y todos los posibles cargos (CargoBK),,,, y una vez todo listo ponian cancelar... borraba los registros de la tablas temporares....

Ahora.. que me origino esto... como se trabaja en red... una tabla podia mezclar items de 2 ordenes diferentes y si le ponia cancelar podia anular los datos de la otra orden de compra (además, el Nro de la Orden de Compra se asigna en forma correlativa.. y solo cuando se presiona el boton procesar o almacenar...)

Para evitar este tipo de problemas, lo que hice fue trabajar con un StringGrid, en donde almacenaba todos los items de las ordenes de compra (con opcion de modificar, eliminar y agregar mas items), y otro StringGrid para procesar los Cargos.... una vez que ponia almacenar.. traspasaba todos los datos... y si ponia cancelar.. destruia el formulario...

espero que te sirva
__________________
BlueSteel

Última edición por BlueSteel fecha: 28-06-2006 a las 22:49:34.
Responder Con Cita
  #3  
Antiguo 29-06-2006
nemesio nemesio is offline
Miembro
 
Registrado: nov 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 377
Poder: 19
nemesio Va por buen camino
prueba de esta manera


Código Delphi [-]
consulta_eliminar := 'DELETE FROM T_LINEAS_FACTURAS WHERE FACT_CODIGO = :CODIGO'QRY_ELIMINAR_LINEAS.Close;

QRY_ELIMINAR_LINEAS.Close;
QRY_ELIMINAR_LINEAS.SQL.Clear;
QRY_ELIMINAR_LINEAS.SQL.Add(consulta_eliminar);

QRY_ELIMINAR_LINEAS.PARAMBYNAME('CODIGO').Value:=TBL_LINEAS_FACTURA.FieldByName('FACT_CODIGO').Value ;QRY_ELIMINAR_LINEAS.ExecSQL;
Suerte.
Responder Con Cita
  #4  
Antiguo 29-06-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Si estas trabajando con Interbase, habrás establecido el borrado en cascada, de tal forma que al borrar la factura se debe borrar todas las lineas automáticamente. Si no lo has hecho... deberías , simplemente en la tabla T_lineas_factura, indica que el campo foráneo (clave ajena) codigo factura tiene borrado en cascada.

Para borrar:
Primero cancelas la factura tblFacturas.Cancel y despues lanzas la consulta de borrado:

Código SQL [-]
delete from CAbecera_facturas where codigo = 1520
Así se borra la factura y todas las lineas.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 29-06-2006
JoanKa JoanKa is offline
Miembro
 
Registrado: ene 2005
Posts: 92
Poder: 20
JoanKa Va por buen camino
Hola tengo estas tablas : Haber si me aclaro, parece que me estoy equivocando... aca van las tablas

CREATE TABLE T_FACTURA (
FACT_CODIGO PK (Clave Primaria)
CLI_CODIGO
FACT_FECHA_ALTA
.....
);

CREATE TABLE T_LINEAS_FACTURAS (
FACT_CODIGO PK(Clave Primaria)
LIN_NUMERO PK(Clave Primaria)
ARTI_CODIGO
LIN_CANTIDAD
.......
);

DICE Lepe:
Si estas trabajando con Interbase, habrás establecido el borrado en cascada, de tal forma que al borrar la factura se debe borrar todas las lineas automáticamente. Si no lo has hecho... deberías , simplemente en la tabla T_lineas_factura, indica que el campo foráneo (clave ajena) codigo factura tiene borrado en cascada.


Como establesco la relacion de BORRADO EN CASCADA EN INTERBASE

Si es necesario hago las tabla o los modifico de nuevo ya que quiero que esto quiero que quede bien.

Gracias y Saludos a todos
Responder Con Cita
  #6  
Antiguo 30-06-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Usa el IB Expert (en su version personal es gratuito)

Abres la tabla, añades el campo de Tipo Integer (casi siempre son integers ), vas a pestaña Constraints, dentro a la pestaña Foreign Key y despues añades la restricción, a la derecha tienes las reglas de integridad.
Código SQL [-]
CREATE TABLE ESTADO (
    IDESTADO  INTEGER NOT NULL,
    ESTADO    ALIAS COLLATE ES_ES /* ALIAS = VARCHAR(25) */
);

CREATE TABLE OBRA (
    IDOBRA        INTEGER NOT NULL,
    IDCLIENTE     INTEGER NOT NULL,
    IDESTADO      INTEGER
);

/******************************************************************************/
/****                             Primary Keys                             ****/
/******************************************************************************/

ALTER TABLE ESTADO ADD CONSTRAINT PK_ESTADO PRIMARY KEY (IDESTADO);
ALTER TABLE OBRA ADD CONSTRAINT PK_OBRA PRIMARY KEY (IDOBRA)
USING DESCENDING INDEX PK_IDOBRA;


/******************************************************************************/
/****                             Foreign Keys                             ****/
/******************************************************************************/

ALTER TABLE OBRA ADD CONSTRAINT FK_OBRA_1 FOREIGN KEY (IDCLIENTE) REFERENCES CLIENTE (IDCLIENTE) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE OBRA ADD CONSTRAINT FK_OBRA_2 FOREIGN KEY (IDESTADO) REFERENCES ESTADO (IDESTADO) ON DELETE CASCADE ON UPDATE CASCADE;
Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #7  
Antiguo 30-06-2006
JoanKa JoanKa is offline
Miembro
 
Registrado: ene 2005
Posts: 92
Poder: 20
JoanKa Va por buen camino
ok. ya esta muchas gracias por todo LEPE
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Borrar registros yorllito Conexión con bases de datos 3 09-04-2006 17:04:18
Borrar n Registros de una Tabla Abel Garcia Firebird e Interbase 18 09-11-2005 15:16:23
Borrar registros dmagui MySQL 2 11-07-2005 21:14:25
Borrar registros en access davezf Conexión con bases de datos 1 23-02-2005 01:09:17
Borrar registros duplicados. Adrian Murua Firebird e Interbase 3 07-10-2003 07:28:46


La franja horaria es GMT +2. Ahora son las 15:33:25.


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