Ver Mensaje Individual
  #5  
Antiguo 07-02-2007
lbuelvas lbuelvas is offline
Miembro
 
Registrado: may 2003
Ubicación: Colombia
Posts: 377
Reputación: 22
lbuelvas Va por buen camino
Hola foro,

Muy respetable tu forma de trabajar pero te recomendaria que utilizaras los procedimientos almacenados para realizar consultas a la base de datos que no son posibles directamente con la clausula select, para hacer calculos y operaciones donde intervienen muchas tablas, para informes cross-tab (donde se trasponen las filas por las columnas) y en general para casos muy especiales.

Voy acolocar un ejemplo, en un sistema que efectua liquidaciones a 10.000 clientes, si lo hiciera en codigo de Delphi, los datos de todos ellos tendrian que viajar por la red hasta el equipo que esta ejecutando el programa, con un procedimiento almacenado no tiene que viajar datos a ninguna parte y se hace la liquidacion directamente en el equipo (servidor) que contien la base de datos, esta es una de las caracteristicas de las tecnologias cliente/servidor.

Otra cosa, si dicose es la llave primaria pues atrapa el error enviado por el motor en caso de presentarse vioalcion de la llave y listo.

Pero volviendo al origen de tu pregunta, el codigo pasa "derecho" y no hace lo que quieres porque tu segmento de codigo

Código Delphi [-]
if (not dmTablas.MDOSPExistCPCliente.IsEmpty) then

siempre dara verdadero, esto debido a que el procedimiento almacenado SP_EXIST_CLIENTE retorna en el parametro de salida dicose un valor (nullo o no), lo que debes es preguntar por el contenido del parametro de salida.

Cambia la linea anterior por

Código Delphi [-]
if (not dmTablas.MDOSPExistCPCliente.ParamByName('DICOSE').IsNull) then

Muchos exitos
__________________
Luis Fernando Buelvas T.
Responder Con Cita