Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-09-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 23
AGAG4 Va por buen camino
oki

Si lanzo esta sentencia me llama el Trigger en donde llamará al Proc. Almacenado que me regresará el último INDICE del Detalle y me actualizará este mismo. Esto es si la llave Primaria SUCURSAL y CLIENTE tienen valores, pero si juego a que el "dbGrid" intente a disparar el Trigger no lo logra hacer. Espero me haya explicado .. Gracias.
Responder Con Cita
  #2  
Antiguo 20-09-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
la verdad no.

Un trigger se dispara independientemente de donde venga la sentencia update. Precisamente esa es una de sus razones de ser, y de sus principales ventajas.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 20-09-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 23
AGAG4 Va por buen camino
oki

Estoy de acuerdo con usted, pero, corrigeme si estoy mal, si en un dbGrid lo enlazo a un ibDataset por medio de un DataSource, al abrir un Nuevo Registro en el dbGRid, manda a llamar la Instrucción Post+Insert, obviamente porque Graba el Registro Anterior e Inserta el Siguiente, entonces si manda la Instrucción "Post", porque no llama el Trigger si en la propiedad ModifiSQL del IbDataset tengo la sentencia SQL:
Código SQL [-]
size="1">update TFAC_DPROMOCIONES
size="1">set 
size="1">ARTICULO = :ARTICULO,
size="1">CLIENTE = :CLIENTE,
size="1">DESCTO = ESCTO,
size="1">INDICE = :INDICE,
size="1">PRECIO = :PRECIO,
size="1">SUCURSAL = :SUCURSAL
size="1">where
size="1">CLIENTE = :OLD_CLIENTE and
size="1">INDICE = :OLD_INDICE and
size="1">SUCURSAL = :OLD_SUCURSAL
y en la Propiedad InsertSQL tengo
Código SQL [-]
size="1">insert into TFAC_DPROMOCIONES
size="1">(ARTICULO, CLIENTE, DESCTO, INDICE, PRECIO, SUCURSAL)
size="1">values
size="1">(:ARTICULO, :CLIENTE, ESCTO, :INDICE, :PRECIO, :SUCURSAL)
Y el Trigger lo tengo Antes ó después de "Insertar" y "Modificar" y no me regresa nada.

En el Trigger tengo esto:
Código SQL [-]
execute procedure dame_indice_dpromociones(new.sucursal, new.cliente) returning_values new.indice;
if (new.indice=0) then
  new.indice=1;
Y en el Procedimiento Almacenado tengo esto:
Código SQL [-]
Select Max(indice)+1 from tfac_dpromociones
         where Sucursal=:Sucursal and
                Cliente=:Cliente
         into:xindice;
/*Donde :Sucursal y :Cliente Son Parámetros de Entrada y
   :XIndice es el Parámetro de Salida*/
Gracias por sus comentarios. Espero haberme explicado.
Responder Con Cita
  #4  
Antiguo 21-09-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Hola Agag.

Creo que debes comenzar por separar las ideas. El dataset ejecutará la sentencia SQL apropiada (insert, update o delete) cuando se llame al método post.

Cuando se llama al método Insert, Delete, Append o Edit, el dataset normalmente llamará primero a su método post si es necesario, antes de intentar realizar la acción propia del método.

Todo esto ocurre en tu propia aplicación.

Los triggers residen en la base de datos, de manera que cuando el motor recibe una sentencia insert/update/delete ejecuta los triggers especificados para la tabla, de acuerdo a su sentencia de creación (before/after) y la sentencia específica.

Podes comprobar que el trigger se dispare y funcione correctamente conectandote via isql o ibExpert. Si el trigger funciona, entonces revisá la lógica de tu programa en delphi. Si no funciona, entonces revisá la lógica del trigger.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 21-09-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 23
AGAG4 Va por buen camino
oki

Entonces en el dbGrid, cuando se inserta un registro el ibDataset manda a llamar su método Insert, pero no manda al motor de la base de datos la sentencia "INSERT INTO..", estoy mal????
Muchas Gracias por sus Respuestas.
Responder Con Cita
  #6  
Antiguo 21-09-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
ahora ya no.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #7  
Antiguo 21-09-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 23
AGAG4 Va por buen camino
oki

oki
Gracias.
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 18:55:41.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi