Power Builder - impedir que se registre dos veces dentro de la semana

 
Vista:
sin imagen de perfil
Val: 37
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

impedir que se registre dos veces dentro de la semana

Publicado por Juan Francisco (231 intervenciones) el 19/08/2022 02:35:42
Buenas noches, soy novato en este lenguaje por lo que les pido apoyo en esto:

Estoy registrando varias personas usuarias dentro de un datawindow (dw_1)
Estas cuentan con DNI entre otros datos, siendo el tercero el campo fecha, luego el 4to (nombre), luego el 5to su dni, etc....

Ahora deseo que no me permita registrar a una persona x, DOS VECES pero dentro de la semana vigente que he puesto en el campo fecha.

Es decir si esta semana comenzó desde el día 15/08/2022 y culmina el día 21/08/2022, entonces:

dentro de ese intervalo de fechas cualquier usuario que yo digite con su DNI nuevamente, me emita un mensaje de error, indicando que ya esta registrada esa persona en la semana vigente.

Ayuda por favor.
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
Imágen de perfil de Leonardo Daniel A.
Val: 821
Oro
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

impedir que se registre dos veces dentro de la semana

Publicado por Leonardo Daniel A. (481 intervenciones) el 19/08/2022 03:59:09
1
2
3
4
5
6
7
8
9
10
11
12
13
14
integer li_tot
string ls_dni
date ld_fecha1, ld_fecha2
 
ls_dni = dw_1.getitemstring( dw_1.getrow(), "dni")
ld_fecha1 = dw_1.getitemdate( dw_1.getrow(), "fecha_inicio")
// lo mismo para fecha2 pero con fecha fin
 
select count(*) into :li_tot from tabla
          where dni = :ls_dni and fecha between fecha1 and fecha2
 
if li_tot >0 then
   mensaje "ya existe"
end if

la sentencia SQL varia en el between dependiendo de la base de datos


la idea es mas o menos esa
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
sin imagen de perfil
Val: 37
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

impedir que se registre dos veces dentro de la semana

Publicado por Juan Francisco (231 intervenciones) el 19/08/2022 18:48:22
Hola Leonardo, te consulto:
Para ejecutar este código tengo que codificar en el Data Source, opción Desingn / Retrieval Arguments

Luego seleccionar en Where la columna fecha de la tabla que lo conforma el dw_1
seguido del signo igual (=) y ponerle a cada argumento que he creado para cada fecha (f_ini y f_fin)

osea uno para cada argumento?

me corriges por favor si estoy mal
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
Imágen de perfil de Leonardo Daniel A.
Val: 821
Oro
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

impedir que se registre dos veces dentro de la semana

Publicado por Leonardo Daniel A. (481 intervenciones) el 19/08/2022 18:53:13
no no no

evento del dw itemchanged

1
2
3
if dwo.name = "DNI" then
    codigo aqui
end if


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

impedir que se registre dos veces dentro de la semana

Publicado por Bunker (149 intervenciones) el 20/08/2022 16:53:02
hola Leonardo...
Retomastes Power Builder ??

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
Imágen de perfil de Leonardo Daniel A.
Val: 821
Oro
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

impedir que se registre dos veces dentro de la semana

Publicado por Leonardo Daniel A. (481 intervenciones) el 20/08/2022 19:54:57
Hola, solo tengo aplicaciones que de vez en cuando les doy mantenimiento
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
sin imagen de perfil
Val: 37
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

impedir que se registre dos veces dentro de la semana

Publicado por Juan Francisco (231 intervenciones) el 09/10/2022 16:11:35
Hola Leonardo denuevo, para comentarte que estuve trabajando últimamente con tu código de SQL:

///////////////////////////////////////////////
integer li_tot
string ls_dni
date ld_fecha1, ld_fecha2

ls_dni = dw_ddcc.getitemstring(dw_ddcc.getrow(), "dni")
ld_fecha1 = dw_ddcc.getitemdate(dw_ddcc.getrow(), "fecha")

select count(*) into :li_tot from ddcc;
where dni = :ls_dni and fecha between ld_fecha1

/////////////////////////////////////////////

pero resulta que me emite un error de sintaxis,

El tema es que deseo recorrer toda la tabla (ddcc) y ubicar si esa DNI que intento registrar dentro de la semana vigente SE VA A DUPLICAR, si es así, entonces me emita el mensaje (LA DNI QUE ESTA INGRESANDO... YA SE ENCUENTRA REGISTRADA EN LA SEMANA VIGENTE) y no me deje registrarla...

Gracias por tu aporte Leonardo, espero respuesta
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
Imágen de perfil de Leonardo Daniel A.
Val: 821
Oro
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

impedir que se registre dos veces dentro de la semana

Publicado por Leonardo Daniel A. (481 intervenciones) el 11/10/2022 18:17:08
esta mal tu sentencia SQL

depende de la base de datos es

where fecha between fecha1 and fecha2

te falta la 2da fecha
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