PREGUNTAS CONTESTADAS - Power Builder

 Hay un total de 432 Preguntas.<<  >> 

    Pregunta:  45866 - CREAR BACKUPS DE LA BD
Autor:  Coco Cuenca
Quisiera saber como hacer que mi aplicación hecha en PB genere backups de la bd a la que se conecta. Y que puedan ser almacenados en un disquete o en una determinada carpeta.

Gracias de antemano.
  Respuesta:  Oxido social
Que tal Coco!!!

Primero tienes que establecer de que BD se trata, en la gran mayoria de BD respetables manejan tablas de sistema, dentro de este conjunto tienes una que se llama comunmente systables, donde esta el nombre de tus tablas y necesitaremos otra que se llama syscolumns, donde esta el nombre de cada columna.

Bueno, partamos de esta tabla para hacer un rastreo de todas las tablas.
Crea un DW con systables y otro con syscolumns, y este ultimo que reciba el ID de la tabla. Por ejemplo:
dw_tabla (SELECT tabid, tabname FROM systables)
dw_Col (SELECT ColName FROM SysColumns WHERE Tabid = :Param_TabId)
Crea un tercer DW sin datawindowobject
dw_sql

1) Conecta
2) haz un retrieve al de tablas
3) Aplicas un for al dw_de tablas y por cada registro aplicar un retrieve al de columnas.
4) Realizas un recorrido del dw_de columnas para obtener una cadena con todas las columnas de la tabla.
5) Por cada obtencion del listado de columnas vas a formar un sql que se va a crear un DW dinamico sobre del tercer DW (dw_sql)
6) Conectas el DW y realizas el retrieve
7) Luego aplicas la funcion SAVEAS y listo.

NOTAS:
1) Te va a servir si nadie esta actualizando la informacion.
2) Puedes usar datastore en vez de DW, pero no puedes ver la informacion mientrsa realizas tus pruebas.

Pero es una buena manera para realizar la tareas de resplado automaticas o programadas desde una aplicacion, claro que es un ejemplo con las validaciones minimas necesarias.

Este seria tu codigo en un boton, o donde creas conveniente para que sea disparado.

Recibe un saludo y espero que te sirva esta breve explicacion.

Saludos desde Guadalajara, Mexico.

// Variables
LONG ll_Ren
STRING new_syntax
STRING error_syntaxfromSQL
STRING error_create

dw_tabla.Retrieve ()
FOR ll_Ren = 1 TO dw_tabla.RowCount ()
ls_TabName = dw_tabla.GetItemString (ll_ren, 'tabname');
ll_Tabid = dw_Tabla.GetItemNumber (ll_Ren, 'Tabid');

dw_Col.Retrieve (ll_TabId)
ls_ListaCol = ''
FOR ll_RenCol = 1 to dw_Col.RowCount ()
ls_ColName = dw_Col.GetItemString (ll_RenCol, 'ColName')
IF (ls_ListaCol = '') THEN
ls_ListaCol = ls_ColName
ELSE
ls_ListaCol = ls_ListaCol + ', ' + ls_ColName
END IF
NEXT

ls_SQL = 'SELECT ' + ls_listaCol + ' FROM ' + ls_TabName;
new_syntax = SQLCA.SyntaxFromSQL (ls_sql, 'Style(Type=Grid)', error_syntaxfromSQL)
IF Len(error_syntaxfromSQL) > 0 THEN
MessageBox ('Error', 'Error al crear la sindaxis del dw');
RETURN
END IF

// Generate new DataWindow
dw_sql.Create (new_syntax, error_create)
IF Len (error_create) > 0 THEN
MessageBox ('Error', 'Error al crear el dw');
RETURN
END IF
dw_sql.SetTransObject(SQLCA)
dw_sq.Retrieve()

    Pregunta:  45998 - BUSCAR ENTRE 2 FECHAS EN UN DATAWINDOWS
Autor:  Fernando Miller Diaz Tafur
Hola como estan si alguien me puede ayudar cual es el codigo para buscar entre 2 fechas en un datawindows trabaje con argumentos y no me sale trate y trate pero nada bueno si alguien me puede ayudar les agredeceria muchisismo ....estoy trabajando en power builder 7.0 ...Gracias
  Respuesta:  eduardo suarez
crea dos argumentos 1 llamdao fecha1 de tipo date y el otro con fecha2 de tipo date. despues donde haces el filtro busca en la data el campo fecha y le dices que es >=fecha1(argumento 1) and que fecha es<= fecha2(argumento) refrescas el datawindows y te debe aparecer.... o al menos asi funciona en power builder 9.0

    Pregunta:  46178 - CAMPOS NULOS EN UN DATAWINDOWS
Autor:  Arturo Lazarte Vilcamango
Que tal, quisiera por favor que alguien me ayude con una duda.
Tengo en un Datawindows, campos nulos que quisiera que al momento de guardar el registro, si esta nulo me salga un mensaje que diga que debo llenar ese campo. lo intente con este script pero me sale un error de sintaxis. Como podria hacerlo?
En la estructura de la tabla esta el codigo como NULL=YES
Gracias

