campos calculados
hola, vuelvo de nuevo al mismo tema que expuse hace tiempo.
tngo una tabla que me almacena las lineas de pedidos,tiene los campos cant,pvp, codigoarticulo....el campo total (cant x pvp) lo he creado como un campo calculado. la clave primaria de esta tabla esta compuesta por dos campos (numerodelinea y numerodefactura). El procedimiento para realizar el calculo de la columna calculada lo he puesto en el evento oncalculatefields. Y es ahora cuanod llega el problema, a la hora de insertar un registro en la tabla, justo despues de haber insertado el campo numerodefactura y antes de haber insertado el numerodelinea el programa me da un error diciendo que el Tdataset no esta en modo de edicion o inserción de datos. NO TENGO NI IDEA DE COMO ARREGLAR ESTO!!!POR FAVOR UNA AYUDA!!! codigo
|
Hola! estee...donde tenes puesto el edit..de "tbAuxiliarneto" ? Ademas como te compila eso si algunas de las tablas les referencias el "modulodatos" y a otros no? tenes algun with arriba? o acaso esto lo haces del md? :rolleyes:
Te transcribo las ultima 3 ultimas lineas de tu codigo: modulodatos.tbauxiliar.edit; tbAuxiliarneto.AsFloat:=total; modulodatos.tbauxiliar.post; Revisa bien el codigo..o corregime si estoy equivocada, salu2 |
Si entendi bien el código el problema lo tenes cuando asignas el calculo del total general:
Código:
modulodatos.tbauxiliar.edit; Código:
modulodatos.tbauxiliar.edit; |
no tiene importancia eso k me comentais, ya que el codigo esta en el modulodatos, asi que puedo llamar a esa tabla tanto poniendo modulodatos como sin ponerlo, por eso no hay problema. y no hay ningún fallo de compilación. El codigo expuesto es el que se encuentra en el evento oncalculatefields, y el error que me da es en ejecución cuando intento introducir una nueva linea despues de introducir el primer campo y acceder a este procedimiento (ya que se modifica la linea) me dice que el dataset no se encuentra ni en edit ni en insert y no me deja introducir la linea completamente.
espero haberme explicado bien, muchas gracias!! |
Cita:
Otra cosa vos en otro lado haces un insert? trabajas con transacciones? porque por ahi si asentas los datos se te cierra todas las tablas..y tenes que volver abrirlas, debugeaste el codigo? en que punto se te planta? porque ahi hablas del procedimiento y no de la linea donde da el error, es en post?...... Ademas para que tanto barullo con ese evento si lo puedes hacer mejor desde otro lugar del programa...:D |
Para mi el error lo tenes porque no son campos calculados, son campos de la tabla, proba poniendo todo el código en beforepost.
Los campos calculados, para mi, son los que creas en el componente ttable o tquery para casos especiales (en fieldsdefs, creo que es el nombre correcto). |
Problema con Campo Calculado
............
|
Yo no suelo usar tablas pero creo que tendrás que hacer algo parecido a lo que se les hace a las querys para que puedas modificarlas.
En las querys debes poner el parámetro "RequestLive" a true, también es conveniente poner "CachedUpdates" a true. Además hay que asociar a la query un UpdateObject para que sepa cómo hacer las inserciones, modificaciones y borrados. De todos modos si usas la búsqueda del foro encontrarás varios hilos en los que se habla de este tema, como por ejemplo: Problemas al insertar en una tabla |
La franja horaria es GMT +2. Ahora son las 01:37:24. |
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