Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > Varios
Register FAQ Members List Calendar Guía de estilo Search Today's Posts Mark Forums Read

Coloboración Paypal con ClubDelphi

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 16/08/2010
gonza_619 gonza_619 is offline
Miembro
 
Join Date: Feb 2010
Posts: 157
Poder: 17
gonza_619 Va por buen camino
master source has detail records

hola, miren he tenido un problema con este mensaje, al parecer es porque en otro form tengo una tabla en la que relaciono la tabla que necesesito borrar un registro.
bueno tengo un form1 en la cual tengo 2 tables. una llamada CURSO y otra RUBRO , la tabla CURSO es el detalle y Rubro el maestro. bien ahora al seleccionar un Rubro me aparece todos los cursos de ese rubro, ahora cuando quiero borrar un curso de ese rubro me aparece "master has detail records", entonces me fije en el Form2 en el cual tengo una tabla planes de pago en el cual tengo relacionado Curso, lo cual parece ser el problema del mensaje, entonces hice los sig. en un boton eliminar del form1 cuando selecciono un curso:
Código Delphi [-]
If Application.MessageBox ('¿Estas seguro que deseas eliminar el registro actual?',
'Eliminar registro',mb_YesNo+MB_IconStop) = ID_yes Then

if form2.table2.fieldbyname('curso').asinteger=Table1.fieldbyname('cod_curso').asinteger
then
application.Terminate;

bien lo hice como prueba para ver si funcionaba pero no ocurre nada , no cierra la aplicacion
Aclaro que en el form 2, la tabla que relaciono curso (planes), tiene el campo CURSO como clave foranea. como sugieren que deberia hacer o modificar el codigo ? gracias

bueno tambien se me ocurrio :
If Application.MessageBox ('¿Estas seguro que deseas eliminar el registro actual?',
'Eliminar registro',mb_YesNo+MB_IconStop) = ID_yes Then

while not form3.Table3.EoF do
begin
if form3.Table3.FieldByName('curso').AsInteger=table1.FieldByName('cod_curso').AsInteger
then application.Terminate;
end;

pero al parecer no recorre la tabla del form3

Last edited by gonza_619 : 16/08/2010 at 23:52. Reason: otra opcion
Reply With Quote
  #2  
Old 17/08/2010
ecfisa's Avatar
ecfisa ecfisa is offline
Moderador
 
Join Date: Dec 2005
Location: Tres Arroyos, Argentina
Posts: 10,508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola gonza.

Supongamos que las tablas se llaman: Curso, Rubro y Planes.

Una posible solución sería usar el evento BeforeDelete de Curso para verificar si el registro tiene dependencias,
de ser así, avisar y abortar la operación:

Código Delphi [-]
procedure TForm1.CursoBeforeDelete(DataSet: TDataSet);
begin
  if not Planes.IsEmpty then
  begin
    ShowMessage('No se puede borrar, tiene registros dependientes'); // El mensaje que quieras.
    Abort;
  end;
end;

Saludos.

Last edited by ecfisa : 17/08/2010 at 01:28.
Reply With Quote
  #3  
Old 17/08/2010
gonza_619 gonza_619 is offline
Miembro
 
Join Date: Feb 2010
Posts: 157
Poder: 17
gonza_619 Va por buen camino
master has detail records

bien, donde tendria que colocar el codigo? en un boton?,
el problema es que quiero borrar los datos relacionados en la otra tabla del form2.
Reply With Quote
  #4  
Old 17/08/2010
ecfisa's Avatar
ecfisa ecfisa is offline
Moderador
 
Join Date: Dec 2005
Location: Tres Arroyos, Argentina
Posts: 10,508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

No gonza.

Podés asignarlo:

.- Desde el Object Inspector:
Estando seleccionada la tabla Curso -> Click en pestaña Events -> Doble Click en el evento BeforeDelete.
Te va a armar la estructura del procedimiento.
Algo así:
Código Delphi [-]
procedure TForm1.CursoBeforeDelete(DataSet: TDataSet);
begin
  // ACA VA EL CÓDIGO
end;

.- O escribiendo el código. Asignás el procedimiento CursoBeforePost en el evento OnCreate del form por ejemplo.

Algo así:
Código Delphi [-]
procedure TForm1.CursoBeforeDelete(DataSet: TDataSet);
begin
  // ACA VA EL CÓDIGO
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
    Curso.Open;
    Curso.BeforeDelete:= CursoBeforeDelete;
    ...
end;

Lógicamente te vá a resultar más fácil del primer modo.

Saludos.

Last edited by ecfisa : 17/08/2010 at 04:54.
Reply With Quote
  #5  
Old 17/08/2010
gonza_619 gonza_619 is offline
Miembro
 
Join Date: Feb 2010
Posts: 157
Poder: 17
gonza_619 Va por buen camino
master has detail records

hola gracias, disculpa que no sepa mucho del tema pero estaria bien si lo coloco asi:

Código Delphi [-]
procedure TForm1.Table1BeforeDelete(DataSet: TDataSet);
begin
if not form3.Table3.IsEmpty then
  begin
    ShowMessage('No se puede borrar, tiene registros dependientes');
    Abort;
  end;

ya que la tabla planes esta en el form2 y curso en form1, y como probaria el evento? con un boton table1.delete? muchas graicas
Reply With Quote
  #6  
Old 17/08/2010
ecfisa's Avatar
ecfisa ecfisa is offline
Moderador
 
Join Date: Dec 2005
Location: Tres Arroyos, Argentina
Posts: 10,508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
No tenés nada por que disculparte

Si tenés la tabla declarada en form3, es correcto.

Pero el código que te puse, sólo evita el borrado si tiene datos en relación de dependencia...
Y ahora mirando bién tu post anterior, ví que queres eliminar los datos dependientes.
caro y marcoszorrilla ya explicaron dos modos de hacerlo Acá .

Podés utilizar el código propuesto por ellos asignándolo a un TButton por ejemplo.

Cualquier duda no dejes de consultar

Saludos.

Last edited by ecfisa : 17/08/2010 at 05:31.
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Dá error "Master has detail records" cuando no debería darlo! JuanBCT Tablas planas 3 06/08/2005 03:48
DBLookupComboBoxs Master/Detail o Detail/Master yusnerqui OOP 5 29/07/2005 18:40
master/detail, imprimiendo master en cada hoja acalderonr Impresión 4 29/11/2003 14:46
interbase:¿como crear un master-detail-detail? ElSanto24 Firebird e Interbase 2 22/10/2003 10:24
Master/Detail/Detail/Detail/etc... hgiacobone Tablas planas 2 24/07/2003 17:20


All times are GMT +2. The time now is 00:07.


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