iF dw_1.object.codigo[dw_4.getrow()] = is null then
messagebox("Error","Ingrese un codigo",Exclamation!)
return
end if
  Respuesta:  Karen Rivera
iF isnull(dw_1.object.codigo[dw_4.getrow()]) then
messagebox("Error","Ingrese un codigo",Exclamation!)
return
end if

    Pregunta:  46182 - COMO OBTENER LA FECHA DE UNA CARPETA
Autor:  Fernando Lopez
Buenos días,

Por favor necesito colaboracion para saber cual es la fecha de modificacion o de creacion de una carpeta (Directorio).

Se que con un listBox puedo obtener una lista de directorios, pero ademas necesito saber cual fue la fecha de creacion de estos.

PD: utilizo Windows 2000

Muchas gracias.
  Respuesta:  MIlton Reyes
NO es muy tecnico pero puede servir, has un comand dos,("DIR") en un bat que te grabe la informacion requerida, luego este archivo lo importas a una data windows y accedes a el ya sea por posiciones ("MID") o en campos que definas en la datawidnows.

    Pregunta:  46331 - CONTADOR DE IMPRESIONES DE CADA USUARIO
Autor:  Edward Zambrano
Saludos cordiales, necesito poder desarrollar un contador de impresiones para controlar el volumen de impresion de cada usuario. Tengo usuarios winXP y win2000 y las carpetas C:\WINDOWS\System32\spool\PRINTERS, o bien en C:\WINNT\System32\spool\PRINTERS estan vacías. alguien puede indicarme cómo puedo desarrollar algo así en power builder para poder colocarlo en memoria residente y me lleve el contador por cada usuario. Tengo impresoras de red pero el contador de ellas es general y necesito saber el volumen por cada usuario.

Quedo agradecido por sus comentarios
  Respuesta:  Oxido social
Mi experiencia en este tema es limitado, pero creo que estas equivocando el lenguaje, utiliza otra cosa, Power esta hecho para aplicaciones con BD, creo que una solucion seria cambiar el lenguaje a Delphi o ya de perdis VB.

Saludos.

    Pregunta:  46384 - CODIGOS DE ESCAPE
Autor:  Cesar Almeyda
URGENTE!!!Hola Amigos estoy trabajando en power y con la intencion de hacer la impresion mas veloz estoy imprimiendo un data window directo en modo DOS
y no consigo hacer que este realize un salto de pagina si alguien tiene una idea o los codigos de escape para una epson fx2180 le estaria muy agradecido
Saludos

string ls_depto
li_archivo = FileOpen("LPT1",LineMode!,Write!)
if li_archivo = -1 then
messagebox("Error","No se pudo abrir el puerto lpt1")
else
li_j = dw_1.rowcount()
Filewrite(li_archivo," REPORTE DE PRE-MATRICULA ")
Filewrite(li_archivo," ASIGNATURA ")
Filewrite(li_archivo,"-------------------------")
for li_i = 1 to li_j
ls_depto = Mid(Dw_1.object.nom_curso[li_i]
FileWrite(li_archivo,ls_depto)
next
Filewrite(li_archivo," CREDITOS AUTORIZADOS: [ ]")
FileClose(li_archivo)
end if

COMO CONSIGO UN SALTO DE PAGINA
  Respuesta:  Luis Macias
Hola!!!

Mira, esto lo resolvimos solo enviandole el caracter directo a la impresora, como es DOS no necesitas mas nada.

FileWrite (li_archivo,ls_depto)
// Esto escribio una linea en la impresora.

FileWrite(li_archivo,char (9))
// Esto escribe un tabulador en la impresora

FileWrite(li_archivo,char (12))
// Esto hace un salto de pagina.

Revisa el codigo 12 ya que no estoy seguro si es este... el 9 es tabulador, el siete emite un pitido la impresora... si no mal recuerdo el simbolo que ves al darle un type al archivo sera como una cruz egipcia.

Si no encuentras el codigo escribeme para revisar unos libritos arcaicos que tengo por ahi.

Saludos.

    Pregunta:  46508 - IMPORTAR ARCHIVOS DE TEXTO DE ANCHO FIJO A UN DATAWINDOWS
Autor:  Edwin Arteaga Chavez
Hola, por favor alguien me podrìa dechir como importar archivos de texto de ancho fijo a un datawindows...gracias
  Respuesta:  Luis Macias
Buenas!!!

Existen dos maneras:

1) El codigo mas sencillo a implementar (para mi gusto por la posibilidad de jugar con los datos) es abriendo un archivo (FILEOPEN) y dandole lectura secuencial (FILEREAD), luego obtienes cada columna de tu archivo "partiendo" el renglon leido en cada columna fija
ls_col1 = MID (ls_renglon, 1, 20)
ls_col2 = MID (ls_renglon, 21, 20)
ls_col3 = MID (ls_renglon, 41, 20)

Asi para cada columna que involucre un renglon.

