Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-12-2005
alfil123 alfil123 is offline
Miembro
 
Registrado: nov 2005
Posts: 116
Poder: 19
alfil123 Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 20-12-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 20-12-2005
alfil123 alfil123 is offline
Miembro
 
Registrado: nov 2005
Posts: 116
Poder: 19
alfil123 Va por buen camino
hola

como enmascaria el mensaje que bora el el motor de delphi, esa parte no entendi
Responder Con Cita
  #4  
Antiguo 20-12-2005
alfil123 alfil123 is offline
Miembro
 
Registrado: nov 2005
Posts: 116
Poder: 19
alfil123 Va por buen camino
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

Responder Con Cita
  #5  
Antiguo 20-12-2005
alfil123 alfil123 is offline
Miembro
 
Registrado: nov 2005
Posts: 116
Poder: 19
alfil123 Va por buen camino
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.
Responder Con Cita
  #6  
Antiguo 20-12-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #7  
Antiguo 20-12-2005
alfil123 alfil123 is offline
Miembro
 
Registrado: nov 2005
Posts: 116
Poder: 19
alfil123 Va por buen camino
si

donde se captura o almacen u obtengo ese n
Responder Con Cita
  #8  
Antiguo 20-12-2005
alfil123 alfil123 is offline
Miembro
 
Registrado: nov 2005
Posts: 116
Poder: 19
alfil123 Va por buen camino
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
Responder Con Cita
  #9  
Antiguo 20-12-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #10  
Antiguo 20-12-2005
alfil123 alfil123 is offline
Miembro
 
Registrado: nov 2005
Posts: 116
Poder: 19
alfil123 Va por buen camino
muchas

muchas grasias grasias grasias grasias grasias
Responder Con Cita
  #11  
Antiguo 21-12-2005
[Nbull] Nbull is offline
Miembro Premium
 
Registrado: nov 2004
Ubicación: Valencia-España
Posts: 168
Poder: 20
Nbull Va por buen camino
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.

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.
Responder Con Cita
  #12  
Antiguo 21-12-2005
alfil123 alfil123 is offline
Miembro
 
Registrado: nov 2005
Posts: 116
Poder: 19
alfil123 Va por buen camino
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
Responder Con Cita
  #13  
Antiguo 21-12-2005
alfil123 alfil123 is offline
Miembro
 
Registrado: nov 2005
Posts: 116
Poder: 19
alfil123 Va por buen camino
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
Responder Con Cita
  #14  
Antiguo 21-12-2005
alfil123 alfil123 is offline
Miembro
 
Registrado: nov 2005
Posts: 116
Poder: 19
alfil123 Va por buen camino
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




Responder Con Cita
  #15  
Antiguo 22-12-2005
Chocoslovaco Chocoslovaco is offline
Miembro
 
Registrado: jun 2005
Ubicación: Puebla, México
Posts: 66
Poder: 19
Chocoslovaco Va por buen camino
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
__________________
Todos quieren cambiar el mundo, pero nadie piensa en cambiarse así mismo
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


La franja horaria es GMT +2. Ahora son las 12:52: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