PREGUNTAS CONTESTADAS - Power Builder

 Hay un total de 432 Preguntas.<<  >> 

    Pregunta:  49939 - LEVANTAR POWERBUILDER DESDE UNA PORTAL WEB
Autor:  javier santiago
hola gente quisiera que me instruyan, como debo hacer para levantar un ejecutable en powerbuilder haciendo click desde un vinculo de un portal web o pagina web ambos en una misma computadora.
  Respuesta:  Rodrigo Reinoso
Javier, la respuesta:
<HTML>
<HEAD>
<SCRIPT type="text/javascript" LANGUAGE="JavaScript">
function executeCommands(command,parms)
{
var oShell = new ActiveXObject("Shell.Application");
oShell.ShellExecute(command, parms,"", "open", "1");
}
</SCRIPT>
</HEAD>
<BODY>
<a href="#1" target="_self" onclick="executeCommands('C:\directorioxx uprograma.EXE','"D:\work\archivoentrada.txt"')">pulse aqui para ejecutar programa pb xx </a>
</BODY>
</HTML>
Por esta asesoria cobramos pero estas de suerte hoy ja ja.

    Pregunta:  49955 - EJECUTAR UN STRING COMO UN OBJETO
Autor:  sergio jauregui ponce
como podria ejcutar un string como un objeto , lo necesito para realizar permisos a los punto de menu por usuario, lo que he hecho es poner los puntos de menu en una tabla , para despuer jalarlos y ejecutarlos
eje:
ls_cadena = m_menu.m_b.m_logistica.m_proveedor
ls_cadena.enabled = false
m_menu.m_b.m_logistica.m_proveedor.enabled = false
//ejecutar esta cadena segun el usuario
  Respuesta:  Juan Copara Francia
que tal lo que intentas hacer para los permisos de usuario es correcto, pero no de esa forma ps; vamos por partes para que me entiendas:

1) esta bien que hayas creado una tablita donde almacenes los ptos del menu, ahora a esa tabla agregale 2,3 o 4 campos mas dependiendo del nivel del menu que quieras proteger. si tuvieras un menu de este tipo:
Archivo Mantenimiento Reportes
Articulos Compras Registro de Compras
Marcas Ventas Registro de Ventas
aqui tienes un nivel de menu 2, entonces a tu tabla le agregarias los campos item1 numeric(3,0) y item2 numeric(3,0) y ademas un campito flag char(1)
tu tabla quedaria de este modo: Tabla_menu
menu_nom item1 item2 flag usuario
articulos 1 1 * usu1
marcas 1 2 * usu1
compras 2 1 & usu1
ventas 2 2 & usu1
y asi sucesivamanete todas las opciones de tu menu
* quiere decir que el usuario esta permitido
& el usuario no tiene los permisos

2) ahora una vez creada tu tabla de menu_usuarios en el open de tu ventana mdi puedes crearte un evento o una funcion segun te convenga mas para que haga la validacion de los permisos del usuario que ingresa:

int it1,it2
select item1,item2 into: it1,:it2 from tabla_menu_usuarios where usuario=:usuario_actual and flag='&'
este select sera para capturar unicamente los items donde el usuario no temga permiso, claro tu lo harias con un cursor para verificar toda la tabla

3) ahora en la variable it1 y it2 tienes almacenado los items del menu donde el usuario no tiene permiso y para desactivar los items del menu lo harias de esta forma:

w_mdi.menuid.item[it1].item[it2].enabled = false

desactivara los items de tu menu asociado a tu ventana mdi;

ahora si tienes mas niveles en el menu todio es cuestion de que añadas los items que necesites a tu tabla

espero haber sido claro. Saludos

    Pregunta:  50072 - PROCESOS EJECUTANDOSE CUANDO ERROR DE APLICACIóN
Autor:  ELKIN ANDRES OSPINA
Buenos dias:

Estoy desarrollando en PB 10.2.1 build 9004 y tengo un problema el cual consiste en que cuando el sistema tiene un error de aplicación, por seguridad, el sistema se sale de su ejecución, pero me esta dejando activos los ejecutables (.exe). Es decir, si entro a la aplicación 10 veces y 10 veces sale el error, me deja 10 procesos abiertos ejecutandose en background.
  Respuesta:  Luis Macias
En el codigo donde sale de la aplicacion ademas de cerrar la ventana principal de la aplicacion utiliza el HALT en vez del RETURN.

Ejemplo:

CLOSE (w_Principal)
HALT

Con esto el exe se muere por completo.

    Pregunta:  50218 - GRABAR DESDE UN DW A DBF
Autor:  Ricardo Rosales Rua
A quien me pueda ayudar..

