Power Builder - Formatos de datos en DW

   
Vista:

Formatos de datos en DW

Publicado por ricardo (37 intervenciones) el 14/07/2009 23:52:24
Buen dia a todos en el foro tengo varias preguntas acerca de Power Builder, de antemano les digo que antes de hacer la pregnuta pues intento investigar por fuera pero enverdad no he podido con estos puntos, cabe anotar que estoy trabajando en una version 7.X

1. Como hago para que el cursor se posicione en una fila y columna de un datawindow especifico? esto lo debo hacer cuando haga el enter y me inserte una nueva (fila) linea, tengo entendido que hay una funcion de setcolumn.

2. Que valor le debo asignar a un campo en la propiedad de formatop para que cuanod sea nulo vea 0 cero) ? ( (el campo esnumerico)

3. La configuracion de mi equipo es de decimales con . (punto) y , (coma) para miles (Ej: 1,200.50); pero en el datawindow se ven de forma inversa (ej: 1.200,50), anoto que el formato que tengo es ###,###,###.## en la propiedad de formato, comom puedo cambiar esta notacion?

4. Cuando estoy hacienod un update a un DataWindow y tengo un campo numerico la cual le ingreso caracteres alfanumericos letras me dice lo sgte:

Item "ABCD" does not pass validation test

Como puedo hacer para que este mensaje no salga
y validar esto con palabras mas comprensibles al usuario final.

De ante mano muchas gracais por su colaboracion y por haberse tomado el tiempo de leer este correo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Formatos de datos en DW

Publicado por Marce (119 intervenciones) el 15/07/2009 23:11:23
Hola,
creo que algunas te puedo contestar.
1)Para posicionarse en una fila y columna es facil:
Columna:
dw_1.SetColumn("nombrecolumna") Ó
dw_1.SetColumn(1) //posiciona en columna 1. Para saber cual es la columna 1, abrí el datawindow, en la Vista Column Specifications (menu View/Column Specifications). Ahi te muestra el numero de orden de las columnas.

Fila:
dw_1.SetRow(1) //te posiciona en la fila 1. Ó
dw_1.SetRow(ll_row) //te posiciona en la fila ll_row

2)No sé si es lo que querés hacer, pero puede ser válido.
En la misma vista Column Specification del punto anterior, especificá como Initial Value en 0(cero).En un principio todo lo que sea nulo en esa columna te lo va a poner en cero. Si luego de una modificación se queda en nulo, ya es cosa que podes setear en el código, como por ejemplo con un SetItem.

3)Tuve ese problema una vez, y cambié la cofiguración regional de la PC y listo.
(Panel de Control/Configuracion regional y de idioma)

4)La verdad que no sé. Pero quizas hay algo por aca en el foro.

Saludos argentinos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Formatos de datos en DW

Publicado por Ricardo (37 intervenciones) el 16/07/2009 14:37:50
Hola Marce, muchas gracias por tu tiempo.

Te cuento lo sgte:

1)El primero me fiunciona pero resutla que yo utilizo el insertrow en un evento que se llama ue_tecla y este evento

evento ue_tecla even id pbm_dwnkey

if KeyDown(KeyEnter!) and getrow()=rowcount()then
Long l_fila, l_max
l_fila = insertrow(rowcount() + 1)
l_max = wf_max_codigo()
dw_general.SetItem(l_fila,1,l_max)
dw_general.SetColumn("nombre_concepto")
dw_general.SetRow(l_fila)
end if

Pero al adicionarle las 2 ultimas lineas me inserta 2 lineas y me posiciona el cursor donde lo necesito, que puedo hacer?.

La idea es que enog un DW y cada vez que llegue al final de la fila y le de enter se inserte una nueva fila y se posiciones en la fila y columna correpsondiente, de igual forma necesito ir a una funcion (wf_max_codigo()) y traer el ultimo consecutivo.

2 Efectivamente tengo un value de 0 y en la propiedad format del campo tengo lo sgte: #,###,###,###
Pero aun sigue saleindo en vacio aunque cuando grabo me lleva el valor de 0 a la tabla.

3 Esto es lo que no deseo hacer, no cambiar la configuracion sino que atravez de formatos pueda mostrar datos de esta forma 12,500.50, 450.30

Gracais por tu tiempo y por ayudarmes.

Saludos desde Medellin, COlombia. Si deseas agregarme al mns este es mi correo:
riflacom@hotmail.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Formatos de datos en DW

Publicado por Marce (119 intervenciones) el 16/07/2009 21:24:53
Hola,
1)No lo entendí muy bien. Yo suelo hacerlo asi al insertar una fila:

long ll_new_row

ll_new_row=dw_1.insertrow(0) //agrega al final una fila
dw_1.scrolltorow(ll_new_row)

Siempe termino en la fila recien insertada, o sea en la fila ll_new_row. Me parece que el problema esta en
l_fila = insertrow(rowcount() + 1) //tercera linea de tu codigo

En cuanto a la columna, mas basico:¿ Al hacer el datawindow le diste el orden de tabulación?

2)Raro.

3)No sé.

Lamento no poder ayudarte mas.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Formatos de datos en DW

Publicado por New User (3 intervenciones) el 17/07/2009 18:15:33
amigo
punto 3
debes utilizar RegistryGet y RegistrySet
en el open de tu aplicacion

// Chequeo de Internacional . y ,
ls_hkey= "Hkey_Current_userControl PanelInternational"
//Consulta
IF RegistryGet(ls_hkey, "sDecimal", RegString!, ls_chek) = -1 THEN
MessageBox("Decimal","No se encuentra entrada en la Registry")
end if
IF RegistryGet(ls_hkey, "sThousand", RegString!, ls_chek1) = -1 THEN
MessageBox("Miles","No se encuentra entrada en la Registry")
end if

If Ls_Chek <> "." Then
RegistrySet(ls_hKey, "sDecimal", RegString!,'.' )
end if

If Ls_Chek1 <> "," Then
RegistrySet(ls_hKey, "sThousand", RegString!,',')
end if

//MessageBox("Seteos","" + "Dec " + ls_chek + "Coma " + ls_chek1)
//IF RegistryGet(ls_hkey, "sShortdate", RegString!, ls_chek2) = -1 THEN
// MessageBox("Fecha","No se encuentra entrada en la Registry")
//else
// MessageBox("Fecha","Ok " + Ls_Chek2)
//end if

// Graba en la Registry
RegistrySet(ls_hKey, "sDecimal", RegString!,',' )
RegistrySet(ls_hKey, "sThousand", RegString!,'.' )
RegistrySet(ls_hKey, "sShortdate", RegString!,'dd/MM/yyyy')

punto 4 Os Debo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar