Contador en Campo Dw

Lo que pretendo realizar es un contador que me suministre un campo especifico dentro del dw, en este caso seria un código la idea es generar un código propio, es decir A01, SA01 ETC..., la idea que al presionar el intro se genere ese correlativo nombrado anteriormente, me gustaría tener una idea o algunas de las opciones que puede generar este tipo de opción.

1 respuesta

Respuesta
1
De acuerdo a tu código me imagino que la tabla t_area es la que tiene el código que quieres asignar automáticamente, si utilizas puro números pero con ceros a la izquierda puedes hacerla de esta manera:
SELECT count(cod_area) INTO :ll_cant FROM t_area;
tab_1.tabpage_1.dw_6.SetItem(fila_nueva,"codigo",string(ll_cant + 1,'00000'))
Este código pondrá ceros a la izquierda poniendo al final el ultimo numero recuperado.
Cualquier duda solo pregunta.
Te contare que tengo un botón agregar fila y necesito que la opción de esta me ingrese el código... bueno busta utilice una de tus opciones y quedo haci:
long ll_cant //esto lo declare yo
Select count(cod_area)
into :ll_cant
from t_area;
ll_cant = ll_cant + 1
tab_1.tabpage_1.dw_6.SetTransObject(SQLCA)
long fila_nueva
//la nueva fila se inserta al final del datawindow
fila_nueva = tab_1.tabpage_1.dw_6.InsertRow(0)
//el datawindow toma el foco
tab_1.tabpage_1.dw_6.SetFocus()
//se desplaza hasta la nueva fila
tab_1.tabpage_1.dw_6.ScrollToRow(fila_nueva)
tab_1.tabpage_1.dw_6.SetColumn(1)
pb_16.enabled = true
De ante mano muchas gracias
Me provoca el siguiente error:
Application terminated.
Error: Invalid DataWindows row/column specified at line 4 in clicked event of object pb_agregar of w_organizacion.
¿Lo inserto antes de guardar en el botón "Guardar" y también lo probé en el Botón "Agregar" cual puede ser el problema...?
Gracias por tu Tiempo.
Dime cual es el código que esta en la linea 4 del evento clicked, o si puedesmuestrame todo el código del evento, así como indicame el nombre del campo.
Es el botón "Guardar" en el evento clicked se encuentra antes del commit para que me genere el numero y despueste guarde, el nombre del campo es cod_area de la tabla t_area cualquier duda no dudes en darlo a conocer, aquí esta el script completo:
long ll_cant, fila_nueva
SELECT count(cod_area)
INTO :ll_cant FROM t_area;
tab_1.tabpage_1.dw_6.SetItem(fila_nueva,"codigo",string(ll_cant + 1,'00000'))
tab_1.tabpage_1.dw_6.SetRedraw (false)
//si la actualización de la base de datos no es exitosa, se deshacen
//todos los cambios con la orden rollback.
//De lo contrario, se realizan todos los cambios con la orden commit.
if tab_1.tabpage_1.dw_6.Update() = -1 then
rollback;
else
commit;
messagebox("Atencion","Se Grabaron los Datos con Exito",information!)
end if
tab_1.tabpage_1.dw_6.SetRedraw (true)
//Si después de actualizar la base de datos no quedan filas en el
//datawindow, se deshabilita el botón de actualizar.
if tab_1.tabpage_1.dw_6.RowCount() = 0 then
pb_16.enabled = false
else
pb_16.enabled = true
end if
long l_numfilas
//se recibe la información de la base de datos en el datawindow
// tab_actualizaciones.tabpage_empleados.dw_act_empleados
tab_1.tabpage_1.dw_6.retrieve()
l_numfilas=tab_1.tabpage_1.dw_6.RowCount()
tab_1.tabpage_1.dw_6.ScrollToRow(l_numfilas)
//Si el número de filas en el datawindow es 0 entonces se deshabilita
//el botón de borrar, de lo contrario, se habilita.
if l_numfilas = 0 then
pb_8.enabled = false
else
pb_8.enabled = true
end if
Gracias
El problema está en esta parte, tu declaras la variable fila_nueva, pero no la inicializas, tienes que inicializarla antes de usarla en el dw_6, caso contrario la variable tendrá valor null.
¿Disculpa pero a que te refieres inicializar la variable? Por favaor puedes ser más claro es tu explicación.
Gracias.
Inicializar la variable quiere decir que tiene que tener un valor inicial.
Yo te pregunto que valor tiene fila_nueva, ¿al momento de colocarlo en el dw_6?
Para ello debes hacer
SELECT count(cod_area)
INTO :ll_cant FROM t_area;
fila_nueva = tab_1.tabpage_1.dw_6.InsertRow(0) //agregar fila
tab_1.tabpage_1.dw_6.SetItem(fila_nueva,"codigo",string(ll_cant + 1,'00000'))
Continua el error, te muestro el script que use en el botón agregar fila evento clicked, que puedo hacer para generar ese código, gracias tu tiempo, pero necesito ayuda
el script es el siguiente :
 long ll_cant, fila_nueva