Luego insertas en tu DW
ll_ren = dw.InsertRow (0)

Para terminar metiendo los datos en el renglon insertado.

dw.SetItem (ll_ren, 'col1', ls_col1)
dw.SetItem (ll_ren, 'col2', ls_col2)
dw.SetItem (ll_ren, 'col3', ls_col3)

Y listo.
esto obvio es metiendole codigo a patin a un evento que va a ser el encargado de realizar la lectura.

2) Utilizando el metodo ImportFile del datawindow

dw.ImportFile
que recibe 6 parametros:
a) Archivo: Nombre y ruta del archivo a importar
b) Renglon de inicio: A partir de que renglon del archivo comenzara a leer (default 1).
c) Renglon de fin: Hasta que renglon del archivo leera (default fin de archivo)
d) Inicio columna: A partir de que columna en tu archivo comenzara la importacion (default 1)
e) Fin columna: Hasta que columna realizara la importacion (el default es el numero de columnas del archivo).
f) Inicio columna dw: A partir de que columna en el DW metera la informacion.

Cabe aclarar que este metodo yo casi nunca lo utilizo dado que no es tan versatil para realizar el manejo de la informacion. Tambien ten en cuenta que solo puedes leer archivos TXT separado por tabuladores y (creo) BDF!

Saludos!

    Pregunta:  46783 - COMO ENVIO MENSAJES DE TEXTO A CELULARES? DESDE POWER BUILDE
Autor:  CARLOS VALDIVIA MARTINEZ
NECESITO ME AYUDEN A CREAR UNA APLICACION EN POWER BUILDER QUE SEA CAPAZ DE ENVIAR MENSAJES DE TEXTO A CELULARES EJM [email protected] (esta es una direccion de correo de un NEXTEL para mandar mensajes) por favor sean muy detallosos ya que no domino mucho en power builder. gracias
  Respuesta:  JUAN OSWALDO VILLAZON LUNA
Mira los mensajes de texto a celular no lo podrase nviar desde codigo PB. pero el servidor de Sql Server si lo puede hacer.

Lo que tienes que hacer es informarte en el manual de SQL server, esta la funcion para hacerlo es muy sencilla y hay un ejemplo para que te guies. lo que tienes que hacer es un procemiento almacenado el cual haga esta tarea segun tu proveedor ya que los codigos de envio son privados.

Existen paginas la cuales te brindan algunos codigos hackeados.

Yo ya he realizado uno proyecto de esa manera pero solo para celulares de la ciudad de chiclayo - Peru y la verdad que si quieres el script no te va salir tan facil ya que este tiene precio. Pero te doy la pauta para que te informes del tema. Recuerda que si tu realizas el procedimiento almacenado lo podras ejecutar desde la plataforma que desees.

Me despido esperando te halla servido mi aporte.

Ing. Juan Oswaldo Villazón Luna

    Pregunta:  46864 - CONEXION DESDE PB A ANYWHERE 7 DESDE MAS DE 1 MAQ A LA VEZ
Autor:  Pablo Nan
Como estan, mi nombre es pablo soy de Uruguay y estoy desarrollando una aplicacion personal en PB 7.0, estoy usando como base de datos la misma que viene con el PB Adaptative Server Anywhere 7(esta viene con el PB8.0) , me conecto todo bien desde una maq, pero si quiero conectarme desde otra cuando ya estoy accediendo a la base desde otra maq no me deja, como que no acepta mas de una conexion a la base de datos de maq diferentes, porque desde una maq puedo abrir varios exe de la aplicacion sin problemas, les agradeceria si me pueden ayudar en esto

desde ya muchas gracias
  Respuesta:  Luis Castro
Si estás usando la versión que viene con el PB, esa es para un usuario solamente.
Evalúa usar PostgreSQL 8.0. o Mysql 4

Esas bases de datos son multiusuarios y gratis
y puedes conectarte sólo si PB70 no es Desktop

saludos

    Pregunta:  46928 - COMO CONTROLAR COMBINACIONES DE TECLAS
Autor:  Gonzalo Mauro
Hola
Necesito saber como puedo hacer para controlar combinaciones de teclas, por ejemplo, detectar alt + f4 para que no me cierren la pantalla de la aplicación o alt + space para que no se despliegue el menu.

Gracias por la información
  Respuesta:  Rosa
Hola Gonzalo.

Tienes dos opciones:

1. Programando el evento key(), SystemKey() o KeyDown() -para DW - y controlando las teclas que desees.
2. Creandote un evento cualquiera con el Event ID 'pbm_dwnkey' o 'pbm_keydown' - para DW -

Un ejemplo de control de las teclas 'Ctrl + Shift + E' sería el siguiente:

if keyflags = 3 and key = KeyE! then
.........
end if

keyflags controla las teclas Alt, Ctrl y Shift.
key las restantes

En la ayuda puedes ver los posibles valores de la key (keyCode) que se le pasa a les eventos de tipo KeyDown.

|<  <<  22 23 24 25 26 27 28 29 30 31 32  >>  >|