• Sábado 20 de Abril de 2024, 10:36

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - leoandres

Páginas: [1] 2 3 4
1
Power Builder / Re: Es Power Builder Orientado A Objetos
« en: Lunes 26 de Marzo de 2007, 15:55 »
Por si tienen dudas sobre el tema vean esto:
http://www.sybase.com/detail?id=47604
Saludos...

2
Power Builder / Re: Problemas En Reporte
« en: Martes 27 de Febrero de 2007, 20:02 »
Disculpa... el select...

Select descripcion into sl_descripcion from tabla where codigo=:a_codigo

3
Power Builder / Re: Problemas En Reporte
« en: Martes 27 de Febrero de 2007, 20:00 »
Saludos desde Maracay, Venezuela...

El "IF" es un condicional de cierto o falso y lo que va a hacer dependiendo del resultado... no puedes mezclar un dddw con un IF... te recomiendo que utilices una función para poder ubicar el nombre que corresponda para colocarlo...

por ejemplo defines la funcion "f_busca_nombre" con el parametro " a_codigo...

que sería mas o menos así...

string sl_descripcion

Select descripcion into sl_descripcion from tabla where codigo=a_codigo

Return (sl_descripcion)

Y tu IF sería así...

if( cod_resultado ="01" or cod_resultado ="10" , f_busca_nombre(cod_espe_ing) , cod_especialidad )

Espero que te sirva...

4
Power Builder / Re: Salto De Pagina
« en: Sábado 10 de Febrero de 2007, 15:01 »
Saludos desde Maracay, Venezuela.

Debes crear el formulario con el manejador de formularios de las impresoras, donde defines el largo y el ancho (en caso de ser necesario) y luego asignas el nombre del formulario como tipo de página usada para impresión, el PB por defecto te pone el tipo carta o A4 que son bastante parecidos en cuanto a longitud y ancho.

Lo malo es que tienes que crear el formulario en cada máquina que lo vayas a usar y también en la máquina de desarrollo para que lo puedas asignar.

Espero que te sirva...

5
Power Builder / Re: Retrive
« en: Viernes 12 de Enero de 2007, 14:36 »
Saludos...

Todavía no comprendo bien que es lo que hiciste, pero tengo idea de que necesitas trabajar con los datawindowchild, donde la columna que te maneja los dos argumentos la defines como child y le haces un retrieve a ese child... ver el manual de PB referentes a datawindowchild...

6
Power Builder / Re: Retrive
« en: Jueves 11 de Enero de 2007, 18:26 »
Saludos...
No entiendo muy bien tu problema ni que llamas 'dw adjuntado' por lo que asumo es que tienes un primer dw con un parámetro y otro con dos parámetros, al recorrer el primero quieres que dinámicamente haga el retrieve del segundo?... entonces debes trabajar con el evento 'RowFocuschanged!' del primer dw... si ese dw (el primero) te va a dar el segundo parámetro lo tomas para hacer el retrieve sobre el segundo... ej...

dw_1.retrieve(parametro1)

en el evento 'rowfocuschanged!' del dw_1 pones esto...

If dw_1.RowCount() > 0 THEN
dw_2.retrieve(parametro1,this.getitemstring(this.getRow(),'columna_x'))
end if

En este caso asumimos que la columna_x es de tipo string y cuando avanzas en el row del dw_1 entonces te hace el retrieve con el parametro que le pasaste al dw_1 + el valor de la columna_x de ese dw_1....
si vas a tomar dos(2) columnas del dw_1 para el retrieve entonces...
en el evento 'rowfocuschanged!' del dw_1 pones esto...

If dw_1.RowCount() > 0 THEN
dw_2.retrieve(this.getitemstring(this.getRow(),'columna_x'),this.getitemstring(this.getRow(),'columna_y'))
end if

y así sucesivamente...

7
Power Builder / Re: Es Power Builder Orientado A Objetos
« en: Sábado 6 de Enero de 2007, 21:02 »
Saludos...

Para que te quede claro...

