Tengo un datawindow que me devuelve todos los datos de una tabla pero necesito que por medio de una sentencia sql, la cual la genero con powerscript desde un evento externo me filtre los datos a la hora de hacer un retrieve().
1 Respuesta
Respuesta de Antonio Garcia
1
1
Antonio Garcia, clipper todas sus versiones (manejo total) power builder todas...
Con referencia a tu primer pregunta. En esta forma de editar un datawindow la tabla no puede ser una variable, puesto que el script es el precursor directo de las columnas que se presentan en el datawindow, sin embargo, existen formas generar datawindows dinámicos, utilizando un simple script, formado en una variable de tipo string. Con respecto a tu segunda inquietud lo que sucede es que cada una de las columnas descritas en el datawindows posee una propiedad llamada TAB o TAB-ORDER, esta propiedad va de en un orden ascendente en lapsos de 10, si dicha propiedad contiene 0, esta columna no puede ser editada, aun así tenga todos los atributos para poder hacerlo, ademas el tab-order tiene la finalidad de indicar el orden en que se navega dentro de una pantalla, el cual no necesariamente responde al orden físico en dicha pantalla, para modificar esta propiedad simplemente selecciona del menu superior Format y luego la ultima opción Tab Order, o simplemente haciendo click en el icono correspondiente.
Me ha servido de gran utilidad tu ayuda. Muchas Gracias Voy a crear nueva pregunta para saber como generar datawindows dinámicos. Me seria de gran ayuda que la solucionases ya que tus respuestas son claras y concisas.
La solución es perfecta pero me queda una duda. Según tu ejemplo select nombre from empresas where empresa = :a_empresa Hay alguna forma de que la tabla a la que va a buscar sea una variable. En el ejemplo la tabla es empresas, podría ser el valor de una variable global :¿Tabla? Gracias anticipadas
Según tu ejemplo me lo muestra todo pero aparece como solo lectura el dw. Con que instrucción puedo añadir nuevas filas al DW. He probado con InsertRow y funciona pero no se edita el campo. Gracias
El datawindow tiene la capacidad de seleccionar datos en función de parámetros o argumentos, los cuales son recibidos directamente de la función retrieve() o en su defecto dentro de una ventana de dialogo, en donde escribes directamente los valores que solicita dicha selección. La forma es muy simple. Cuando generes tu datawindow, ve a la parte del script o sea del sql, en principio, mostrara una ventana la cual posee en tipo gráfico todos los campos seleccionados de la o las tablas que forman tu select, te recomiendo que vuelvas dicho script en texto, esto lo haces seleccionando en el menu superior, Design --> Convert to Sintax, y esto vuelve todo a tipo texto, (personalmente lo veo más accesible), luego hay que definir los parámetros de selección. Selecciona en el menu superior, otra vez Design --> Retrieve Arguments, esto te abre otra pantalla de dialogo en donde defines el nombre del argumento y el tipo, el cual luego puedes incluir en tu select en la parte del where anteponiendo a este dos puntos : Ej. select nombre from empresas where empresa = :a_empresa Como vereas esto define un select con una condición de búsqueda, y presenta todos los datos que cumplan con las condiciones incluidas, lo cual es mucho más rapido que crear un filtro, (en lo personal soy alérgico a los filtros.), una vez finalizada la definición de los argumentos e incluidos dentro del select, regresas a la definición de la ventana, y grabas. Ahora en el datawindow control, cuando ejecutas el retrieve() si lo haces sin argumentos te presentará la ventana de dialogo en donde solicitara integres los valores correspondientes a los argumentos que definiste, si no necesitas que dicha ventana se presente, simplemente colocas en la función retrieve() los argumentos. Ej. dw_1.retrieve('001') Y los datos presentados corresponden a los que cumplen las condiciones puestas en el where