Estoy trabajado con datawindows dinámicos sobre base de datos oracle. El problema es que en todos los datawindows que hay fechas estas me aparecen en formato fecha + hora (00:00:00) cuando en la base de datos esta solo como fecha (dd/mm/yyyy). Como puedo cambiar este formado desde una instrucción en un datawindow dinámico.
1 respuesta
Respuesta de Antonio Garcia
1
1
Antonio Garcia, clipper todas sus versiones (manejo total) power builder todas...
Las propiedades del datawindow independiente si son dinámicos o no, son pueden ser cambiadas por medio de el prefijo object, en el caso de hacerlo directamente o bien por medio de la función MODIFY, por tener cualquiera de los 2 una cantidad muy grande de posibilidades, te invito a que las veas propiamente, en la ayuda online de pb, simplemente pulsas F1, y escribes describe, de las posibilidades que presente, selecciona Describe DataWindow expression function, y sobre la pantalla que te presente haz click en "Controls in a DataWindow and their properties", esto te lleva a las posibilidades de variación, utilizando la función DESCRIBE(), la cual extrae los valores de las propiedades, esto es simplemente de referencia puesto que la función contraria MODIFY() también puede ser utilizada con los mismos formatos. Cambiando el formato: Cuando generas los datawindows dinámicos, los campos son hechos por medio de un simple edit, este edit, contiene una propiedad llamada FORMAT, la cual puede ser afectada programaticamente ej. STRING ls_format ls_format = dw_1.object.fecha.format ó ls_format = dw_1.Describe('fecha.format') para modificar esto dw_1.object.fecha.format = '[shortdate]' ó dw_1Modify("fecha.format = '[shortdate]'") Ahora te estarás preguntando: bueno y como hago para extraer el nombre de la columna y poder afectar esta con un modify respuesta: STRING ls_columna ls_columna = dw_1.Describe('#1.name') puedes utilizar un ciclo controlado tipo FOR INTEGER li_for INTEGER li_cols STRING ls_name li_cols = INTEGER(dw_1.Object.DataWindow.Column.Count) FOR li_for = 1 TO li_cols ls_columna = dw_1.Describe('#'+string(li_for)+'.name') .. ... ... NEXT Existe otra posibilidad: En el momento del diseño de las tablas puedes incluir en cada campo un formato de visualización y edición, incluyendo el nombre del titulo, etc., esto lo puedes confirmar en el editor de tablas, simplemente elige una cualquiera, seleccionas un campo y luego vas a las propiedades, en estas encontraras una pestaña que pone. Display y otra Edit Style, es posible que cuando entres a estas te encuentres con ningún tipo o valor para indicar en estas, para poder generar tus propios tipos, y estilos de edición y despliegue, simplemente ve (siempre en el editor de tablas), a la opción VIEW y luego EXTEND ATTRIBUTES, aquí te presenta 3 entes, Display Formas, Edit Styles, Validation Rules, cada uno de ellos se extiende en ramas tal y como un tree-view, si haces click derecho sobre cualquiera de estos, te presenta un menu, para añadir uno nuevo simplemente haz click en NEW, el resto es pan comido. Espero que esto pueda ser de utilidad para resolver tu problema