El PowerScript es un pseudolenguaje derivado de c para poder programar los eventos de cada objeto que tu creas o definas en la aplicación, así mismo puedes crear nuevos objetos directamente con Powerscript, por ejemplo instancias de accesso a la BD, etc...
Para que leas un poco desde la misma documentación de PB...

Description

PowerBuilder 6.0 has several new objects that provide information about an object's class definition and its variables and scripts.
A class definition object is a PowerBuilder object that provides information about the class definition of another PowerBuilder object. You can examine a class definition in a PowerBuilder library or the class definition associated with an instantiated object.

Uses

Class definition information is important for developers of tools and object frameworks. Developers can inspect objects to produce reports or to define objects with similar characteristics. Class information is not important in typical business applications.

Implementation

These new objects provide class definition information:

Object   Description
TypeDefinition   Provides information about a data type and is the ancestor of several more specific definition objects: ClassDefinition, SimpleTypeDefinition, and EnumerationDefinition
ClassDefinition   Provides the object's class name, library, ancestor, parent, variables, scripts, and the objects it contains
SimpleTypeDefinition   Provides information about a simple data type, such as integer, string, blob, and Any
EnumerationDefinition   Provides information about an enumerated data type
VariableDefinition   Provides information about a variable or property associated with a class definition, including its access level, scope, and whether it is an array
ScriptDefinition   Provides information about a function or event script associated with a class definition, including its arguments and return type, whether it is external, and whether it is defined locally or in an ancestor object
Other objects and enumerated data types provide values for properties of these objects.
Several new properties and functions give you access to definition information for your objects:

·   PowerObject has a new property called ClassDefinition, making a ClassDefinition object available for any instantiated object
·   New global functions called FindTypeDefinition and FindClassDefinition get a type or class definition object for an entry in a PowerBuilder library
·   New global function FindFunctionDefinition gets script information for a global function

8
Power Builder / Re: Capturar Carpetas, No Archivos
« en: Martes 12 de Diciembre de 2006, 14:47 »
Saludos...

Si!,  hay que tomar para el ciclo la variable file_name que contiene la ruta y el nombre del archivo, en la variable archivo solo esta el nombre del archivo sin la ruta...

9
Power Builder / Re: Capturar Carpetas, No Archivos
« en: Domingo 10 de Diciembre de 2006, 16:19 »
... sobre la respuesta que mandaron mientras yo daba mi solución...

En la versión que yo trabajo (6.5) no existe la función "GETFOLDER", debe haber aparecido en úna versión más reciente...

10
Power Builder / Re: Capturar Carpetas, No Archivos
« en: Domingo 10 de Diciembre de 2006, 16:15 »
Saludos...

Hace un tiempo vi un tip que armaba la estructura del arbol de directorios(carpetas) del disco duro en un TreeView, no lo consigo ahora, pero por el momento te doy una solución...
que el usuario tome cualquier archivo de esa carpeta y en la variable que recibes el nombre del archivo determinas donde se encuentra ubicado dicho archivo buscando en reversa el backslash (\) y cortas esa variable hasta esa posición...
Te doy el ejemplo:

integer value
string archivo, carpeta
value = GetFileOpenName("Seleccione Archivo",+ file_name, archivo, "DOC",  + "Text Files (*.TXT),*.TXT,"+ "Doc Files (*.DOC),*.DOC" )

// Ya tenemos el nombre del archivo seleccionado en la variable archivo...
IF len(archivo) > 0 THEN
value=len(archivo)
DO while mid(archivo,value,1) <> "\"
value --
LOOP
carpeta=left(archivo,value)
ELSE
MessageBox('Error!','No seleccionó archivo!')
END IF

...

Espero que te sirva...
Prueba...

11
PostgreSQL / Sobre Triggers Update
« en: Jueves 7 de Diciembre de 2006, 17:56 »
Saludos. Si alguien me aclara.

Puedo escribir triggers que se activen solo cuando se actualiza cierta columna de la tabla  (UPDATE OF columna), pongo un ejemplo de T-SQL:

/*  AFTER UPDATE TRIGGER "TUA_MTO_ITEM_SOL_CHEQUE" FOR TABLE "SOLICITUD_CHEQUE_DETALLE"  */