SELECT count(cod_area)
INTO :ll_cant FROM t_area;
fila_nueva = tab_1.tabpage_1.dw_6.InsertRow(0) //agregar fila
tab_1.tabpage_1.dw_6.SetItem(fila_nueva,"codigo",string(ll_cant + 1,'00000'))
tab_1.tabpage_1.dw_6.SetTransObject(SQLCA)
tab_1.tabpage_1.dw_6.SetFocus()
tab_1.tabpage_1.dw_6.ScrollToRow(fila_nueva)
tab_1.tabpage_1.dw_6.SetColumn(1)
pb_16.enabled = true
Ahora dime como se llama la columna donde deseas poner el código, según el dw indica "codigo", si en caso es otro nombre debes corregirlo.
Bueno el error desapareció, ¿pero el código no aparece que puede ser? Que no me numera el campo... disculpas las molestia pero de verdad es importante este detalle, y nuevamente Gracias.
Puedes volver a enviar tu código del botón aceptar, quiero confirmar algo.
Boton Ageregar Fila:
long ll_cant, fila_nueva
SELECT count(cod_area)
INTO :ll_cant FROM t_area;
fila_nueva = tab_1.tabpage_1.dw_6.InsertRow(0) //agregar fila
tab_1.tabpage_1.dw_6.SetItem(fila_nueva,"t_area_cod_area",string(ll_cant + 1,'00000'))
tab_1.tabpage_1.dw_6.SetTransObject(SQLCA)
tab_1.tabpage_1.dw_6.SetFocus()
tab_1.tabpage_1.dw_6.ScrollToRow(fila_nueva)
tab_1.tabpage_1.dw_6.SetColumn(1)
pb_16.enabled = true
Boton Guardar :
if tab_1.tabpage_1.dw_6.Update() = -1 then
rollback;
else
commit;
messagebox("Atencion","Se Grabaron los Datos con Exito",information!)
end if
tab_1.tabpage_1.dw_6.SetRedraw (true)
if tab_1.tabpage_1.dw_6.RowCount() = 0 then
pb_16.enabled = false
else
pb_16.enabled = true
end if
long l_numfilas
tab_1.tabpage_1.dw_6.retrieve()
l_numfilas=tab_1.tabpage_1.dw_6.RowCount()
tab_1.tabpage_1.dw_6.ScrollToRow(l_numfilas)
if l_numfilas = 0 then
pb_8.enabled = false
else
pb_8.enabled = true
end if
Bueno, si tienes dudas de mi plantamiento del sistema no dudes en avisarme,
Gracias.
SELECT count(cod_area)
INTO :ll_cant FROM t_area;
fila_nueva = tab_1.tabpage_1.dw_6.InsertRow(0) //agregar fila
tab_1.tabpage_1.dw_6.SetItem(fila_nueva,"t_area_cod_area",string(ll_cant + 1,'00000'))
tab_1. tabpage_1. dw_6. SetTransObject(SQLCA) <-- Aqui está el problema, porque declaras estos en esta parte. Borra esta linea, he intenta nuevamente.
tab_1.tabpage_1.dw_6.SetFocus()
tab_1.tabpage_1.dw_6.ScrollToRow(fila_nueva)
tab_1.tabpage_1.dw_6.SetRow(fila_nueva)<-- Agrega esta linea
tab_1.tabpage_1.dw_6.SetColumn(1)
Bueno sigo sin generar ese código pero no me envía ningún error, pero no lo genera en el campo, ¿disculpa pero no hay otra opción o esta opción resulta?
Gracias por tu tiempo y paciencia .
Saludos
String ls_numero
Long ll_fila
SELECT MAX(LONG(COD_AREA))
INTO :ll_numero
FROM T_AREA
USING SQLCA;
ls_numero = STRING(ll_numero + 1,'00000')
ll_fila = tab_1.tabpage_1.dw_6.InsertRow(0)
tab_1.tabpage_1.dw_6.SetItem(ll_fila,"t_area_cod_area",ls_numero)
tab_1.tabpage_1.dw_6.ScrollToRow(ll_fila)
tab_1.tabpage_1.dw_6.SetRow(ll_fila)
tab_1.tabpage_1.dw_6.SetColumn(1)
Verifica si el nombre del campo es t_area_cod_area tal vez este como cod_area
Con esto te debe salir, caso contrario haz un debug, para ver donde está el inconveniente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas