Darle formato a un campo del DW para N caracteres.

Quisiera hacerle arreglos a mi DW de captura de ventas para que tenga menos probabilidades de equivocarme al capturar el num de producto, ya que a veces por error le pongo un carácter de mas, o de menos.

El num. De producto tiene 9 caracteres, y quiero que cuando los caracteres no sean igual a 9, es decir, cuando le falte o le sobre un dígito, el programa me muestra un aviso y si es posible no me permita seguir.

Tengo productos que son puros números, así: "600234654", y otros productos así: "711/23465" en este segundo son 9 dígitos contando la diagonal.

1 Respuesta

Respuesta
1

Antes de guardar debes hacer algo parecido a esto.

string ls_num_prod
ls_num_prod = dw.getitemstring(1,'num_rod')
if len(ls_num_prod) <> 9 then
   messagebox('','')
   return
end if

gracias por tu respuesta Experto, ya puse tu código pero cualquier numero de mi producto que capture (así sea de 9 dígitos) me manda al menssagebox y al return, es decir, no me acepta ninguno... tu código lo puse en mi botón actualizar justo antes del update(), no se si es mejor colocarlo en otra parte.

Así tengo mi código:

//CÓDIGO DE EXPERTO:
string ls_num_pol
ls_num_pol = dw_1.getitemstring(1,'num_poliza')
if len(ls_num_pol) <> 9 then
messagebox('Cuidado','Error en el Numero de Póliza')
return
else // LE AGREGUE ESTE ELSE PARA EN CASO CONTRARIO DEL IF HAGA LO QUE SIGUE
If Dw_1.Update() = 1 Then
Commit;
//Resetea para empezar a capturar otro producto
dw_1.reset()
Long ll_pos
ll_pos = Dw_1.InsertRow(0) //esto te permite insertar una fila al final
Dw_1.ScrollToRow(ll_pos) //te posiciona en la fila insertada
dw_1.setcolumn(2)
Dw_1.SetFocus()
//opción para poner automáticamente la fecha
dw_1.SetItem(dw_1.GetRow(),'fecha',today())
dw_1.settransobject(sqlca)
Else
messagebox('No se Pudo Guardar Info.','Revise el Numero de póliza o que no haya campos vacíos')
RollBack;
End If
end if

Dw. Accepttext()
ls_num_prod = dw.getitemstring(1,'')
if len(trim(ls_num_prod)) <> 9 then
   messagebox('','')
   return
end if

Negativo.... agregue el AcceptText() y el trim después del If, pero mi programa sigue igual, sin poder aceptar ninguna cantidad de Caracteres.

Bien, verifica que valor contiene "ls_num_prod" antes de guardarlo.

Dw. Accepttext()
ls_num_prod = dw.getitemstring(1,'')
Messagebox(string(len(ls_num_prod)), ls_num_prod)

Te deberá mostrar un mensaje cuyo titulo será la cantidad de caracteres que ingresaste en el campo y el valor de esa variable.

Me avisas.

Hola, ya hice esto ultimo que me sugeriste, pero solo cuando dígito mas dígitos de nueve, o menos de nueve me arroja los datos correctos en el messagebox (el titulo con la cantidad de caracteres y en el mensaje me aparece el mismo numero que digite).

Pero cuando pongo un numero de 9 caracteres en mi campo me sale siempre en el titulo del MessajeBox un "5", y en el mensaje me aparece el numero "88393".

Y ese numero "88393", existe en tu base de datos como numero de póliza ¿?

Cuando hagas un nuevo registro procura resetear el dw, de repente sólo insertas y como le pones getitemstring(1... siempre te muestra la primea fila.

Para corroborar esto, cambia esto.

En vez de poner dw. Getitemstring(1,''), pon esto. Dw. Getitemstring(dw. Getrow(),'')

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas