Ver Mensaje Individual
  #18  
Antiguo 28-11-2006
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Reputación: 22
fjcg02 Va camino a la fama
Cita:
Empezado por efelix
Saludos fjcg02, muchas gracias por tu respuesta, no te había respondido antes puesto que me encontraba fuera del trabajo, pero estoy de vuelta. Te cuento que ya hize las modificaciones que me indicaste pero ahora tengo el siguiente problema: en el evento before post del ado table puse el siguiente código:
Código Delphi [-]
begin
 ADOQNuevaFactura.Close;
 ADOQNuevaFactura.Parameters.ParamByName('IdFactura').Value :=StrToInt(DBEditNumero.Text);
 ADOQNuevaFactura.Open;
 if ADOQNuevaFactura.RecordCount > 0 then
 begin
    MessageDlg('La Factura que está intentando introducir ya existe',mtWarning,[mbOK],0);
    DBEditNumero.SetFocus;
    ADOTNuevaFactura.Cancel;
 end
 else
    ADOTNuevaFactura.Post;
end;
Este mismo código lo repite en el evento click del botón de comandos Guardar, cuando ejecuto la aplicación y trato de introducir una factura ya existente me sale el mensaje que aparace colocado en la función messagedlg y cuando le doy al botón ok de dicha función en los controles enlazados a datos aparece el último registro de la tabla, hasta aquí creo que todo es normal, ahora cuando trato de ageragar una nueva factura y le doy al botón guardar la aplicación se queda colgada, no me genera ningún mensaje de error, pero no hace nada, incluso chequeo la tabla para ver si agregó el nuevo registro y nada, tengo que presionar Ctrl+F2 para volver al entorno de delphi, no sé por qué pasa esto. Disculpa tanta molestia, debo tenerte mareado con lo mismo, espero no lo tomes a mal. Muchas gracias.
Tengo una duda, pero no tengo el compilador aquí.
Cuando te dé registros la comprobación, pon el cancel, pero si está OK no pongas nada ( borra la linea de Tabla.Post), ya que ya salta el evento.
En el botón de guardar no llames al procedimiento, sino haz lo siguiente:
Pregunta si está en edición la tabla
Código Delphi [-]
if tabla.State in [edit, insert] then
  Tabla.post .
La llamada a tabla.post hará saltar el procedimiento., por lo que pasas el control de duplicados.
Que la apliación se te quede colgada puede ser porque se mete en un bucle infinito. Pon puntos de ruptura en todos los procedimientos que crees que saltan y con f8 lo ejecutas paso a paso.

Espero haberte ayudado.

Un saludo
PD: Perdona que no pueda ayudarte como me gustaría, pero ahora mis esfuerzos son todos para mi hija ( tiene un mes ) , y si sobra algo para delphi !
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita