PREGUNTAS CONTESTADAS - Power Builder

 Hay un total de 432 Preguntas.<<  >> 

    Pregunta:  60250 - EJECUCION DE UN EXE DESDE POWER BUILDER
Autor:  Leila Gamonal
Hola a todos,
quisiera que alguien me ayude con la ejecucion de un ejecutable(.exe) desde power builder. He utilizado la funcion externa shellexecute() de esta manera:

1. Primero declare la funcion como externa asi:
FUNCTION long ShellExecute (uint ihwnd, string lpszOp, string lpszFile, string lpszParams, string lpszDir, int wShowCmd ) LIBRARY "Shell32.dll"
2. Utilizo la siguiente sentencia para ejecutar el exe desde un boton en una ventana de PB, asi:
app = GetApplication()
long ll_ret
string ls_null
SetNull(ls_null)
ll_ret = ShellExecute(handle(app), ls_null, ""C:Windowssystem32calc.exe", ls_null, ls_null, 1 )

pero me muestra un mensaje de error, quisiera saber que me esta faltando. Si alguien podria ayudarme con esto.

Muchas gracias de antemano

Leila
  Respuesta:  Adolfo Chairez
Intenta con esto a mi me funciona:

Run("C:\Windows\system32\calc.exe", Normal!)

    Pregunta:  60643 - MOSTRAR DATOS EN UN DW CON UN SLE
Autor:  María Sánchez
Hola! Soy nueva en el uso de esta herramienta y quisiera saber cómo puedo mostrar datos en un datawindos mediante un sle, es decir debo mostrar algunos campos de tres tablas q ya tengo relacionadas de acuerdo a un parámetro de búsqueda q voy a introducir en el sle. Además tengo un botón "Buscar". Agradezco su ayuda!
  Respuesta:  Adolfo Chairez
Hola:
Creo entender que requieres recuperar información a tu DW en función del contenido de un SLE, si es así entonces deberas hacer 2 cosas:
1.- En el boton Buscar en el evento clicked teclear: dw_reporte.retrieve(sle_1.text)
2.- En la DW reporte deberas seleccionar un boton un icono como un libro llamado "Data Source" o bien seleccionando de la barra de menús la opción Design - Data Source, se abre otra ventana en esta selecciónar de la barra de menús Design - Retrieval Argumens y agregar el parámetro. Despues en la parte de abajo deberá aparecer la opción Where selecciona el campo y operador (igual, menor, mayor, etc) y el parámetro.

Espero te sirva.
puedes encontrarme en el messenger en [email protected]

    Pregunta:  60951 - DETENER UN EVENTRO CREADO POR USUARIO SIN PASAR A OTRO
Autor:  Cesar Vidarte
Hola buenas tardes con todos, estoy desarrollando en PB 10.5, para un proyecto pequeño estoy usando como base de datos Access, y tengo en un formulario un boton que es guardar, adicional a eso he creado dos eventos (ue_validar y ue_grabar) a los que llamo en el evento click de un botón

THIS.TriggerEvent("ue_validar") ;
THIS.TriggerEvent("ue_guardar")

Mi pregunta es como hacer para que cuando no se cumpla una condición del evento ue_validar el programa deje de ejecutar código, es decir haga una pequeña pausa.

Dentro del ue_validar, hago verificación de los campos, como por ejemplo esta parte del código. Pero cuando uso el return no para el programa, sino que ejecuta el siguiente evento que es ue_guardar

IF IsNull(is_nomb_lugar) = TRUE or Len(Trim(is_nomb_lugar)) = 0 THEN
Messagebox('Control de Errores','No ha Ingresado el nombre del Lugar')
tab_proceso.tabpage_detalle.dw_detalle.setfocus()
tab_proceso.tabpage_detalle.dw_detalle.setcolumn("nomb_lugar")
RETURN ;
END IF

¿Como hacer para que no se ejecute el siguiente evento al momento de dar clic en el boton guardar si es que en el primero no cumplio alguna condición?
  Respuesta:  Carlos Martin
Cuando se crean los eventos nuevos, debes poner en la definición del evento que retorne un valor de tipo integer en la opción "Return Type".

Cuando ejecutes la instrucción Return en el evento si todo va bien le pones "Return 1" si algo va mal le pones "Return -1", y cuando haces la llamada lo haces de la siguiente forma " li_return = THIS.TriggerEvent("ue_validar") ", de esta forma al salir del evento recibes el valor de 1 si tida va bien y -1 si hay un error.

Antes de hacer la llamada al segundo evento preguntas si li_return es 1 y en caso negativo no lanzas el segundo.

ejemplo:
integer li_return
li_return = THIS.TriggerEvent("ue_validar")
if li_return = 1 then
THIS.TriggerEvent("ue_guardar")
end if

    Pregunta:  61597 - GENERAR CODIGOS DE BARRA
Autor:  Percy Maco
Hola
Tengo un proyecto de un sistema informático a desarrollarse en Power Builder 10 para generar muchos documentos de suma importancia (tipo cargos de cobranza), los mismos q puedan ser consultados en cualquier momento sólo leyendo un código de barras.

La idea es generar el código y también poder leerlo para saber su estado situacional.

La pregunta es: ¿Cómo genero el código de barrar y cómo hago para poder leerlo con posterioridad?

Gracias de antemano.
  Respuesta:  Alonso Gomez
Percy.

Para que comprendas un poco, los codigos de barra son para imprimir un conjunto de caracteres predefinidos.

Para determinar dicho conjunto, existen variados formas de hacerlo, para tu caso pude ser numerico para poder identificar los tipos de cargos de cobranzas, es decir un numero correlativo al general el documento.

Y cuando requieras imprimir dicho numero, lo haces a traves de un FONTS especifico, que entre otro puede ser el c39hrp24dhtt.ttf, estos los puedes buscar en San Google como "fonts de codigos de barra" y dejarlo en la carpeta c:windowsfonts esto para Microsoft Windows, así también existen para otros sistemas operativos.

Ejemplo: Un campo del datawindow tiene el numero generado y lo asocias (en propiedades) al font antes mencionado en ves que sea un Arial y ya estara mostrando las famosas rayas del codigo de barra.

Para leerlos existen lectores de codigos de barra, que por cierto no son de bajo costo y tienen la utilidad de convertir a traves de su propio software las famosas rayas a caracteres entendibles, como si se digitara el numnero real.


Espero haber ayudado

    Pregunta:  61619 - COMO MODIFICAR UN DW COMPOSITE DENTRO DE OTRO DW COMPOSITE
Autor:  Gerardo Palza
Tengo un Objeto tipo COMPOSITE, dentro de éste tengo varios objetos datawindow, quisiera saber como puedo hacer para modificar una propiedad de uno de los dw que se encuentra dentro del composite, es decir cual seria la sintaxis para dicha modificacion.
Se que lo usual es dw_1.modify("datawindow.title='DEMo"), pero lo que nose es como es la sintaxis cuando se trata de objetos datawindow (ene ste caso vendriana ser report) dentro de un composite.
Es mas, para ser mas especifico dentro de un composite tengo un datawindow-label y quiero setear (en tiempo de ejecucion) una de las propiedades del dw-label, cuando hago el dw-label (directamente) en una ventana aparte si puedo setear la propiead que quiero. Pero cuando este se encuentra dentro de un composite nose cual es la sintaxis para llegar hasta la propiedad que quiero modificar dentro de ese dw-label contenido en un composite.
Espero haberme dejado entender.
De ante mano muchas gracias por la ayuda.
  Respuesta:  josué cedeño
http://www.rds.co.za/pbdatawindow05.htm

dw_control.Object.dw_ContenidoEnElCompuesto.Object.ControlEspecifico.Propiedad
Ej.: dw_vol_oper.Object.d_up.Object.t_3.text='MI TEXTO'

    Pregunta:  61620 - SCANEAR IMAGENES DESDE POWER BUILDER
Autor:  Gerardo Palza
Hola, experto de antemano gracias por tu respuesta. Mi pregunta es la siguiente: como puedo hacer para scanear una imagen desde power builder y que cuando scanee la imagen, esta se setee o pegue directamente sobre un objeto picture que tengo en mi formulario.
  Respuesta:  Nelson Agurto
Yo uso objetos externos (pegasus isis xpress) y trabajan perfectamente en powerbuilder, pero es pago.

    Pregunta:  61772 - COMO CREAR DW EN EJECUCION PERO A PARTIR DE UN STORE
Autor:  Roberto Karlo Salazar Pulache
Quiero mostrar un Reporte que crece tanto horizontal como vertical, he aqui porque uso un store.
ahora este Datawindow lo quiero crear en tiempo de ejecución con la opción dw.create(), pero no lo estoy logrando.
  Respuesta:  Cristian Aro Silva
a la opcion dw.create le debes pasar un string con la definicion de la misma.

el string debe ser algo asi, donde ls_procedimiento es el nombre del SP y V_RUT y V_ID_EMPRESA son los parametros de entrada del SP, de tipo String y numerico respectivamente :

ls_SQL_DW = 'release 9;' + char(13)+char(10)
ls_SQL_DW += 'datawindow(units=0 timer_interval=0 color=1073741824 processing=1 HTMLDW=no print.printername="" print.documentname="" print.orientation = 0 print.margin.left = 110 print.margin.right = 110 print.margin.top = 96 print.margin.bottom = 96 print.paper.source = 0 print.paper.size = 0 print.canusedefaultprinter=yes print.prompt=no print.buttons=no print.preview.buttons=no print.cliptext=no print.overrideprintjob=no print.collate=yes hidegrayline=no grid.lines=0 )' + char(13)+char(10)
ls_SQL_DW += 'header(height=72 color="536870912" )' + char(13)+char(10)
ls_SQL_DW += 'summary(height=0 color="536870912" )' + char(13)+char(10)
ls_SQL_DW += 'footer(height=0 color="536870912" )' + char(13)+char(10)
ls_SQL_DW += 'detail(height=84 color="536870912" )' + char(13)+char(10)
ls_SQL_DW += 'table(column=(type=number updatewhereclause=yes name=valor dbname="valor" )' + char(13)+char(10)
ls_SQL_DW += ' procedure="1 execute '+Upper(ls_procedimiento)+';0 V_RUT = :V_RUT, V_ID_EMPRESA = :V_ID_EMPRESA" arguments=(("V_RUT", string),("V_ID_EMPRESA", number)) )' + char(13)+char(10)
ls_SQL_DW += 'text(band=header alignment="2" text="0" border="0" color="33554432" x="9" y="8" height="56" width="274" html.valueishtml="0" name=compute_0001_t visible="1" font.face="Arial" font.height="-8" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" )' + char(13)+char(10)
ls_SQL_DW += 'column(band=detail id=1 alignment="1" tabsequence=32766 border="0" color="33554432" x="9" y="8" height="68" width="274" format="[general]" html.valueishtml="0" name=compute_0001 visible="1" edit.limit=0 edit.case=any edit.focusrectangle=no edit.autoselect=yes edit.autohscroll=yes edit.imemode=0 font.face="Arial" font.height="-8" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" )' + char(13)+char(10)
ls_SQL_DW += 'htmltable(border="1" )' + char(13)+char(10)
ls_SQL_DW += 'htmlgen(clientevents="1" clientvalidation="1" clientcomputedfields="1" clientformatting="0" clientscriptable="0" generatejavascript="1" encodeselflinkargs="1" netscapelayers="0" )' + char(13)+char(10)
ls_SQL_DW += 'export.xml(headgroups="1" includewhitespace="0" metadatatype=0 savemetadata=0 )' + char(13)+char(10)
ls_SQL_DW += 'import.xml()' + char(13)+char(10)
ls_SQL_DW += 'export.pdf(method=0 distill.custompostscript="0" xslfop.print="0" )' + char(13)+char(10)

    Pregunta:  61901 - ERROR AL EJECUTAR UN PROCEDURE DE MYSQL
Autor:  Patricio Toscanini
Hola, si alguíen me pudiera ayudar he intentado de varias formas y al final no consigo poder ejecutar ni un simple procedimiento almacenado en Mysql. Ya cambién versión a 5.1 trabajo con PB 9.0 y me sale

DECLARE prue PROCEDURE FOR sp_prueba ( 'arg1' ) ;
execute prue ;

SQLSTATE = 37000
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '{call sp_prueba( 'arg1'}' at line 1.

He probado con argunmentos, sin argumentos y el error es el mismo.

De antemano gracias.
  Respuesta:  Patricio Toscanini
integer li_edad
Después de mucho probar e investigar me encontré con esta solución y modificandola un poco logré ejecutar una función.

string ls_sql

ls_sql = "SELECT bd.fu_edad(param)"

DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA;

PREPARE SQLSA FROM :ls_sql;

OPEN DYNAMIC my_cursor;

FETCH my_cursor INTO :li_edad;

CLOSE my_cursor;

messagebox("",li_edad)
  Respuesta:  Patricio Toscanini
Después de seguir investigando llegué a la solución (por lo menos me funcionó)

integer li_edad

ls_sql = "SELECT dba.fu_actualiza()"

DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA;

PREPARE SQLSA FROM :ls_sql;

OPEN DYNAMIC my_cursor;

FETCH my_cursor INTO :li_edad;

CLOSE my_cursor;

    Pregunta:  61970 - PROBLEMA EN DATAWINDOW ODBC
Autor:  Freddy Arguera
El problema consiste en que en un datawindow list compartido, agrego una columna compute usando cualesquiera de estas sintaxis :

trim( primer_nombre ) + ' '+trim( segundo_nombre )+' '+trim ( primer_apellido )+' '+trim( segundo_apellido ) as name

o

if( isNull( primer_nombre ),'',primer_nombre ) + ' '+ if( isNull(segundo_nombre),'',segundo_nombre ) +' '+ if( isNull( primer_apellido ),'',primer_apellido ) + ' '+ if( isNull(segundo_apellido),'',segundo_apellido ) as name

en el source cuando retorna muestra el error de ODBC

sqlstate= 37000 trim is not a recognized function name
microsoft odbc sql server driver sql server

y si reviso las funciones disponibles para los compute solo me aparecen habilitadas AVG y sum ??????

estoy usando las PFC de la version 10.5, me parece que el error es del driver ODBC, pero si alguien se topo con algo parecido podria explicar como lo resolvio??

En la version 6.5 esa sintaxis no da problema.

De antemano muchisimas gracias!!!

Saludos desde El Salvador
  Respuesta:  Freddy Arguera
Resolví el asunto de la coneccion, era el driver ODBC.

Por si a alguien le pasa lo mismo... es mejor utilizar ADO que ODBC.

1.- Actualiza el netframework de microsoft al 2.0 por lo menos

2.- Aplica los parches de power builder 10.5 hasta dejarlo en la versión 10.5.2 build 7286.

3 - Utiliza una coneccion ADO microsoft ado.net,

+/- asi queda el perfil
// Profile
SQLCA.DBMS = "ADO.Net"
SQLCA.LogPass = <***>
SQLCA.LogId = "sa"
SQLCA.AutoCommit = False
SQLCA.DBParm = "Namespace='System.Data.SqlClient',DataSource='ip_del_server',Database='nombre_base',PROVIDERSTRING='database=nombre_base'"

Con eso se termina el problema.

Saludos!!

    Pregunta:  61972 - USANDO GETFILEOPENNAME NO PERMITA MODIFICAR ARCHIVOS
Autor:  GERMAN NINAQUISPE DIESTRA
Buenas Tardes señores programadores, yo tb soy programador, mi consulta es:
estoy usando la función GetFileOpenName en power builder, sé como funciona lo unico que no sé es como evitar que al abrir la ventana BROWSER, no me permita modificar ningun archivo que se visualiza. ejemplo: al tener la ventana abierta selecciona un archivo y puedes copiar, cortar y eliminar. yo solo quiero que cargue el archivo más no modificarlos. agradeceré mucho la ayuda
  Respuesta:  Marcelo Guglielmini
Desde PB no tenes como, lo único que se me ocurre es desde el Windows que estes usando, quitando posibilidades de modificar y eliminar.

|<  <<  34 35 36 37 38 39 40 41 42 43 44  >>  >|