PREGUNTAS CONTESTADAS - Power Builder

 Hay un total de 432 Preguntas.<<  >> 

    Pregunta:  63995 - LIMPIAR APLICACIÓN POWER BUILDER DE OBJETOS NO UTILIZADOS
Autor:  Leonardo Orellana
Limpiar Aplicación Power Builder
He recibido una aplicación Power Builde la cual está bastante desordenada, donde encuentro una gran cantidad de objetos que no tienen ninguna funcionalidad, como dw_prueba y objetos no utilizados. Esta aplicación es bastante grande y la pregunta es: ¿Cómo puedo saber cuáles son los objetos que realmente se están ocupando sin tener que recorrerla entera?, ¿existe alguna herramienta que liste solo los objetos que son usados por la aplicación?
Gracias..!!!
  Respuesta:  Leopoldo Taylhardat
En las herramientas "Advance developer Toolkit" hay una herramienta que te haces el CrossReference de todos los objetos de la aplicación.

    Pregunta:  64100 - CONECTADOS A SYBASE SQL ANYWHERE
Autor:  Dario Conde
Buenas,
Alguien podría indicarme cómo puedo obtener desde PB 6.5 que máquinas están conectadas a la base de datos? Sin ser modelo Cliente-Servidor, la aplicación está compartida en la red y distintos usuarios acceden a ella, entonces, quisiera saber quiénes están conectados.

Muchas gracias!!!
  Respuesta:  Marcelo Guglielmini
No es lo más sofisticado, pero si armas una tabla que cuando entra al sistema graba usuario, estación de trabajo y todo lo que necesites y cuando sale lo borra o le pone que salio a tal hora ya está. incluso podes armar el log de actividad por usuario aplicación y/o función.

    Pregunta:  64202 - GENERAR SELLO DIGITAL
Autor:  jose guerra
buenas estoy tratando de generar el sello digital con la dll de cryptosys
haber si alguien me puede ayudar en que estoy mal.

Primero con la RSA_ReadEncPrivateKeys saco en un string la llave del archivo .key

luego a la cadena original la convierto en utf8
strutp =blob( ls_cadena_original, EncodingUTF8!)

luego creo un bloque de mensaje codificado con la cadena
nlen = RSA_EncodeMsg(abblock,nblocklen, strutp, mLen,32+1)

luego mezclo el bloque con el string de la llave
RSA_RawPrivate(abblock, nBlockLen, ls_Privkey, 0)

luego la convierto a base 64
CNV_B64StrFromBytes(ls_sello, nB64Len, abblock, nlen)

esos son mis pasos me peuden decir porque no me la genera bien
me rellena un pedaso con AAAAAAAAAAAAAA.
aqui esta el sello.

gGr68VEPlG2H4XG4ddUoTnoqU2T4JCWEYwbMfPePoTELn+8TBogWGwgbGRshVa+3rkWShGLSesg1xEPY8mbURwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=

si alguien me podria ayudar seria demasiado amable
gracias ya casi me doy porvencido.
  Respuesta:  Sergio Flores
Estoy tratando de utilizar este mismo codigo, pero me aparece un error al tratar de correr el RSA_EncodeMsg, alguna sugerencia?
  Respuesta:  David Duran Valdes
Espero que sirva
ll_keyprivada= RSA_ReadEncPrivateKeys (ls_aux,0, as_filellave,ls_pass, 0) 

IF ll_keyprivada > 0 THEN
ls_keyprivada=Fill ( " ", ll_keyprivada )
//Encriptacion de cadena_original con llave privada
lb_info=blob(as_cadena_original,EncodingUTF8!)
ll_len_info = len(lb_info)

RSA_ReadEncPrivateKeys (ls_keyprivada,ll_keyprivada, as_filellave,ls_pass, 0)
ll_len_bloque = RSA_KeyBytes(ls_keyprivada)
//Creo bloque de mensaje codificado
ll_tamanio = RSA_EncodeMsg(lb_bloque, ll_len_bloque, lb_info, ll_len_info, 32 + 1)
//Combinacion del bloque con el string de la llave
RSA_RawPrivate(lb_bloque, ll_len_bloque, ls_keyprivada, 0)

//Conversion a base64
ll_tamanio = len(lb_bloque)
nB64Len = CNV_B64StrFromBytes(ls_sello, 0, lb_bloque, ll_tamanio)
ls_Sello = fill(" ",nB64Len)
CNV_B64StrFromBytes(ls_sello, nB64Len, lb_bloque, ll_tamanio)
END IF

    Pregunta:  64287 - PROCESOS CALGADOS EN EL SQLSERVER AL EJECUTAR UN SP DESDE PB
Autor:  Oscar Castillo
Primero que nada gracias a las personas que toman el tiempo de leer mi duda, la intencion es lo que cuenta, mi duda es la siguiente, tengo una aplicacion hecha en PB 7 que se conecta a la BD hecha en SQL server 2005, esta aplicacion genera 2 archivos de texto utlizando la herramienta BCP del SQL server, los genero por medio de un SP que mando llamar desde mi aplicacion, cuando ejecuto el SP desde manager del SQL tarda algo de tiempo pero genera los archivos, el problema viene cuando ejecuto el SP desde mi aplicacion de PB, ya que la aplicacion se queda trabada y para colmo me cuelga el proceso en el servidor trabando todo mi SQL, e estado investigando pero no encuentro nada en concreto que me pueda ayudar, no se si me haga falta alguna actualizacion o algun parche para el PB, o tenga que habilitar alguna opcion en el PB o en el SQL para la ejecucion del SP, les agradeceria mucho si alguien me pudiera ayudar o dar alguna pista!, muchas gracias!
  Respuesta:  Eduardo Fernandez
Existen 2 formas de solucionar este problema, la primera es cambiando el metodo de conección de powerbuilder (ReadCommited, readuncommited), esto implica recompilar toda la aplicacion.

La segunda es que utilizes el NOLOCK en tus sentencias de SQL

Por ejemplo, si dice select * from tabla , deberías colocarlo select * from tabla with (nolock),

de esta forma no dejas que el servidor se bloquee.

Utiliza NOLOCK para los select, ROWLOCK para los update y delete

- Select * from tabla with (nolock)
- UPDATE tabla with (nolock) SET valor = 1
- DELETE FROM tabla with (rowlock) WHERE...

    Pregunta:  64916 - CAMBIOS EN LA CONFIGURACIÓN REGIONAL
Autor:  Azucena
Hola,
necesito cambiar el separador decimal, el separador de miles y el formato de fecha de la configuración regional. Utilizo el siguiente código:
Registryset( "HKEY_CURRENT_USERControl PanelInternational","sDecimal",RegString!,",")
Registryset( "HKEY_CURRENT_USERControl PanelInternational","sMonDecimalSep",RegString!,",")
Registryset( "HKEY_CURRENT_USERControl PanelInternational","sThousand",RegString!,".")
Registryset( "HKEY_CURRENT_USERControl PanelInternational","sMonThousandSep",RegString!,".")
Registryset( "HKEY_CURRENT_USERControl PanelInternational","sShortDate",RegString!,'dd/MM/yyyy')

Los valores se cambian en el registro de Windows y se ven en la ventana de configuración regional, pero no se aplican los cambios, no son efectivos hasta que entramos en el Panel de control-> Configuración Regional y aplicamos los cambios realizados.
¿Hay alguna forma de confirmar estos cambios desde código?, es decir emular el botón aplicar de la configuración regional.

Muchas gracias
Un saludo
  Respuesta:  Azucena
Hola,
Gracias por tu respuesta.
Ya encontré la solución: después del Registryset, se ejecuta la función SendMessageA y se aplican los cambios.

Muchas gracias de nuevo
Un saludo
  Respuesta:  Hamilton OC
Estimada, amiga azucena, debes tener en cuenta que si tu power ya se conecto a la base de datos cuando realizas estos cambios, tendrias que reiniciar tu sistema, deberias probar realizando primero estos cambios antes que nada y luego recien haces conexion con tu servidor
Bye!

    Pregunta:  65057 - COMO BLOQUEAR UNA TABLA EN SQL SERVER 2000
Autor:  MANUEL PAREDES
Hola amigos, tengo un inconveniente en una aplicación desarrollada para ser utiliza dentro un ambiente de trabajo multiterminal, es decir varios puntos de venta y punto de facturacón. Pues la clave de la tabla VENTA es autogenerada por codificación (SQL incrustado) y a lavez guardado por cada venta que se inicia, pero una venta puede ser iniciada en tiempos simultaneos desde distinta computadora terminal de la misma red, y es alli en donde sucede el PROBELMA, el cual consiste en que dos o mas terminales obtienen como numero ID para la CLAVE de la VENTA el mismo valor, generando así una CLAVE DUPLICADA cuando la segunda venta es guardada.
Mi pregunta es: como puedo bloquear la tabla VENTA mientras, se autogenera la CLAVE y a vez GUARDO registro en la tabla venta, y de esta forma evitar que la segunda, tercera o mas terminales obtengan el mismo numero valor para el ID de dicha tabla VENTA?
Cabe indicar que este problema sucede muy poco pero sucede y eso quita la calidad a cualquier sistema.
  Respuesta:  Moises orellana
mira yo trabajo con sistemas de ventas y lo que yo hago es tener una funcion folio esta funcion solo entrega numeros de folios como respuesta sumando + 1 y lo guarda automaticamente, esta es una forma la otra es haciendo un timestamp, cuando una terminal solicita folio esta adquiere un numero de id y guarda solo la hora en un campo especifico de la tabla y lo guarda en memoria la fechahora, cuando llega la segunda terminal esta tambien solicita numero de id y tambien actualiza el campo de timestamp y lo guarda en memoria la fechahora, porteriormente cuando vas a grabar la venta vuelves a verificar el timestamp para ver si la hora cambio, si cambio vuelves a solicitar numero de id si no solo grabas. de esta forma siempre tendras un id valido.
espero que estas ideas te sirvan, por lo menos yo no he tenido problemas.
atte
Moises Orellana O.

    Pregunta:  65058 - EJECUTAR UNA SOLA VEZ UNA APLICACION POWER BUILDER
