FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Calculos en una tabla
En mi aplicación hice en el onClick de un botón este procedimiento para calcular AMORTIZACION, VALOR ACUMULADO Y VALOR RESIDUAL de un determinado Bien de Uso, pero mi problema es que cuando calculo ésto (también tengo un boton que me Graba los datos haciendo un Post en la tabla) y hago click en el boton Grabar no me graba estos valores en la Tabla, la verdad es que no se porque. Alguien puede ayudarme abajo está el código que hice para estos calculos.
Estoy usando Delphi 5, y tablas Paradox 7. Gracias, saludos.- Código: procedure TForm10.CalcularClick(Sender: TObject); (Calculo AMORTIZACION, V. ACUMULADO, V. RESIDUAL) Var d,m,Aini,Afin,difa:Word; n,a,precio:Variant; amort,Vacumulado,Vresidual:Integer; begin //Calculo la AMORTIZACION ModeloDatos.TblMueble.Active:=True; n:=ModeloDatos.TblMueble.FieldValues['Rubro']; //lo que tengo en el campo 'Rubro' de TblMueble.- a:=ModeloDatos.TblRubro.Lookup('CODRUB',n,'Añoamortizacion'); //años de Amortización.- precio:=ModeloDatos.TblMueble.FieldValues['Preccompra']; Amort:=precio/a; ModeloDatos.TblMueble.FieldValues['Amortizacion']:=Amort; //Calculo VALOR ACUMULADO.- Decodedate(Date,Afin,m,d); //Decodifica una fecha en año, mes, día.- Decodedate(ModeloDatos.TblMueble.FieldValues['Fechcomp'],Aini,m,d); difa:=Afin-Aini; Vacumulado:=Amort*difa; //Calculo VALOR RESIDUAL.- Vresidual:=precio-Vacumulado; ModeloDatos.TblMueble.FieldValues['Vresidual']:=Vresidual; end; |
#2
|
||||
|
||||
Hola.
¿ No te falta un ModeloDatos.TblMueble.Post ? Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#3
|
|||
|
|||
Calculo en una tabla
Probé también con eso pero no anduvo tampoco, no graba y cuendo hago click en el boton grabar (que tengo) me da error, 'que la tabla no está en Edit o insert mode'
|
#4
|
|||
|
|||
A parte del Post comentado por Marc, también te falta un Edit
|
#5
|
||||
|
||||
Resumiendo... el orden debiera ser algo como:
Código:
begin tabla1.first; while not tabla1.eof do begin Tabla1.Edit; tabla1campo1.value := 'NuevoValor'; Tabla1.Post; Tabla1.Next; end; end;
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#6
|
|||
|
|||
Calculo en una tabla
He probado con los ustedes me corrigieron pero no hay caso tampoco me funciona.
Les explico mejor: Yo tengo un form con un DBGrid (relacionado con la tabla TblMueble) y cuatro botones, AGREGAR, MODIFICAR, ELIMINAR y CERRAR. En el boton AGREGAR yo hago un Append y abro otra ventana con un form que me permite cargar los datos de un determinado bien de uso en DBEdits que están relacionados con la tabla Mueble, es aquí donde tengo un botón CALCULAR que me hace el procedimiento que describí anteriormente. Esta nueva ventana (donde cargo los datos) tiene dos botones más: ACEPTAR (que graba toda información introducida en los DBEdits mediante un Post) y otro CANCELAR (que cancela todo mediante un Cancel). Los datos que introduzcon mediante el teclado (Código, Descripción, Fecha de compra, etc.) cuando hago click en ACEPTAR los graba en la tabla, pero los datos que calculo con CALCULAR no se graban cuando ejecuto ACEPTAR. Sin enbargo la tabla TblMueble sí está en modo de Inserción. Lo mismo ocurre con el botón MODIFICAR, me hace un Edit de la tabla y me abre el mismo formulario de introducción de datos, me deja modificar los demás valores y me deja guardar los cambios pero los datos calculados no los graba. Es decir CALCULAR los obtiene pero ACEPTAR no los graba en la tabla. Y como antes la tabla sí está en modo de edición ya que esto lo hizo el botón MODIFICAR. Igual probé ponerlo en el código de CALCULAR (Edit... Post) pero tampoco funciona. No sé si alguien puede darme una idea más de como solucionarlo, o de como hacerlo para que funcione, aunque sea de otra forma. Muchas gracias, espero haber sido claro, saludos. Silvio.- |
#7
|
|||
|
|||
Quizás el problema esté por el
ModeloDatos.TblMueble.Active:=True; Sabiendo que la tabla está en inserción/edición, esta linea sobraría. Quizás (y digo sólo quizás) provoque un post y por eso no se estén guardando los datos. No lo he probado, pero podrías mirar de comentar la linea a ver |
#8
|
|||
|
|||
Calculo en una tabla
Cadetill:
sí esa línea estaba de más, pero en realidad el problema era que esas columnas las tenía definidas como Calculadas, por eso no me tomaba los datos, no sé por que pero ese era el problema porque ahora anda bien. Muchas gracias, saludos.- Silvio. |
#9
|
|||
|
|||
Cita:
Sólo decirte que los campos calculados se han de calcular en el evento OnCalcFields del dataset asociado |
|
|
|