Tengo una BD dbc y las tablas dbf. estoy programando con Power 7.0, tendo una conexion DNS a esta base dbc puedo ver la informaciòn, y hago reportes, pero no puedo modificar los datos, es decir si inserto un registro o borro me sale un mensaje "Does not have Update capability" e intentado modificando el data window y aún asi no lo he conseguido..
alguien quien podrìa ayudarme se lo agradecería.

gracias.
  Respuesta:  hugh
lo que se necesita en este caso es lo siguiente es modificar la opcion en el menu rows
wn la parte que dice udpdate properties
  Respuesta:  fernando p
a lo mejor es que despues de diseñado el datawindow procedio a modificarlo con la inclusion o exclusion de una columna y por eso le cambia las propiedades de actualizacion. verifique la opcion de update properties del datawindow en modo de diseño. es lo unico que se me ocurre.

    Pregunta:  50246 - PROBLEMAS CON FIREBIRD
Autor:  Cristian sp
En realidad estoy aprendiendo a manejar esta base de datos; pero tengo el problema que cuando realizado una datawindows y realizo n un click en algun campo del datawindows me arroja de power builder..... estoy trabajando con power builder 9.0 me actualize al 9.03 y los datos del campoto timestamp se leen YYYY-MM-DD, y yo deseo que se muestren de acuerdo a la configuración regional ..... ayudenme profavor que lo necesito urgente
  Respuesta:  julio cesar Mendivil Urquizo
Mira yo tambien estoy trabajando con firebird desde hace casi un año, trabajo con power 8.0; tenia el mismo problema q mencionas, pero lo solucionamos bajando el ultimo parche para power builder, en estos momentos no tengo la direccion, pero te recomiendo q naveges y busques el ultimo parche. Suerte

    Pregunta:  50504 - CREAR PAQUETE DE INSTALACION
Autor:  edgardo balboa
Hola amigos, soy novato en esto he leido algo por aqui, pero quisiera saber exctamente cuales son los archivos necesarios para crear el paquete de instalacion de una aplicacion bastante sencilla que realicé con POWER BUILDER 6.5 - L misma consta de un exe, un PBR, una dll , una db y un lo, nada mas. Pero me aconsejaron usar el SETUP GENERATOR para crear el paquete que archivos, runtime, dlls, ocx, nosé son necesarios para que esto ande? la base de datos la hice con sql aniwere, como copio el motor de la db?? Gracias, si pueden ayudarme por favor.
  Respuesta:  Fernando Peralta
Bueno, los archivos necesarios los podemos dividir en librerias de power builder y librerias del motor de base de datos. por lo general estas las encuentra en la misma maquina en donde se encuentra instalado Power Builder y el motor de base de datos, solo deberia buscarlos.

Las librerias necesarias de power builder son:
Para evitar instalar PB en el cliente, debes copiar las dlls a ese equipo (puedes incluirla en la misma carpeta donde está tu ejecutable o en el System de Windows). Estas dlls se hallan en la carpeta: C:\Archivos de programa\Sybase\Shared\PowerBuilder, y son:

pbvm80.dll (PowerBuilder virtual machine)
pbdwe80.dll (para DWs y DataStores)
pbodb80.dll (conexión mediante ODBC)
pbodb80.ini (su complemento ODBC)
libjcc.dll (la verdad no sé)
pbmss80.dll ( para el driver nativo de sql)

las librerias necesarias para el motor de base de datos son:
dbeng7.exe
dbsrv7.exe
scjview.exe
dbctrs7.dll
dblgen7.dll
dbodbc7.dll
dbserv7.dll
scjlgen.dll

En el nombre de las librerias anteriores va un (7) ese numero puede cambiar de acuerdo a la version del motor de base de datos que emplee, en mi caso utilizo la 7

Tal vez no requiera todas las librerias que mencioné, pero no son pesadas, puede hacer pruebas y eliminar algunas.

Lo mas probable es que despues de hacer la instalacion de la aplicacion tenga problemas de conexion con la base de datos, debe configurar el dns de usuario. si tiene problemas para configurarlo me escribe a mi cuenta de correo [email protected] y con gusto le ayudare.

en todo caso por favor me informa si le fue util mi ayuda... a mi correo. Gracias

    Pregunta:  50528 - BLOQUEO DE REGISTROS
Autor:  Milton Reyes
Amigos necesito que me ayuden, tengo un aplicativo que trabaja en red cuando los usuarios no ingresan al mismo formulario ( pantalla ) funciona correctamente, pero si por algun motivo lo hacen el aplicativo se queda colgado hasta que el otro computador salga del mismo, mi aplicativo es un punto de venta es decir tienen que ingresar simultaneamente a la pantalla de facturacion y tienen que actualziar los datos del cliente. ahi el problema
trabajo con power 9.0 y sql anywhere 8.0
gracias muchas gracias
  Respuesta:  Marco Chamorro
