Bueno ahora si me puedes aclarar mi duda osea lo que te quiero decir que creo una tabla por medio de un query pero no se si al declararla la tabla puedes crear un campo que haga un calculo y si se puede como o donde podría definir un campo que realize un calculo.
1 respuesta
Respuesta de gaunmanuel
1
1
gaunmanuel, Desarrollador de sistemas, delphi, SQL Interbase, Oracle
UPS!... perdón, yo me equivoque... pido mil disculpas, lo que pasa es que yo estoy ahorita manejando procesos con campos calculados, y pensé que tu estabas usando lo mismo que yo, perdón, deja te explico... Son dos maneras de hacer lo que estas haciendo a ver cual te sirve más: Mannera #1.- Hay unos componentes llamados ClienteDataSet a estos les puedes agregagar campos igual que a los TQuery y TTables, pero estos ClientDataSet tiene la capacidad de agregar otro tipo campo que no tienen los demás y son de tipo Aggregate, los cuales tiene una propiedad llamada Expression la cual es la que yo confundía con DefaultExpression bueno aquí en esta propiedad Expression si te permite poner por ejemplo Sum(campo1) y listo te saca la sumatoria del campo o pones Campo1+Campo2 para hacer la suma de lo que tengan estos campos así como tu me decías de manera vertical, ok estos ClientDataSet tiene una propiedad llamada AggregatesActive la cual deberás poner en true para que habilites todos los campos Aggregate que tengas. Ahora Manera #2.- La otra manera es como lo estábamos haciendo, pero para que este campo pueda mostrarte la información que requieres tienes que asignársela en un evento del TQuery llamado OnCalcFields dentro de este evento puedes hacer tus operaciones por ejemplo QueryCAMPOCALCULADO.Value := QueryCAMPO1.Value+QUERYCAMPO2.Value; Dime si tienes más dudas.. ok Sorry por equivocarme jijijij
Pero eses clientdataset no se puede utilizar y conectarse a la base de datos igual que el Ttable o si. Bueno y la segunda opción OnCalcsFields pongo las operaciones y se ejecutan automáticamente después que se modifica un registro o cuando haces un post a un registro como funciona solamente pongo el calculo y cuando modifique los registros que están involucrados en la suma se modificara automáticamente el registro. O de que manera funciona.
Pues mira es un poco complicado ya que no sabes que campos serán los que hagan el calculo... La única manera es que en alguna parte guardes el nombre del campo con el cual vas hacer el calculo, y luego ya solo creas el campo calculado y en la propiedad DefaultExpresion pones por ejemplo sum(Nombre del campo que guardeste) y listo, esa podría ser la única manera, ya que lo importante es saber sobre que campo se hará el sum.
Pero cuando utilizas ese default expression donde se activa cada vez que insertas o como no se pueden hacer sumatorias verticales 'tabla.Field[6]. value+tabla.Fields[5].value' de esta manera y el defaultespression no se activa en alguna otra parte porque lo que pasa que cuando capturan ya esta información capturada y entran ellos capturan su información asignada y unos campos se calculan de acuerdo a lo que meten ellos pero están editando los registroa porque ya están insertados anteriormente. Donde puedo llamar esa propiedad para hacer mi calculo.
No mira, cuando esta usando un campo calculo, no necesitas activar ni ndada, automáticamente se calculara, mmmm sabes que pensándolo bien a lo mejor si te hace falta activarlo en el TQuery o TTable tiene una propiedad que se llama AutoCalcFields esta propiedad solo ponla a TRUE y listo. A lo que me refería al principio es que no necesitas estar activandolo o desactivándolo una vez activa los cálculos te los hará automáticamente, por ejemplo si tu ya tienes un registro con información digamas que en un campo tienes el valor de 10 y entro el de 15 y el campo calculo tiene campo1+Campo2 al modificarlos automáticamente te actualizara el campo calculado.. ok recuerda que en DefaultExpresion son sentencias SQL checate la ayuda con F1 saludos