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 18-06-2004
jmedina jmedina is offline
Miembro
 
Registrado: jun 2004
Posts: 92
Poder: 20
jmedina Va por buen camino
Unhappy Key violation

Que tal:

Espero me puedan ayudar gracias

Tengo una aplicacion aqui atorada, lo que pasa es que cuando hago un post. y si este tiene llave duplicada, como es que pueda cancelar el evento de ese boton a la hora de guardar y regresarme al dato que esta duplicado para modificarlo y este ya me permita guardarlo, si lo atrapo pero no me regresa y me congela la tabla en modo de insercion, esta son una lineas de codigo que espeor y esten bien y me puedan decir por que no se cancela en evento OnClick de mi boton
Begin
DM3.TCotizacion.Append;
DM3.TCotizacionCodigoCot.AsString:= RzEdit9.Text;
DM3.TCotizacionFecha.AsDateTime:= DateTimePicker1.Date;
DM3.TCotizacionCodigoCli.AsInteger:= StrToInt(RzEdit1.Text);
try
DM3.TCotizacion.Post;
except
on e:Exception do
raise exception.create('No se puede guardar La Cotización ya Existe'+#13+#13+ e.message);
RzSave.SetFocus;
end;

Espero me puedan ayudar

gracias
Saludos
Responder Con Cita
  #2  
Antiguo 18-06-2004
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
Lo más importante es que nos digas que tipo de tablas estás utilizando y con que te conectas a las mismas.

Una solución que puede funcionar con casi todas, es utilizar para el campo clave un control no DbAware, por ejemplo un Tedit, y antes de intentar el Post, lanzar una búsqueda contra la tabla en cuestión sino se encuentran registros pasas el valor del Tedit a la tabla y haces el post.

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 18-06-2004
jmedina jmedina is offline
Miembro
 
Registrado: jun 2004
Posts: 92
Poder: 20
jmedina Va por buen camino
Thumbs up

Cita:
Empezado por marcoszorrilla
Lo más importante es que nos digas que tipo de tablas estás utilizando y con que te conectas a las mismas.

Una solución que puede funcionar con casi todas, es utilizar para el campo clave un control no DbAware, por ejemplo un Tedit, y antes de intentar el Post, lanzar una búsqueda contra la tabla en cuestión sino se encuentran registros pasas el valor del Tedit a la tabla y haces el post.

Un Saludo.
Las tablas que utilizo son padadox , lo que me dices no lo entiendo soy medio sope , por que no programo micho, si me puedes decir como hacer la busqueda para lanzarla a mi tabla te lo agradeceria, ha Un favor se un poco mas para primer nivel para poder entenderle y hacer la busqueda gracias

Perdon es que soy medio sope

Saludos
Responder Con Cita
  #4  
Antiguo 18-06-2004
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
Bueno pues vamos con una solución más sencilla.

Veo que tienes un DataModulo y en el un componente Ttable al que conectas la tabla en cuestión y luego un TadataSource para poder visualizar los datos.

Bueno es necesario un segundo Ttable conectado a la misma tabla pongamos que el primero el que ya tenias se llama Table1 y este segundo que no necesita Tdatasource puesto que solamente se va a utilizar par buscar.

En el evento OnExit del campo que no quieres repetir:
Código Delphi [-]
if Dm3.Table2.FindKey([Dbedit1.Text]) then
begin
Application.MessageBox('El código introducido ya existe.','Atención',mb_Ok+mb_IconQuestion);
 Dbedit1.SetFocus;
end;


Fijate que buscamos con el Table2, porque con el 1 al buscar moveríamos el puntero y provaríamos involuntariamente un post y por lo tanto una excepción de violación de clave.
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
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 00:21:29.


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