Tienes que revisar en la programación, si los commit y los rollback están después de cada actualizació de la base (updates)
  Respuesta:  Milton Reyes
Gracias por la ayuda, les comento lo que realmente a sucedido, si tengo un commit luego de las funciones dw_update(), insert, update el problema se da cuando se define un objecto tipo transaccion para la conexion con la base de datos, este debe ser referenciado en la funcion de actualizacion a la base es decir en los commit, yo asumia que se referenciaba directamente pero no ha sido asi es necesario ponerlo, así que si alguien le pasa lo mismo ya saben.
de todas maneras gracias por contestar.
  Respuesta:  Fernando Peralta
El bloqueo se puede generar por varias razones:

La primera puede ser que esta dejando alguna transaccion abierta. es importante que despues de un update, delete o insert verifique si la transaccion fue exitosa de ser asi haga commit, de lo contrario rollback. esa es una de las causa comunes de bloqueo

La segunda es a nivel de la cadena de conexion, podria ponerle en el objeto transaccion lo siguiente SQLCA.LOCK = 'RU'

Por favor pruebe lo anterior. si sigue fallando escribame a mi correo [email protected] y miramos otras posibilidades.

Me cuenta al mismo correo si le funciona. Gracias.

    Pregunta:  50553 - BLOQUEO DE REGISTROS
Autor:  Milton Reyes
Amigos, necesito saber como puedo desbloquear un registro en power builder, trabajo con sqlAnywhere 8.0
mi problema surge en una aplicacion de puntos de venta cuando dos maquinas ingresan a la misma pantalla (facturacion) y una de las maquinas modifica algo (cliente o el secuencial de factura) el registro se queda bloqueado hasta que la maquina salga del sistema, entonces la maquina dos funciona.
He leido sobre el tema y me dicen que para evitar inconsistencias en la base es el bloqueo. No se como solucionar el problema debido a que es indispensable que lo solucione y poder trabajar en red.
Gracias por las sugerencias
MR.
  Respuesta:  Milton Reyes
la respuesta a esta pregunta esta en la pregunta 50528, se debe hacer un commit a todas las transacciones de modificacion de registros siempre referenciando a al objeto transaccion de conexion a la base de datos
commit using gtr_nombre ;

    Pregunta:  50667 - POWER BUILDER 7.0 - MENU
Autor:  Loreto Vargas Allende
Hola! Sres., necesito saber cómo puedo asignar un nombre a un menú pero a través de código y no en diseño.

Esto para habilitar o deshabilitar el menú conforme al perfil que posea el usuario que se conecte a la aplicación.

Gracias
  Respuesta:  NN
Buenas

Seria crear un objeto treview, y a este agregarle los menus dinamicamente de acuerdo al usuario.

buena tarde
  Respuesta:  carlos martin
Hola Loreto, no se pueden asignar nombres a los menus de forma dinamica, pero lo que si se puede es habilitar o deshabilitar por medio de los identificadores de los menus, te explico con un ejemplo:

Esto es una función que deshabilita opciones de menu de forma dinamica, llamandose así misma de forma recursiva, cuando una opción de menu tiene subopciones:

Llamamos a esta función pasando por referencia la opción de menu que queremos deshabilitar.

// pvm_menu es un argumento de la función de tipo menu y pasado
// por referencia.

Nombre de la función f_desabilitar_menu

// definición de variables
menu lm_menu
integer li_item , li_for

// deshabilitamos la opción del menu recibida
pvm_menu.enabled = false
pvm_menu.toolbaritemvisible = false

// comprobamos si la opción recibida tiene subopciones
if UpperBound(pvm_menu.item[]) > 0 then

// número de subopciones de la opción recibida
li_item = UpperBound(pvm_menu.item[])

// bucle para deshabilitar cada una de estas opciones
for li_for = 1 to li_item

// guardamos la opción de menu en una variable de tipo
// menu
lm_menu = pvm_menu.item[li_for]

// Llamamos a la misma función con la opción de menu
// que hemos guardado en la variable.
f_desabilitar_menu(lm_menu)

next
end if
return 1

//========

Espero que te sirva, si tienes alguna duda, no dudes en enviarme un correo.

    Pregunta:  50767 - CAPTURAR Y MANIPULAR VIDEO DE WEB CAM EN PB
Autor:  Christian Barrios Tolosa
Que tal jovenes,