CREATE TRIGGER TUA_MTO_ITEM_SOL_CHEQUE AFTER UPDATE OF MONTO1_CUENTA_EGRESO, MONTO2_CUENTA_EGRESO
ORDER 1 ON SOLICITUD_CHEQUE_DETALLE

REFERENCING NEW AS NUEVO OLD AS ANTERIOR FOR EACH ROW
BEGIN

UPDATE SOLICITUD_CHEQUE SET MONTO_SOLICITUD_CHEQUE = MONTO_SOLICITUD_CHEQUE +
                                                    (NUEVO.MONTO1_CUENTA_EGRESO + NUEVO.MONTO2_CUENTA_EGRESO) -
                                                    (ANTERIOR.MONTO1_CUENTA_EGRESO + ANTERIOR.MONTO2_CUENTA_EGRESO)
WHERE FACULTAD=NUEVO.FACULTAD AND
      DEPENDENCIA=NUEVO.DEPENDENCIA AND
      NUMERO_SOLICITUD_CHEQUE=NUEVO.NUMERO_SOLICITUD_CHEQUE

END

12
PostgreSQL / Error En Instaación
« en: Sábado 2 de Diciembre de 2006, 19:02 »
Saludos.
Trato de instalar Postgresql 8.1 en plataforma w'2000 y me aparece esto al finalizar la instalación:

Internal account lokup failure. No se ha efectuado ninguna asignación entre los nombres de cuenta y los identificadores de seguridad.
--> el instalador reversa la instalación.

En el log de instalación se graba esto...
 
=== Logging stopped: 02/12/2006  13:50:31 ===
MSI © (E8:70) [13:50:31:539]: Note: 1: 1708
MSI © (E8:70) [13:50:31:539]: Note: 1: 2205 2:  3: Error
MSI © (E8:70) [13:50:31:539]: Note: 1: 2228 2:  3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1708
MSI © (E8:70) [13:50:31:539]: Note: 1: 2205 2:  3: Error
MSI © (E8:70) [13:50:31:539]: Note: 1: 2228 2:  3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1709
MSI © (E8:70) [13:50:31:539]: Product: PostgreSQL 8.1 -- Installation failed.

MSI © (E8:70) [13:50:31:589]: Grabbed execution mutex.
MSI © (E8:70) [13:50:31:589]: Cleaning up uninstalled install packages, if any exist
MSI © (E8:70) [13:50:31:589]: MainEngineThread is returning 1603
=== Verbose logging stopped: 02/12/2006  13:50:31 ===


Gracias.

13
Power Builder / Re: Procedimientos Almacenados
« en: Viernes 1 de Diciembre de 2006, 19:15 »
Saludos...

Me podrías colocar como estas asignando los parámetros e invocando el procedimiento a ver si te puedo ayudar (como lo tienes programado)...

14
Power Builder / Re: Generar Un Exe
« en: Martes 28 de Noviembre de 2006, 13:41 »
Saludos.

PB es una aplicación que corre solo bajo windows. Si lo que quieres es una aplicación que corra bajo DOS, PB no es la herramienta.

15
Power Builder / Re: ¿ Como puedo conectar directamente a una BD de SQL Anywa
« en: Sábado 25 de Noviembre de 2006, 19:05 »
Ver: Manual de SQL Anywhere "Using an Integrated Login"...



The integrated login feature allows you to maintain a single user ID and password for both database connections and operating system and/or network logins. This section describes the integrated login feature.

Operating systems supported

Integrated login capabilities are available for the Windows NT server only. It is possible for Windows 95 clients as well as Windows NT clients to use integrated logins to connect to a network server running on Windows NT.

Benefits of an integrated login

An integrated login is a mapping from one or more Windows NT user profiles to an existing user in a database. A user who has successfully navigated the security for that user profile and logged in to their machine can connect to a database without providing an additional user ID or password.
To accomplish this, the database must be enabled to use integrated logins and a mapping must have been granted between the user profile used to log in to the machine and/or network, and a database user.

Using an integrated login is more convenient for the user and permits a single security system for database and network security. Its advantages include:

