PDA

Ver la Versión Completa : Llamada a Procemiento FANTASMA


alexglez1255
31-05-2015, 16:50:18
Tengo un problema que ya le busque y rebusque y no tengo idea por que me lo hace, a la hora de abrir un ClienDataSEt para especificar en PARAM me llama a un procedimiento de filter de otra unidad el cual yo no lo llamo de ninguna forma o lo disparo con ningun evento del CDS...bien este es el codigo

PROCEDURE PARA GRAVAR CAMBIOS EN UN REGISTRO QUE SE MODIFICO

procedure TFrclientesmod.BtguardarcambiosclienClick(Sender: TObject);
begin
with logicanegocio do
begin
if CDSclien.Modified=True then
begin
CDSclien.ApplyUpdates(0);
modulodatos.IBTransaction1.Active:=true;
modulodatos.IBTransaction1.Commit;
end;
Btguardarcambiosclien.Enabled:=False;
BtCancelarCambiosclien.Enabled:=False;
btnBuscarCte.Enabled:=True;
EdModcliente.Enabled:=True;
cmbBusqCte.Enabled:=True;
EdModcliente.SetFocus;
cdsClien.close;
cdsClien.Params.ParamByName('Cod_cliente').Value:=0;
cdsClien.open;
CDSclieCOD2.open;
end;

AL CORRIENDO EL PROGRAMA LINEA POR LINEA Y PASAR POR cdsClien.open; BRINCA AUTOMATICAMENTE AL SIGUIENTE PROCEDIMIENTO, desactivo el DBGRID, es un ClienDataSet diferente y esta en una unidad diferente...y al salir del programa de da un error de VIOLACION DE MEMORIA o algo asi... ya revise todos los eventos en los ClienDataSet y no encontre nada que dispare el procedimiento...el Filtro que se activa lo uso en la forma de altas de Clientes, para que al teclear el nombre del cliente se evite dar de alta dos veces al mismo nombre.... a alguien le ha pasado lo mismo.? Gracias por su ayuda

procedure TFrmaltadeclientes.DBEdit2Change(Sender: TObject);
begin
if DBGshowdoubleclient.Enabled=False then DBGshowdoubleclient.Enabled:=True;
if DBGshowdoubleclient.Visible=False then DBGshowdoubleclient.Visible:=True;

with logicanegocio.CDSclieCOD do
begin
Filtered := False;
Filter := Format( 'CLIENTE LIKE %s ', [ QuotedStr('%' + DBEdit2.Text + '%') ] );
Filtered := True;
Refresh;
DBGshowdoubleclient.Refresh;
end;
end;

mamcx
31-05-2015, 17:44:30
Lo que pones no dice ni un carajo, pero ya que suena a algo bien raro, algunas ideas:

1- Borra todos los DCUs que genera el proyecto. TODOS
2- Haz un build completo

Esto es pa eliminar lo mas raro posible, pero

Si eso no funciona:

1- Estas en algun lugar asignando un objeto de la clase X cuando deberias haber asignado la clase Y. Eso es *casi seguro*.
2- Mata (y analiza) los warnings que te de el compilador.

Si no ves como hacer eso, entonces el metodo cientifico es aislar & reproducir:

1- Crear un mini-proyecto donde repliques lo que estas haciendo, con lo *minimo necesario*
2- Mira si en ese proyecto sale el problema, sino, es porque lo que NO pusiste en el proyecto es lo que contiene el error, si SI lo que esta DENTRO del proyecto, es lo que contiene el error.

Si tiene un codigo bien enruedado, y lo que te acabo de decir tomaria demasiado tiempo? Des-enruedalo. Mientras mas enreudado el codigo, mas problemas raros vas a tener.

alexglez1255
31-05-2015, 20:40:30
gracias intentare eso

alexglez1255
01-06-2015, 01:57:00
GRACIAS mamcx POR TU ayuda y consejo, pero la solucion que encontre mas practica fue crear otro ClienDataSet identico pero con diferente nombre (de hecho solo le agregue el 2 al nombre) y problema solucionado...nunca supe por que lo hacia...gracias de todos modos