Power Builder - FIND

 
Vista:

FIND

Publicado por ivan salazar (101 intervenciones) el 27/09/2005 16:00:24
Hola tengo el siguiente caso. estoy tratando de ubicar un dato de tipo Decimal a traves de la funcion Find(), pero al momento de ejecutar la aplicacion me emite el siguiente mensaje "Expression is not valid" y me devuelve -5 Bad Argument. A continuacion les envio el script para ver si me ayudan a resolver este caso.

dec{2} ldc_mto

FOR ll_row = 1 TO dw_libros.RowCount()
ldc_mto = dw_libros.GetItemDecimal(ll_row, "monto")
IF IsNull(ldc_mto) THEN ldc_mto = 0
li_ind = 0
ll_found = 1
do while li_ind = 0
ll_found = dw_banco.Find("monto="+String(ldc_mto) , 1, dw_banco.RowCount())
// Coloca Como Conciliados el Mvto. en Libro y Banco
IF ll_found > 0 THEN
IF ldc_mto = dw_banco.GetItemDecimal(ll_found, "monto") THEN
ll_cont ++
dw_libros.SetItem(ll_row, "marca", 1)
dw_banco.SetItem(ll_found, "marca", 1)
li_ind = 1
END IF
ELSE
li_ind = 1
END IF
ll_found ++
IF ll_found > dw_banco.RowCount() THEN li_ind = 1
loop
NEXT
IF ll_cont = 0 THEN
Rollback ;
f_mensajes_std(2, "No Encontro Movimientos Para Conciliar por Monto")
Return
END IF

Gracias...
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:FIND

Publicado por Julio (137 intervenciones) el 27/09/2005 17:45:45
Hola:

FOR ll_row = 1 TO dw_libros.RowCount()
ldc_mto = dw_libros.GetItemDecimal(ll_row, "monto")
IF IsNull(ldc_mto) THEN ldc_mto = 0
li_ind = 0
ll_found = 1
do while li_ind = 0
//-----------------------------------------------
/*--- antes de esta linea, si tu campo "monto" es de tipo decimal, lo que tienes que hacer es:
*/
//-----------------------------------------------
ll_found = dw_banco.Find("monto="+String(ldc_mto) , 1, dw_banco.RowCount())
//-----------------------------------------------
/* PERO SI TU CAMPO "MONTO" ES DE TIPO STRING TIENES QUE AGREGARLE UNA COMILLA SIMPLE ANTES DE LA COMILLA DOBLE AL INICIO Y UNA COMILLA SIMPLE ENTRE DOS COMILLAS DOBLES AL FINAL
*/
ll_found = dw_banco.Find("monto='"+String(ldc_mto)+"'" , 1, dw_banco.RowCount())
//-----------------------------------------------
/*
no te olvides que dentro de tu datawindow si haces una comparación entre un decimal y un string, obviamente que te va a botar error...

si aun asi continua el error, y no puedes hacer la comparación, tal vez seria mejor que utilizaras una variable mas
*/
//-----------------------------------------------
//-----------------------------------------------
string ls_mto
ls_mto = string(ldc_mto)
ll_found = dw_banco.Find("monto="+ls_mto , 1, dw_banco.RowCount())
//-----------------------------------------------

// Coloca Como Conciliados el Mvto. en Libro y Banco
IF ll_found > 0 THEN
IF ldc_mto = dw_banco.GetItemDecimal(ll_found, "monto") THEN
ll_cont ++
dw_libros.SetItem(ll_row, "marca", 1)
dw_banco.SetItem(ll_found, "marca", 1)
li_ind = 1
END IF
ELSE
li_ind = 1
END IF
ll_found ++
IF ll_found > dw_banco.RowCount() THEN li_ind = 1
loop
NEXT
IF ll_cont = 0 THEN
Rollback ;
f_mensajes_std(2, "No Encontro Movimientos Para Conciliar por Monto")
Return
END IF

Espero te sirva!
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