Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-04-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
Veamos a ver si aporto algo, recordad que no se procedures ni tiggers.

Tienes estos campos:
marca, modelo, cantidad, existencia

Quieres actualizar un campo determinado aumentandole a la existencia la cantidad deseada.
Supongamos que tenemos en el campo marca (jeep) y lo colocamos en un Edit para identificar que es el que queremos actualizar.
Para eso hay que usar un tigger (Como yo no se, lo haria asi):
Código Delphi [-]
QTemp.SQL.Text := 'Update inventario Set existencia = existencia + cantidad where marca = :Marc';
QTemp.Parameters[0].Value:= Edit1.Text;
QTemp.ExecSQL;

Como ves el edit contendria la palabra Jeep y la sentencia reconoceria que si el campo marca contiene la palabra Jeep actualizara la existencia sumandole la cantidad, solo de ese campo (Jeep).
Si hay otros que contengan la palabra Jeep tambien seran actualizados, por eso si se desea actualizar un campo determinado este tiene que poseer caracteristicas unicas, normalmente numericas (es lo usual).

Espero que aclare un poco mas, esperemos a algun Maestro, ya te ayudaran, no todos los dias vienen hay que tener paciencia.

Saludos
Responder Con Cita
  #2  
Antiguo 09-04-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 27
Delphius Va camino a la fama
Veamos... hay algo que todavía no entiendo...
¿Estamos hablando de una actualización masiva?¿O por el contrario, de un único registro?

No estoy muy puesto en SQL Server, ya le he perdido un poco la mano... (como no lo tengo instalado en mi equipo). NO estoy totalmente seguro, pero creo que la mano viene por aquí:

Código SQL [-]
create trigger ActualizarInventario on Inventario 
for after update
as
  /* he asumido que la marca es el id */
  update Inventario
  set existencia = old.existencia + new.cantidad
  where marca = old.marca
end

Supuestamente se está actualizando aquel registro (old.marca) en donde se ha detectado el nuevo valor de cantidad. (new.cantidad).

Si alguien lo prueba podria decir si lo que escribí funciona o no.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
Antiguo 09-04-2008
Avatar de josi
josi josi is offline
Miembro
 
Registrado: feb 2008
Posts: 100
Poder: 19
josi Va por buen camino
trigeer

cuando verifico la sintaxis dice que la columna no admite el prefijo new y old
Responder Con Cita
  #4  
Antiguo 09-04-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 27
Delphius Va camino a la fama
Me temía que no corriera
¡Pero que bestia! Debes anteponer los dos puntos a las variables!
Es decir: :New, y :Old.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #5  
Antiguo 10-04-2008
Avatar de josi
josi josi is offline
Miembro
 
Registrado: feb 2008
Posts: 100
Poder: 19
josi Va por buen camino
trigger

cuando verifico la sintaxis dice que la columna no admite el prefijo :new y ld
Responder Con Cita
  #6  
Antiguo 10-04-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
A ver:
Los campos Marca y Cantidad tienen que ser facilitados, supongamos que en dos edit.
Código Delphi [-]
QTemp.SQL.Text := 'Update inventario Set existencia = existencia + cantidad = :Cant where marca = :Marc';
QTemp.Parameters[0].Value:= Edit1.Text; // cantidad
QTemp.Parameters[0].Value:= Edit2.Text; // Marca
QTemp.ExecSQL;

Traducido a Gatitos (a mi manera):
Código Delphi [-]
create trigger ActualizarInventario on Inventario 
for after update
as
  update Inventario
  set existencia = existencia + cantidad = :cant
  where marca = :marca
end
Saludos
Responder Con Cita
  #7  
Antiguo 11-04-2008
Avatar de josi
josi josi is offline
Miembro
 
Registrado: feb 2008
Posts: 100
Poder: 19
josi Va por buen camino
Talking solucion

me funciona con el que planteo jcarteagaf
CREATE TRIGGER [TRIGGER inv] ON [dbo].[EQUIPOS] after update AS UPDATE X SET X.EXISTENCIA = X.EXISTENCIA + I.CANTIDAD FROM INVENTARIO X JOIN INSERTED I ON X.MODELO = I.MODELO
gracias a Caral,Delphius,carteagaf por preocuparse por el problema que plantie,


''los que aman a Dios todas las cosas les ayudan a bien''

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Terminar con Procedures. alexxino Varios 3 28-01-2007 22:40:57
Ocultar código de Stored Procedures y Triggers en FireBird... jncrls Firebird e Interbase 4 08-01-2007 16:51:52
Procedures con Interbase BlueSteel Firebird e Interbase 3 29-06-2006 19:47:31
SQLCOD TRIGGERS + PROCEDURES firebir 1.5 ASAPLTDA Firebird e Interbase 1 28-07-2005 22:19:13
Lio con Procedures!!! diegofhernando Varios 8 12-11-2003 16:54:43


La franja horaria es GMT +2. Ahora son las 21:01:46.


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