·   When connecting to a database using an integrated login, the user does not need to enter a user ID or password.
·   If you use an integrated login, the user authentication is done by the operating system, not the database: a single system is used for database security and machine or network security.
·   Multiple user profiles can be mapped to a single database user ID.
·   The name and password used to login to the Windows NT machine do not have to match the database user ID and password.

Caution  
Integrated logins offer the convenience of a single security system but there are important security implications which database administrators should be familiar with.

17
Power Builder / Re: TUTORIAL POWER BUILDER
« en: Sábado 25 de Noviembre de 2006, 14:12 »
Saludos...

El mejor manual de PowerBuilder viene en los libros de la Aplicación

El capítulo se llama "GETTING STARTED" está en ingles... en español no creo que alguno (excepto por algún que otro tema) valga la pena, con mis disculpas a los autores (en general evito los libros de computación en español).

Te recomiendo que si lo vas a aprender con este manual te aisles por una semana y hagas todo el entrenamiento completo sin interrupciones y a lo mejor te da tiempo de repetirlo... es la mejor manera ya que si dejas un dia o dos sin continuar el proceso de aprendizaje no vas a saber como continuar el curso y lo vas a tener que empezar de nuevo (a menos que tengas conocimientos de programación orientada a objetos para que puedas ubicarte en el curso), te lo digo porque me pasó a mí.

Este libro te lleva paso a paso desde crear una ventana inicial con un simple texto a desplegar hasta procesos sobre bases de datos, herencia, etc.

18
Power Builder / Re: Generar Numeros Aleatorios De Un Valor Min A Un Ma
« en: Viernes 24 de Noviembre de 2006, 23:20 »
Disculpa...

ej:

integer il_numero

il_numero=rand(1000)

Te genera un numero entre 1 y 1000

19
Power Builder / Re: Generar Numeros Aleatorios De Un Valor Min A Un Ma
« en: Viernes 24 de Noviembre de 2006, 23:19 »
Saludos..

Documentación de PB.... lee primero...

Description

Obtains a random whole number between 1 and a specified upper limit.

Syntax

Rand ( n )
Argument   Description
n    The upper limit of the range of random numbers you want returned. The lower limit is always 1. The upper limit is 32,767
Return value
A numeric data type, the data type of n. Returns a random whole number between 1 and n inclusive. If n is NULL, Rand returns NULL.
Usage
The sequence of numbers generated by repeated calls to the Rand function is a pseudorandom sequence. You can control whether the sequence is different each time your application runs by calling the Randomize function to initialize the random number generator.


ej:

integer il_numero

il_numero=ran(1000)

Te genera un numero entre 1 y 1000

también...

Description

Initializes the random number generator so that the Rand function begins a new series of pseudorandom numbers.

Syntax

Randomize ( n )
Argument   Description
n    The starting value (seed) for the random number generator. When n is 0, PowerBuilder takes the seed from the system clock and begins a nonrepeatable sequence. A nonzero number generates a different but repeatable sequence for each seed value. n cannot exceed 32,767
Return value
Integer. If n is NULL, Randomize returns NULL. The return value is never used.
Usage
The sequence of numbers generated by repeated calls to the Rand function is a computer-generated pseudorandom sequence. You can use the Randomize function to initialize the random number generator with a value from the system clock, or some other changing value, so that the sequence is always different. For testing purposes, you can select a specific seed value, which you can reuse to make the pseudorandom sequence repeatable each time you run the application.

Include Randomize in the script for the Open event in the application.

20
Power Builder / Re: Aplicación Cliente - Servidor
« en: Viernes 24 de Noviembre de 2006, 23:14 »
Saludos...

Creo que debieras manejar los controles de tiempo en la base de datos,. donde en una tabla esté identificada la máquina y la hora de cierre, y la aplicación cada minuto chequea que se le haya vencido el tiempo a la máquina desde donde corre la aplicación ... si la hora de cierre es menor a la hora de la máquina se abriría una ventana que ocupe toda la pantalla bloqueando al usuario...

Solución facil de implementar...

21
Power Builder / Re: Exe Via Batch Con Power Builder
« en: Miércoles 22 de Noviembre de 2006, 22:09 »
Saludos...

