Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 05-07-2007
gabrielkc gabrielkc is offline
Miembro
 
Registrado: jun 2007
Ubicación: Chihuahua Mexico
Posts: 118
Poder: 19
gabrielkc Va por buen camino
Cita:
Empezado por magnu9
Código Delphi [-]Procedure TmtLocalidad.SpeedButton1Click(Sender: TObject);
begin
querArticulo.close;
querArticulo.SQL.Text:='SELECT localidad.codloc FROM articulo CROSS JOIN localidad WHERE (localidad.codloc = '''+dbcodigo.Field.Text+''' and articulo.codloc = '''+dbcodigo.Field.Text+''')';
querArticulo.Open;
if querArticulo.Fields[0].AsInteger <> 0 then
showmessage('Esta Localidad Tiene Articulos Asignados')
else
if dbCodigo.text = '' then
MessageDlg('No existe localidad para borrar', mtInformation,[mbCancel], 0,)
else if MessageDlg('¿ Seguro que desea borrar la localidad' + dbCodigo.Text + ' ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
querLocalidad.Delete;
btnNuevo.Enabled:=true;
btnGuardar.Enabled:=false;
end;
Depende de la BD que estés usando.

A eso que quieres hacer se le llama integridad referencial.

En los RDBMS (Firebird,Interbase,SQL Server, etc) se puede especificar eso desde la BD y no tendrias problemas, pero si lo haces con Paradox.......no se si definiendo un Indice secundario (no creo, pero no recuerdo, hacer mucho no uso paradox).


pero algunas correcciones o recomendaciones:
*Renombra las tablas para que no pongas el nombre completo cada vez que hagas referencia a ellas.
*Cuando quieras un string entrecomillado usa la funcion QuotedStr(); para que evites poner decenas de '

Código Delphi [-]
 
 querArticulo.SQL.Text:='SELECT codloc FROM articulo a CROSS JOIN localidad l WHERE (l.codloc = '+QuotedStr(dbcodigo.Field.Text)+' and a.codloc = '+QuotedStr(dbcodigo.Field.Text)+')';

*No uses AsInteger=0 para comprobar que no hay datos. cuando el resultado es NULL, al menos en interbase y firebird te lanza un error. puedes usar:

Código Delphi [-]
 
querArticulo.Fields[0].IsEmpty;

*La validacion del Edit hazla al iniciar el procedimiento
Código Delphi [-]
    Procedure TmtLocalidad.SpeedButton1Click(Sender: TObject);
      if dbCodigo.text = '' then 
       begin
         MessageDlg('No existe localidad para borrar', mtInformation,[mbCancel], 0,);
         Exit;
       end;
     etc......

Así evitas hacer un Query que no se necesitaba.

Bueno..... creo que para mi es todo

Última edición por gabrielkc fecha: 05-07-2007 a las 00:16:27.
Responder Con Cita
 



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
demasiados edit para borrar huwabe78 Varios 12 30-11-2006 00:16:00
bloquear el boton [X] para cerrar una ventana juanmdq HTML, Javascript y otros 3 19-12-2005 23:17:04
Quiero crear un Boton para guardar Juan Ramon Conexión con bases de datos 3 02-11-2004 07:33:05
Metodo para borrar directorio VolaRe Varios 4 25-07-2004 16:29:52
Como se hace??? para borrar?? Bird15 OOP 1 14-11-2003 13:34:40


La franja horaria es GMT +2. Ahora son las 01:37:36.


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