Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-07-2007
Avatar de magnu9
magnu9 magnu9 is offline
Miembro
 
Registrado: nov 2006
Posts: 84
Poder: 18
magnu9 Va por buen camino
Procedimiento para el boton borrar

Hola chicos... utilizo el siguiente procedimiento para guardar una localidad de un articulo... en un sistema de farmacia que estoy construyendo... me explico un poco. Lo que quiero es borrar una localidad cuando lo desee. Pero si esta localidad esta asignada a un articulo pues no se puede borrar sin antes haber borrado el articulo. Pero aunque la localidad no tenga articulo asignado como quiera el procedimiento me lanza el mensaje de que "La localidad tiene articulos asignados". Se animan ayudarme. Gracias de antemanos.

Código Delphi [-]
procedure TmtLocalidad.borrarClick(Sender: TObject);
begin
        querArticulo.close;
        querArticulo.SQL.Text:='SELECT articulo.codloc FROM articulo INNER JOIN localidad ON articulo.codloc = localidad.codloc';
          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;
Responder Con Cita
  #2  
Antiguo 04-07-2007
Avatar de magnu9
magnu9 magnu9 is offline
Miembro
 
Registrado: nov 2006
Posts: 84
Poder: 18
magnu9 Va por buen camino
Solucion posible

Amigos creo que lo he solucionado. Pero si alguien quiere aportar algo se lo agradezco de corazon.

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;
Responder Con Cita
  #3  
Antiguo 05-07-2007
gabrielkc gabrielkc is offline
Miembro
 
Registrado: jun 2007
Ubicación: Chihuahua Mexico
Posts: 118
Poder: 17
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
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

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 21:41:24.


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