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 eliminacion (https://www.clubdelphi.com/foros/showthread.php?t=28466)

alfil123 20-12-2005 20:37:29

problemas de eliminacion
 
hola amigos, estoy casi desesperado tengo un problema al tratar de eliminar un registro que esta relalcionalado con otro registro de otro talba, me sujirieron hacer
if sql.count()>0
then
end
pero no funciona, estoy usando un adoquery, talves

marcoszorrilla 20-12-2005 21:10:58

La solución que se propuso al caso que replanteas era enmascarar el mensaje del motor, pero si lo que quieres es eliminar todo de una vez.

Abres la base de datos con Access, estableces relación entre ambas tablas, marcas integridad referencial y eliminación en cascada, ahora cuando elimines el maestro desaparecerá todo el detalle.

Un Saludo.

alfil123 20-12-2005 21:14:25

hola
 
como enmascaria el mensaje que bora el el motor de delphi, esa parte no entendi

alfil123 20-12-2005 21:31:08

nose
 
Lanzamos una búsqueda, buscamos un registro con la misma clave en la table detalle, si lo encontramos (décimas de segundo), lanzamos mensaje, "Imposible eliminar registro - posee relación en la tabla xxx".
bueno amigos nose como hacer esto les pido que me ayuden mandandome un ejemplo, estoy usando un odoquery


alfil123 20-12-2005 21:52:24

aa
 
estoy hasiendo un
add('select count(id_clumno) as n');
add('from tabla01 ');
add('where id_carga='labeledit01.text);
supondo que esta sentencia devuelve algo en n pero no como recuperar n.

marcoszorrilla 20-12-2005 22:08:35

Pues si, devuelve el número de registros se supone que estás intentando saber si un maestro tiene detalle, si devuelve registros es que lo tiene.

Un Saludo.

alfil123 20-12-2005 22:16:09

si
 
donde se captura o almacen u obtengo ese n

alfil123 20-12-2005 22:20:00

m
 
supongo que se almacena en alguna parte en nuero de registros que cumplen con la condicion del where y que son contados por el count, pero nose como recuperar ese numero .
por favor uusilio

marcoszorrilla 20-12-2005 22:21:40

Código Delphi [-]
 procedure TForm1.Button1Click(Sender: TObject);
 begin
   If Adoquery1.Fields[0].AsInteger > 0 then
   ShowMessage('Hay registros en el detalle')
   else
   ShowMessage('NO Hay registros en el detalle');
 end;

Un Saludo.

alfil123 20-12-2005 22:27:16

muchas
 
muchas grasias grasias grasias grasias grasias

Nbull 21-12-2005 09:52:44

Hola a todos, en primer lugar estoy realizando una aplicación en Delphi7, base de datos Access y componentes ADO, mi problema es que tengo una tabla enlazada con otras dos mediante el siguiente codigo:


Código Delphi [-]
AdoQuery2.Active:=false;
AdoQuery2.SQL.Text := 'SELECT Archivo.* , Tema.*,Formato.* FROM (Archivo '+
' LEFT OUTER JOIN Tema ON Archivo.Registro2=tema.Registro2) '+
' LEFT OUTER JOIN Formato ON Archivo.Id=Formato.Id';
AdoQuery2.Active:=True;

Antes de enlazar las dos tablas borraba los registros seleccionados en mi dbgrid con este codigo:
Código Delphi [-]
procedure TFGestion.BborrarClick(Sender: TObject);
var
button : integer;
begin
button := application.messagebox ('¿Realmente desea borrar la cinta seleccionada?', 
'¿Seguro?', MB_yesno + mb_iconwarning); // Mostramos un mensaje de advertencia
if button = IDYes then begin // Si ha pulsado si...
//Borramos el registro seleccionado
DBGrid2.DataSource.DataSet.Delete;
El problema es que al unirlas otras tablas, cada vez, que pulso el boton borrar me borra un registro en cada tabla, he mirado en access como me dijo Neftalí y no tengo activada los borrados en cascada.:confused:

Yo solo quiero que se borre un registro de la tabla maestro no de las detalle.

Gracias por vuestra ayuda, un saludo.

PD: He realizado otra vez la consulta aquí por que creo que encaja mejor en este hilo, sino es asi pido disculpas a los moderadores.

alfil123 21-12-2005 15:06:13

no funciona
 
hola amigos, ayer me sujirieron insertar esta linea en el codigo
procedure TForm1.Button1Click(Sender: TObject); begin If Adoquery1.Fields[0].AsInteger > 0 then ShowMessage('Hay registros en el detalle') else ShowMessage('NO Hay registros en el detalle'); end;pero me bota un error en tiempo de ejecucion en la linea"If Adoquery1.Fields[0].AsInteger > 0 then"se suponia que la esta linea contaba los registro que devuelve una consutabueno amigos les pido que me den una mano

alfil123 21-12-2005 15:24:43

nose puede
 
hola amigos, ayer me sujirieron insertar esta linea en el codigo


procedure TForm1.Button1Click(Sender: TObject); begin If Adoquery1.Fields[0].AsInteger > 0 then ShowMessage('Hay registros en el detalle') else ShowMessage('NO Hay registros en el detalle'); end;

pero me bota un error en tiempo de ejecucion en la linea

"If Adoquery1.Fields[0].AsInteger > 0 then"

se suponia que la esta linea contaba los registro que devuelve una consutabueno amigos les pido que me den una mano

alfil123 21-12-2005 21:22:26

amigos este es el procedimiento donde estoy teniendo problemas

procedure TMantenimiento_Control.ToolButton3Click(Sender: TObject);
begin

inherited;

ToolButton2.Enabled:=true;

le_id01.text:='';

dateTimePicker1.Format:='';

end;

procedure TMantenimiento_Control.SpeedButton8Click(Sender: TObject);

var n,m,a:integer;
begin
inherited;

ADOQuery1.Close;

ADOQuery1.sql.Clear;



ADOQuery1.SQL.Add('select count(id_control) as n');

ADOQuery1.SQL.Add('from d_c_clase ');

ADOQuery1.SQL.Add('where id_control='+ le_id01.text);//06');//'+ le_id01.text );

if ADOQuery1.Fields[0].asinteger >0

then

showmessage('si')

else

showmessage('no');



ADOQuery1.open;

ADOQuery1.Close;

if m=0

then

begin

ADOQuery1.Close;

ADOQuery1.sql.Clear;

ADOQuery1.SQL.Add('delete');

ADOQuery1.SQL.Add('from control ');

ADOQuery1.SQL.Add('where id_control='+ le_id01.text);//06');//'+ le_id01.text );

ADOQuery1.ExecSQL;

ADOQuery1.Close;



end

else

begin

showmessage('no se puede jajjaj');

end;

//ADOQuey1.0Destroy;

end;


la linea que me vota erro es+
" if ADOQuery1.Fields[0].asinteger >0"

y me bota este erroor


Project colegio_ollanta.exe raised exception clase ElistError with message ‘List index out of bounds(0)’ process stopped. Use or Run to continue


porfavor ayudenme estoy desesperado





Chocoslovaco 22-12-2005 00:22:00

Hola Alfil123, creo que deberias antes dar un vistazo por AQUI
y hacer uso de las etiquetas [delphi] [\DELPHI]


Te sugeriria que asignaras a una variable lo que contiene le_id01.text
y la evaluaras antes pues, de entrada la consulta no es tan compleja.

Saludos


La franja horaria es GMT +2. Ahora son las 10:26:20.

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