Autor:  ROBERTO PAREDES
Hola, espero que puedan responder a mi pregunta.
Como puedo controlar que una aplicación desarrollada en Power Builder se ejecute por única vez en un computador con S.O. windows. Es decir que pueda ser ejecutado una sola vez.
Les agradesco por anticipado. Y envienme sus dudas talves pueda yo tambien ayudarles.
  Respuesta:  Adolfo Chairez
//Insertas esta funcion en la seccion Declare - Global external functions
PRIVATE FUNCTION Long FindWindow (String lpClassName, String lpWindowName) Library "user32" Alias For "FindWindowA;Ansi"

//y luego este es código para ver si tu aplicació ya esta corriendo
String ls_NullString, ls_titulo
//la variable ls_titulo contiene el titulo de la window, es decir la property Title de la Window principal o la que siempre se esta presente
SetNull (ls_NullString)
ll_hWnd = FindWindow(ls_nullString, ls_titulo)
if ll_hWnd <> 0 then
Messagebox("StartUP","La aplicación "+ ls_titulo +" ya esta ejecutandose",StopSign!)
Halt Close
end if

Visita mi blog:

http://powerbuilderesp.blogspot.com

    Pregunta:  65220 - ENVIO DE .TXT POR MODEM
Autor:  Alex M
Hola! Hice una aplicacion en la que al final del dia exporta datos de la base a un .txt y lo tendria que enviar via modem a otra pc donde se corre una otra aplicacion que va a importar esos datos del txt para llevar un control de stock. Lo no se hacer es la parte de comunicacion por modem desde powerbuilder 10

lei esta respuesta en el foro pero no entiendo bien que hace.

string command
command='rundll rnaui.dll,RnaDial TuConexion' // Distingue entre mayúsculas y minúsculas.
Run(command)

en la pc que recibe que debo poner para preparar la transferencia del txt?
Agradeceria la info ya que ando medio perdido

Saludos y gracias
  Respuesta:  Adolfo Chairez
Lo que debe hacer es una aplicación utilizando el component mscomm nativo de windos (yo lo tengo) y programar la apertura del puerto seri yo te puedo pasar el codigo fuente si aun lo necesitas.

Visita mi blog para mas información: http://powerbuilderesp.blogspot.com

y si quieres puedes hacer click sobre mis sponsors

    Pregunta:  66007 - OBTENER IDENTITY AL INSERTAR REGISTRO EN UN DW EN PB 12.5
Autor:  Erick Morales
Hola a todos.

Tengo una aplicación que corre sin problemas en PB 9.02. En ella, inserrto un registro con un datawindow y recupero el identity sin problema. En este datawindow, siempre, sólo se inserta un registro a la vez. El código es el siguiente:

ll_codigo = dw_casos.Update(true,false)
ll_codigo <> 1 then
RollBack;
else
Commit;
ll_folio = dw_casos.GetItemNumber(1, "sop_id")
end if

El caso es que al migrarlo a PB 12, la obtención del identity ya no funciona, La columna identity es sop_id. Ya intente regenerando, exportando e importando,cambiando las

banderas del update, también, colocando en una varable el valor del registro que devuelve el InsertRow(0) y nada. El registro si se inserta en la tabla, pero no logro que el DW me

devuelva el identity. No creo que sea cuestión de mi código, pues en PB 9, al insertar el registro, visualmente, como usuario, puedo ver el valor debido a que la columna de sop_id

está visible en la ventana. Hice una prueba desde el ambiente de diseño (painter) del DW, ejecuto directamente el DW para insertar el registro y tampoco coloca nada en la columna del identity. En PB 9 si lo hace también en el painter.

Utilizo :
MS SQl Server 2000 (no lo puedo cambiar por que mi cliente no puede migrar al 2008)
PB 12. Build 6807

Nota: Probé usando la versión express R2 del SQL 2008 con el painter del DW y tampoco se puede.

Espero puedan ayudarme.

Saludos y gracias de antemano.

Erick.
  Respuesta:  Gabriel MAnilla
si no mal recuerdo el IDENTITY es parecido a un AUTOINCREMENT no es asi!

ya intentaste cacharlo como string, recuerda q el scop de las variables puede varias de una versión a otra posiblemente

no creo que sea error de la DW ya que esta te recupera el dato tal cual de BD, el problema esta en que la forma como lo estar tu sacando de la DW esta fuera de rango, y es que no dices que error te marca o que valor te da.

checate esa forma y posiblemente funcione!

    Pregunta:  66198 - INCREMENTO DE TAMAÑO EN 2 VARCHAR DE POWERBUILDER 9
Autor:  Luis Campaña
Tengo un pequeño sistema con 2 tablas (PowerBuilder 9), trabajaba bien, hasta que en una de ellas incremente 2 campos Varchar de (250) a (500), y ahora cada que hago consultas y/o ingreso datos se desconecta de la Base de Datos y se cierra el Sistema. Gracias por su ayuda.
  Respuesta:  Leopoldo Taylhardat
Tienes que modificar los datawindows para que manejen la modificación de las columnas...

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