FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Crear Trigger y llamarlo desde Delphi
Hola...
Hace algun tiempo he tenido problemas para que un registro se actualice, consultado por aquí y por allá, me dieron a entender que sería mejor que empezara a utilizar los famosos triggers, los cuales aún no los se usar bien... bueno... primero que nada quiero crear el triggers, el cual me permita actualizar los siguientes datos: ( se me olvidaba, trabajo con interbase 6 ) Tabla = Orden Campos = Ord_Neto : Float, Ord_Descuento : Float, Ord_Iva : Float Campo Clave = Ord_Numero : Varchar hasta elmomento llevo esto.. pero me sale error... Código:
AS BEGIN update Orden Set Ord_Neto = new."Ord_Neto", Ord_Descuento = new."Ord_Descuento", Ord_Iva = new."Ord_Iva" where Ord_Numero = new."Ord_Numero"; END bueno, demás esta decir que agradesco cualquier aporte...
__________________
BlueSteel |
#2
|
|||
|
|||
Los triggers no pueden llamarse directamente desde Delphi o cualquier otro ambiente de desarrollo. Estos están diseñados para dispararse cuando ejecutas una acción en una tabla o registro (insert, update, delete).
Saludos... |
#3
|
||||
|
||||
Suata...
entonce que puedo hacer para solucionar mi problema... me explico... Es un sistema de Ordenes de Compra... en donde un modulo es para modificar Ordenes que estan en Garantía.... La idea es poder agregar o quitar items de la orden (Tabla : DOrden), y actualizar los respectivos valores netos y de Iva (Tabla:Orden), para lo cual realizo el siguiente procedimiento: Agrega Item (Tabla DOrden) Código:
vTot.Text := FloatToStr(RoundN(StrToFloat(vCtd.Text)*StrToFloat(vUni.Text))); IBQ_Edit.SQL.Clear; IBQ_Edit.SQL.Add('Insert Into "DOrden" ("Ord_Numero","Dor_Descripcion", "Dor_Cantidad","Dor_Valor_Unitario")'); IBQ_Edit.SQL.Add('Values (:P1,:P2, :P3, :P4)'); IBQ_Edit.Params[0].AsString := nOrd.Text; IBQ_Edit.Params[1].AsString := vDes.Text; IBQ_Edit.Params[2].AsInteger := StrToInt(vCtd.Text); IBQ_Edit.Params[3].AsFloat := StrToFloat(vUni.Text); IBQ_Edit.ExecSQL; vTot_Bru.Text := IntToStr(StrToInt(vTot.Text)+StrToInt(vTot_Net.Text)); Actualiza_Orden; Código:
IBQ_Edit.SQL.Clear; IBQ_Edit.SQL.Add('Delete From "DOrden"'); IBQ_Edit.SQL.Add('Where "Dor_Numero"=:Var1'); IBQ_Edit.Params[0].AsString := IBQ_Items['Dor_Numero']; IBQ_Edit.ExecSQL; vTot_Bru.Text := FloatToStr(StrToFloat(vTot_Bru.Text)-Total_Item); Código:
procedure TModifica_OC.Actualiza_Orden; begin vTot_Net.Text := FloatToStr(StrToFloat(vTot_Bru.Text)-StrToFloat(vTot_Des.Text)); If CB_Factura.Checked = True Then vTot_Iva.Text := '0' Else vTot_Iva.Text := FloatToStr(RoundN(StrToFloat(vTot_Net.Text)*vIva)); vTot_Fin.Text := FloatToStr(RoundN(StrToFloat(vTot_Iva.Text)+StrToFloat(vTot_Net.Text))); IBQ_Edit.SQL.Clear; IBQ_Edit.SQL.Add('Update "Orden" Set "Ord_Neto"=:Var1,"Ord_Descuento"=:Var2, "Ord_Iva"=:Var3'); IBQ_Edit.SQL.Add('Where "Ord_Numero"=:Var4'); IBQ_Edit.Params[0].AsFloat := StrToFloat(vTot_Bru.Text); IBQ_Edit.Params[1].AsFloat := StrToFloat(vTot_Des.Text); IBQ_Edit.Params[2].AsFloat := StrToFloat(vTot_Iva.Text); IBQ_Edit.Params[3].AsString := Ordenes.Num_Orden; IBQ_Edit.ExecSQL; IBT_Edit.Commit; // Actualiza cambios en Tabla :Dorden IBT_Items.Commit; // Actualiza cambios en Tabla :Orden end;
__________________
BlueSteel |
|
|
|