142 lines
4.7 KiB
Plaintext
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 |