Quisiera saber si alguien ha podido capturar y manipular video de una web cam en power builder. Es para una aplicacion que estoy haciendo en mi empresa y necesito obtener el video de una camara y capturar la fotografia del empleado al momento del ingreso al establecimiento.

La camara es conenectada por USB. Si alguno tiene la respuesta le agradecere muchisimo.
  Respuesta:  Alejandro Gomez
Cristian , como estas, sabes existe una funcion api para capturar imagenes, yo lo he intentado pero no he logrado aun que guarde las imagenes .

//Local external functions.
function ulong capCreateCaptureWindowA(string lpszWindowName,ulong dwStyle,long li_x ,long li_y ,long nWidth ,long nHeight ,ulong ParentWin ,long nId ) LIBRARY 'AVICAP32.DLL'

//Instance Variables
Uint lhand
Constant long GET_FRAME = 1084
Constant long COPY = 1054
Constant long WM_USER = 1024
Constant long WM_CAP_START = WM_USER
Constant long WM_CAP_STOP = WM_CAP_START + 68
Constant long WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10
Constant long WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11
Constant long WM_CAP_SAVEDIB = WM_CAP_START + 25
Constant long WM_CAP_GRAB_FRAME = WM_CAP_START + 60
Constant long WM_CAP_SEQUENCE = WM_CAP_START + 62
Constant long WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20
Constant long WM_CAP_SEQUENCE_NOFILE =WM_CAP_START+ 63
Constant long WM_CAP_SET_OVERLAY =WM_CAP_START+ 51
Constant long WM_CAP_SET_PREVIEW =WM_CAP_START+ 50
Constant long WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START +6
Constant long WM_CAP_SET_CALLBACK_ERROR=WM_CAP_START +2
Constant long WM_CAP_SET_CALLBACK_STATUSA= WM_CAP_START +3
Constant long WM_CAP_SET_CALLBACK_FRAME= WM_CAP_START +5
Constant long WM_CAP_SET_SCALE=WM_CAP_START+ 53
Constant long WM_CAP_SET_PREVIEWRATE=WM_CAP_START+ 52

Long wm_cap_savedatdib = 1049
Long wm_cap_dlg_videoformat = 1065
Long wm_cap_dlg_videosource = 1066
Long wm_cap_dlg_videodisplay = 1067
Long wm_cap_get_videoformat = 1068
Long wm_cap_set_videoformat = 1069
Long wm_cap_dlg_videocompression = 1070
Long cf_bitmap = 2
Long wm_close = 16
Ulong scrcopy = 32
string gs_pic_path
string gs_cd_path
string gs_path
string gs_ds_pic
string gs_ds_cd
string gs_cd_rq
long gl_pic_sj = 0

//boton iniciar camara
string lpszName
ulong l1
l1=handle(parent)

lpszName='webcam.'
lhand=capCreateCaptureWindowA(lpszName,262144+12582912+1073741824 + 268435456 ,10,10,200,200,l1,0)
if lhand <> 0 then
send(lhand, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, 0)
send(lhand, WM_CAP_SET_CALLBACK_ERROR, 0, 0)
send(lhand, WM_CAP_SET_CALLBACK_STATUSA, 0, 0)

send(lhand, WM_CAP_DRIVER_CONNECT, 0, 0)
send(lhand, WM_CAP_SET_SCALE, 1, 0)
send(lhand,WM_CAP_GRAB_FRAME, 0, 0)
Send(lhand, WM_CAP_SAVEDIB, 0, 0)
send(lhand, WM_CAP_SET_PREVIEWRATE, 66, 0)
send(lhand, WM_CAP_SET_OVERLAY, 1, 0)
send(lhand, WM_CAP_SET_PREVIEW, 1, 0)
end if

//boton grabar imagen
string s_map
s_map='c:save.bmp'
if FileExists(s_map) then FileDelete(s_map)
if lhand <> 0 then

Send(lhand,WM_CAP_FILE_SET_CAPTURE_FILEA,0,s_map);
p_2.visible = true
st_1.visible = false
p_1.picturename = s_map
SendMessage(lhand, WM_CAP_DRIVER_DISCONNECT, 0, 0)
lhand =0
this.enabled = false
cb_1.enabled = true
end if

//boton captura video
string s
s='c:save.avi'
if lhand <>0 then
Send(lhand,WM_CAP_FILE_SET_CAPTURE_FILEA,0, s);
Send(lhand,WM_CAP_SEQUENCE, 0, 0)
end if

ojala te sirva de algo...podrias enviarme tu correo para discutir del tema.
saludos

|<  <<  26 27 28 29 30 31 32 33 34 35 36  >>  >|