Files
MBS/PROYECTO/encuestas/encuestainterna.4gl
T

142 lines
4.7 KiB
Plaintext

DEFINE deptos DYNAMIC ARRAY OF RECORD
numemp INT,
titulo VARCHAR(100),
respuesta VARCHAR(20)
END RECORD,
cdeptos ui.ComboBox,
j, xnumemp INT,
nombre VARCHAR(100),
selec STRING,
cedula VARCHAR(11)
MAIN
CONNECT to "smarmotech" USER 'conecta' USING 'conecta'
CALL encuesta()
END MAIN
FUNCTION encuesta()
DEFINE arrdepto DYNAMIC ARRAY OF RECORD
seleccionado VARCHAR(2),
numemp INT,
titulo VARCHAR(100)
END RECORD,
i INT
OPEN WINDOW w1 WITH FORM "fmencuesta"
DIALOG ATTRIBUTE(UNBUFFERED)
INPUT BY NAME cedula
BEFORE INPUT
CALL ui.Interface.LoadStyles("formularios")
AFTER FIELD cedula
IF cedula IS NULL THEN
CALL fgl_winmessage("INFO","CAMPO EN BLANCO","INFO")
NEXT FIELD cedula
END IF
SELECT RTRIM(a.nom1_emp)||' '||ISNULL(a.apell1_emp,' '),a.departamento,a.num_emp INTO nombre,xnumemp
FROM adtb00003 a WHERE a.cedula = cedula
DISPLAY BY NAME nombre
AFTER INPUT
DECLARE buscar CURSOR FOR
SELECT UNIQUE 'NO',a.num_emp,TRIM(a.nom1_Emp)||' '||TRIM(a.apell1_emp)||' '||TRIM(a.apell2_emp)
FROM adtb00003 a
WHERE (a.status_t IS NULL OR a.status_t = 'I') AND a.num_emp <> xnumemp
# ORDER BY RTRIM(a.nom1_Emp)||' '||RTRIM(a.apell1_emp)||' '||RTRIM(a.apell2_emp)
LET i=1
FOREACH buscar INTO arrdepto[i].*
LET i = i+1
END FOREACH
LET j=1
END INPUT
INPUT ARRAY arrdepto FROM sdepto.* ATTRIBUTE(WITHOUT DEFAULTS)
BEFORE INPUT
CALL arrdepto.sort(key: 'titulo',FALSE)
CALL DIALOG.setActionActive( "insert", FALSE )
CALL DIALOG.setActionActive( "append", FALSE )
CALL DIALOG.setActionActive( "delete", FALSE )
LET j = 1
ON CHANGE seleccionado
IF arrdepto[arr_curr()].seleccionado ="SI" THEN
IF deptos.getLength() = 3 THEN
CALL fgl_winmessage("INFO","YA TIENE TRES EMPLEADOS ELEGIDOS","INFO")
LET arrdepto[arr_curr()].seleccionado = 'NO'
NEXT FIELD seleccionado
END IF
LET deptos[j].numemp = arrdepto[arr_curr()].numemp
LET deptos[j].titulo = "(",arrdepto[arr_curr()].numemp USING "<<<<",")",
arrdepto[arr_curr()].titulo
LET deptos[j].respuesta = ' '
LET j = j +1
END IF
ON ACTION enviar
IF deptos.getLength() > 3 THEN
CALL fgl_winmessage("INFO","SOLO ES PERMITIDO TRES DEPARTAMENTOS A ENCUESTAR","INFO")
FOR j = 1 TO arrdepto.getLength()
LET arrdepto[j].seleccionado ='NO'
END FOR
ELSE
IF deptos.getLength() =0 THEN
NEXT FIELD seleccionado
END IF
CALL pregunta()
END IF
END INPUT
ON ACTION CANCEL
EXIT DIALOG
CLOSE WINDOW w1
RETURN
END DIALOG
CLOSE WINDOW w1
END FUNCTION
FUNCTION pregunta()
DEFINE k,departamento INT,
xrespuesta VARCHAR(20),
opt VARCHAR(3)
OPEN WINDOW w2 WITH FORM "fmpregunta"
INPUT BY NAME departamento,xrespuesta
BEFORE INPUT
CALL DIALOG.setActionActive( "accept", FALSE )
LET selec = "SELECT DISTINCT a.respuesta FROM encuestas.dbo.respuestas a WHERE a.cedula = ? AND a.delartamento = ?"
PREPARE bdata FROM selec
LET selec ="INSERT INTO encuestas.dbo.respuestas (deviceid,cedula,nombre,delartamento,respuesta,created_at)
values (?,?,?,?,?,getdate())"
PREPARE insdata FROM selec
LET selec = "DELETE FROM encuestas.dbo.respuestas WHERE cedula = ? AND delartamento = ?"
PREPARE deldata FROM selec
LET cdeptos = ui.ComboBox.forName("formonly.departamento")
CALL cdeptos.addItem('1','Elegir')
FOR k=1 TO j
CALL cdeptos.addItem(deptos[k].numemp,deptos[k].titulo)
END FOR
LET departamento=1
DISPLAY BY NAME departamento
ON CHANGE departamento
IF departamento = 1 THEN
CALL fgl_Winmessage("INFO","DEBE ELEGIR UN DEPARTAMENTO VALIDO","INFO")
NEXT FIELD departamento
END IF
EXECUTE bdata INTO xrespuesta USING cedula,departamento
DISPLAY BY NAME xrespuesta
ON CHANGE xrespuesta
BEGIN WORK
EXECUTE deldata USING cedula,departamento
EXECUTE insdata USING '1234',cedula,nombre, departamento,xrespuesta
COMMIT WORK
END INPUT
CLOSE WINDOW w2
END FUNCTION