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 09-11-2010
martinartaza martinartaza is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 77
Poder: 14
martinartaza Va por buen camino
Ayuda para capturar 'Raise Notice' de postgres en delphi 6 o 7.

Hola querido foro yo de nuevo por acá haciendo preguntas que no encuentro por la web.
Estoy programando usando Delphi 6, 7 (según la maquina que me siento, hay distintos proyecto con distintas librerias) y todos usando postgres SQL.
En postgres tengo funciones que usan el raise exception y a eso la capturo bien desde delphi, pero postgres también posee lo que se llama raise notice, y habia estado evitando usarlo debido a que no sabia como capturarlo, ahora en este momento me va a simplificar mucho la vida.
Lo que necesito es saber como capturo el raise notice de postgres.
Ejemplo

En sql tengo la siguiente función.
Código SQL [-]

CREATE OR REPLACE FUNCTION registrarpagofacil(p_fecha date, p_import numeric, p_idctacte integer, p_vencim1 date, p_import1 numeric, p_vencim2 date, p_import2 numeric, p_vencim3 date, p_import3 numeric)
  RETURNS void AS
$BODY$
DECLARE
  CtaCte_Cliente RECORD;
BEGIN
....
....
....
  SELECT * INTO CtaCte_Cliente 
  FROM CtaCte_Clientes ccc 
  LEFT JOIN ClientesCuentas cc USING(idCuenta) 
  WHERE idCtaCte = p_idCtaCte;
  IF CtaCte_Cliente IS NULL THEN
    RAISE EXCEPTION 'Clave primaria de cuenta corriente: % de cliente no encontrada', p_idCtaCte;
  END IF;
...
...
...
-- Si llego hasta el final, termino bien.
RAISE NOTICE 'La operación con la cuenta corriente: % a sido exitosa', p_idCtaCte
END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION registrarpagofacil(p_fecha date, p_import numeric, p_idctacte integer, p_vencim1 date, p_import1 numeric, p_vencim2 date, p_import2 numeric, p_vencim3 date, p_import3 numeric) OWNER TO postgres;


El motivo por el cual quiero saber si termino bien, es que este proceso se tira, al leer un arhivo que tiene n lineas, y si una linea del archivo anda mal, se cancela la operación, con raise exception solo puedo saber que una linea termino mal, pero con el raise notice puedo leer cuantas lineas terminaron bien, y saber en que linea del archivo buscar el problema.

Ojo, no quiero atrapar el raise notice con una excepcion del programa, a la excepcion de postgres la atrapo con un bloque try except, pero al raise notice de postgres, simplemente lo quiero mostrar en un ListBox.

Bueno, en conclusion lo que quiero hacer es algo por el estilo.

Código Delphi [-]
listbox1.add(raise notice de postgres)

Desde ya muchas gracias y recuerde como siempre busque en otros lados (en español) y no encontré nada al respecto.
Responder Con Cita
  #2  
Antiguo 09-11-2010
martinartaza martinartaza is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 77
Poder: 14
martinartaza Va por buen camino
[Solucionado] Se puede usar el componente db de postgresdac

Hola, en el mensaje anterior me olvide de decir, que uso postgresdac, bueno en los distintos componentes parece ser que hay muchas opciones, probe con PSQLNotify, con el PSQLMonitor y nada, finalmente encontre la solución con el propio PSQLDatabase, tiene un evento llamado OnNotice, y bueno haí que programarlo desde hay, el problema es que en un proyecto de más de 140 tablas, con 1 solo componente PSQLDatabase, programar el notice para que muestre datos desde cualquier stored procedure que es llamado de algún formulario es medio engorroso, pero ya vere que solución puedo darle.
Responder Con Cita
  #3  
Antiguo 31-08-2011
Avatar de burgosrodas
burgosrodas burgosrodas is offline
Miembro
 
Registrado: sep 2008
Ubicación: Colombia
Posts: 24
Poder: 0
burgosrodas Va por buen camino
Capturar RAISE NOTICE de Postgres

Hola
haz dado con la misma duda que he tenido
como capturar los diferentes RAISE que postgres maneja
pues yo diferencio los RAISE NOTICE, RAISE WARNING, RAISE INFO etc...
pero no logro verlos desde Delphi...
pero me haz dado una buena idea con los componentes, pues yo utilizo los ZEOS
y tambien veo un componente llamado ZPgEventAlerter, con el mismo evento que planteas OnNotify, pero no se como utilizarlo para lo que necesito, pues ahora quiero implementar el sistema de notificaciones asincrono
LISTEN, NOTIFY y no se como capturar el cuerpo del mensaje.

espero alguien encuentre una forma sencilla de hacerlo

saludos desde Colombia
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Capturar eventos de postgres en delphi chelard PostgreSQL 11 12-09-2010 10:38:38
Componente en Delphi 2006 para importar datos de excel a postgres saul_fg PostgreSQL 0 01-04-2009 18:49:56
Para qué usar raise Exception wascar2003 Varios 3 20-11-2007 12:50:15
ayuda con postgres y Delphi .NET Natucha PostgreSQL 1 19-05-2007 01:00:22
Ayuda con la conexión de Postgres con Ruby on Rails elgocho PostgreSQL 0 05-12-2006 22:59:31


La franja horaria es GMT +2. Ahora son las 20:36:22.


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