Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-05-2016
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 18
jafera Va por buen camino
Buenas.

Yo no utilizo SQL, utilizo Firebird e IBX, pero imagino que lo podras adaptar, yo hago la consulta dentro del DataModule lanzando una query accesoria en el OnChange del campo a comprobar.

Código Delphi [-]
procedure TF_ModulDades.CamionsMATRICULAChange(Sender: TField);
var
        Matri: string;
begin
        if F_ModulDades.CamionsMATRICULA.Value <> '' then
        begin
                Camio_Ex.Close;
                Camio_Ex.ParamByName('MATRICULA').AsString := F_Camions.DBEdit3.Text;             
                Camio_Ex.Open;
                Matri := F_Camions.DBEdit3.Text;
                if Camio_Ex.RecordCount > 0 then
                begin
                        Showmessage('Camió existent a la base');
                        Camions.Cancel;
                        F_Camions.ToolBar2.Visible := False;
                        F_Camions.ToolBar1.Visible := True;
                        F_Camions.DBEdit1.Enabled := True;
                        if Camio_Ex.ParamByName('MATRICULA').AsString = Matri then
                        begin
                                Camions.Locate('MATRICULA', Matri, []);
                        end;                    
                end;
        end;
end;

Consulta accesoria

Código SQL [-]
SELECT * FROM BOM0001
WHERE MATRICULA=:MATRICULA

Espero te ayude

Saludos
Responder Con Cita
  #2  
Antiguo 02-05-2016
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Yo diría que en términos generales hay dos maneras de lidiar con claves repetidas: prevención y atención. Prevención es la que intentaste primero y la que te expone jafera. Creo yo que si esa forma es la que deseas, es la que deberías seguir en lugar de simplemente decir "no me funcionó". Pon el código que tenías y ta podremos ayudar en ver porqué no te funciona.

De todas formas, no está de más conocer la segunda forma tratar las claves repetidas: atención. Los componentes DataSet (como el ADOTable) tienen el evento OnPostError que se lanza cuando la modificacíon o inserción de un registro produce un error en la base de datos. En ese evento tú decides qué hacer: corregir y reintentar o simplemente dar un aviso al usuario.

LineComment Saludos
Responder Con Cita
  #3  
Antiguo 03-05-2016
ermac ermac is offline
Miembro
NULL
 
Registrado: jun 2015
Posts: 10
Poder: 0
ermac Va por buen camino
Cita:
Empezado por jafera Ver Mensaje
Buenas.

Yo no utilizo SQL, utilizo Firebird e IBX, pero imagino que lo podras adaptar, yo hago la consulta dentro del DataModule lanzando una query accesoria en el OnChange del campo a comprobar.

Código Delphi [-]
procedure TF_ModulDades.CamionsMATRICULAChange(Sender: TField);
var
        Matri: string;
begin
        if F_ModulDades.CamionsMATRICULA.Value <> '' then
        begin
                Camio_Ex.Close;
                Camio_Ex.ParamByName('MATRICULA').AsString := F_Camions.DBEdit3.Text;             
                Camio_Ex.Open;
                Matri := F_Camions.DBEdit3.Text;
                if Camio_Ex.RecordCount > 0 then
                begin
                        Showmessage('Camió existent a la base');
                        Camions.Cancel;
                        F_Camions.ToolBar2.Visible := False;
                        F_Camions.ToolBar1.Visible := True;
                        F_Camions.DBEdit1.Enabled := True;
                        if Camio_Ex.ParamByName('MATRICULA').AsString = Matri then
                        begin
                                Camions.Locate('MATRICULA', Matri, []);
                        end;                    
                end;
        end;
end;

Consulta accesoria

Código SQL [-]
SELECT * FROM BOM0001
WHERE MATRICULA=:MATRICULA

Espero te ayude

Saludos

Gracias con este lo pude solucionar y ya funciona
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Evitar cierre del formulario. Tonio Varios 3 16-09-2005 23:47:39
Evitar que se cierre conexion Ftp D@byt Internet 2 07-06-2005 20:59:05
Como evitar que el usuario cierre la form! Waldo API de Windows 2 20-11-2003 18:46:47
Como presento una vez un dato repetido en Rave o Qreport lanysoft Impresión 2 12-05-2003 15:59:56
Evitar introducir caracteres en un campo numérico de un TRxdbGrid setry2 OOP 2 07-05-2003 12:07:32


La franja horaria es GMT +2. Ahora son las 05:45:21.


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