Hola nuevamente por acá, ojala me puedas ayudar con esto ya que se me ha hecho un lio. La cosa esta así: tengo un formulario en el cual tengo una tabla ms o menos: Lunes miércoles viernes domingo semana1 100 150 200 120 semana2 50 50 80 60 semana3 100 100 250 130 semana4 150 60 60 60 mes1 400 360 390 370 Así sucesivamente por cada mes del año. He tratado con textbox para luego mandarlos a la tabla pero obvio son demasiados y con el mentado grid me he hecho pelotas. Por favor me podrías guiar a través del procedimiento para poder mandar los datos a la tabla y luego mandar a imprimir un reporte con todos los mismos datos. Gracias de antemano.
Cerca del medio día contesto tu pregunta, no te preocupes que lo vamos a hacer fácil.. ahora tengo un poco más de trabajo de lo normal pero al medio día te puedo desarrollar la respuesta con tiempo.. Keystone - Christian
Ok esperare tu valiosa ayuda. Gracias.
Disculpame por la demora.. nos espera algo de trabajo Bueno, vamos a tratar de que funcione.. Primero que nada vamos a crear una tablita de trabajo temporal que tenga campos de referencia al mes y al año porque vos tienes que sumarlos y un idenfiquidaro de tipo de dato.. porque tienes semanas, meses y años. Ya que estamos también le ponemos una columna Total para que sume horizontalmente ademas de las columnas. .. Par crear la tabla hace así: create dbf miTabla (tipo c(1), mesaño c(6), descrip c(40), lunes n(3), miercoles n(3), viernes n(3), domingo n(3), total n(6)) index on tipo+mesAño to miTablaI set order to También de paso creamos un indice para localizar la fila donde poner los resultados.. El próximo paso, es llenar la tablita con valores listos para usar.. sele miTabla mAño=2007 for mMes=1 to 12 for mSemana=1 to 4 append blank replace tipo with 'S',mesAño with transf(mAño)+right('00'+transf(mMes),2), descrip with 'Semana '+transf(mSemana) Endfor Append blank replace tipo with 'M', mesAño with transf(mAño)+right('00'+transf(mMes),2), descrip with 'Mes '+transf(mMes) Endfor Append blank replace tipo with 'A', descrip with 'Año '+transf(mAño) Go top Bueno, con esto tenemos la tablita lista para ponerla en un grid. Ahora bien. En el formulario creas un grid donde mostrar la tabla que hemos creado y llenado.. y ahora un par de toques..: El grid tiene la siguiente estructura: Grid Column TextBox Bueno vamos a trabajar con el textBox En el when de cada textBox correspondiente a los días ponemos lo siguiente: return tipo='S' Entonces, si no es una semana no te permite escribir un valor.. Ahora en el valid ponemos replace lunes with this.value Thisform. Calcula(mesAño) (Lunes cambia por miércoles, viernes y domingo según corresponda en los otros textbox) Bueno, por ultimo, creamos un método en el formulario que se llame calcula y le pones esto: LParameter lMesAño Se le miTabla mRec=recno() mMesAño=miTabla.mesAño dimension mTotalMes(1,4) dimension mTotalAño(1,4) mTotalMes=0 mTotalAño=0 Sele sum(lunes), sum(miercoles), sum(viernes), sum(domingo) from miTabla where tipo='S' and mesAño=mMesAño into array mTotalMes sele sum(lunes), sum(miercoles), sum(viernes), sum(domingo) from miTabla where tipo='S' into array mTotalAño sele miTabla if seek('M'+mMesAño,'miTabla','miTablaI') replace lunes with mTotalMes(1,1), miercoles with mTotalMes(1,2), viernes with mTotalMes(1,3), domingo with mTotalMes(1,4) endif set order to go bottom replace lunes with mTotalAño(1,1), miercoles with mTotalAño(1,2), viernes with mTotalAño(1,3), domingo with mTotalAño(1,4) Go mRec Thisform. Grid. Refresh Con eso se llenaran dinámicamente los valores de los meses y al final de todo el año.. Para imprimirlo directamente mandas a imprimir la tablita con un report.. Otra sugerencia es que uses la propiedad dynamicBackColor de las columnas (column) para que tengo otro color la fila donde están los meses.. podes poner así en el init: thisform.grid.setAll('dynamicBackColor','iif(tipo="S",rgb(255,255,255),rgb(255,255,230))','column') Bueno, espero que te haya sido útil y cualquier cosa estoy a tu disposición Keystone - Christian www.keystone.com.ar
Me olvidé.. El el controlSource de la columna que corresponde al total, pones.. lunes+miercoles+viernes+domingo.. Así te saca la cuenta horizontal también.. Keystone - Christian www.keystone.com.ar