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 Buscar Temas de Hoy Marcar Foros Como Leídos

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: 21
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: 21
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


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


La franja horaria es GMT +2. Ahora son las 22:39:19.


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