Por favor explicate mejor que es lo que quieres hacer... de que ejecutable hablas???? Cual es la función de eso??? En PB se genera el ejecutable al "compilar" (en realidad se hace una conversión a "C" y luego se compila el programa en "C"), y se genera la aplicación y yá...

22
Power Builder / Re: Confusion
« en: Miércoles 22 de Noviembre de 2006, 21:58 »
Saludos...

No sé en realidad como elaboraste la tabla de las series que me dices que se te duplica, pero si se te duplica es porque tienes otra relación que te duplica a la tabla principal (que supongo que será la de productos) es decir en vez de un registro principal de producto relacionado a la tabla de series habría en este caso dos... revisa las relaciones entre tablas del DW para ver si ese es el problema.

Lo de la tabla temporal lo puedes hacer a través de programación PB o a través de un procedure de BD que manejaría las series con un cursor y un ciclo de proceso para actualizar la tabla "temporal" de la que hablo, no sé que nivel de diseño y programación de BD tienes para hacerlo con un procedure así como la BD que usas...
 
Te recomiendo que revises bien las relaciones que tienes ahora para ver porqué se te duplican las series...

23
Power Builder / Re: Confusion
« en: Martes 21 de Noviembre de 2006, 20:19 »
Saludos...

Ya comprendo tu idea.
El problema es que quieres mezclar un datawindow NUp (columnar) con niveles de grupo, no sé cual es la versión que utilizas en PB pero yo uso la 6.5 y no tiene esa opción de agrupar en un dw NUp.

La única forma que veo es que crearas una tabla temporal con N columnas de series (columnas de producto y por ej. 4 columnas que serían: serie_a, serie_b, serie_c y serie_d) y con las series (que sería el valor de cada columna armar los datos, luego la relacionas con la tabla de productos para que te imprima como encabezado de grupo el producto y como detalle los valores de la tabla temporal que son las series...

24
Power Builder / Re: Confusion
« en: Lunes 20 de Noviembre de 2006, 20:22 »
Saludos...
Disculpa pero entendí realmente muy poco de todo lo que escribiste, creo de lo que entendí, es que cuando haces la busqueda de datos la data que llega al DW es de varias series, y necesitas que solamente llegue la serie que corresponde. ¿es eso lo que planteas?, si ese es el caso lo que tienes que hacer es una búsqueda por la serie que te interesa poniendo un argumento de busqueda para la serie, es decir que el SQL filtre la serie que te interesa... para hacer esto debes definir el argumento en la parte de diseño del DW de esta manera: tocas el botón SQL y entras en el diagrama de las tablas y sus relaciones, entonces en el menú de diseño (Design) seleccionas 'Retrieval Arguments', ahí defines el argumento con un nombre (ej. a_serie) y el tipo (integer, long, string,etc) que le corresponda, luego vas a la tableta 'WHERE? del sql y colocas la columna que te identifica la serie en la columna del medio pones '=' (que es el valor por defecto) y en la columna de la derecha pones el argumento (sería :a_serie para el ejemplo) o tocas con el botón derecho, seleccionas argumentos y seleccionas el que hayas definido y guardas (sales del SQL y salvas)... luego para hacer la búsqueda en el programa le vas a poner al retrieve entre los paréntesis el nombre de una variable que contenga el valor de la serie que va a buscar el DW, ej.
long ll_serie
ll_serie=... (el valor que corresponda)
dw_1.retrieve(ll_serie)

disculpa si no es esto lo que tu deseas, pero es lo que entendí de tu explicación...

25
Power Builder / Re: Uso De Archivos *.ini
« en: Martes 14 de Noviembre de 2006, 14:51 »
Saludos...

Yo lo hago así porque instalo la aplicación en el servidor en una carpeta compartida de solo lectura, entonces compilo y coloco los cambios en un solo sitio desde donde accesan las estaciones de trabajo a la aplicación... son metodologías que cada quien tiene... de paso con acceso remoto no tengo que ir al sitio sino que actualizo desde donde estoy o envío los cambios por mail al administrador.

Páginas: [1] 2 3 4