GeneXus - Ayuda con Gilla

   
Vista:

Ayuda con Gilla

Publicado por Aroldo (103 intervenciones) el 28/01/2011 20:28:18
Saludos Foro. Ya habia posteado este tema anteriormente pero aun no he resulelto el problema---

tengo una Workpanel de matricula de diplomados, alli se ingresa el codigo y nombre del estudiante y en un datagrid los diplomados que quiere matricular (creados anteriormente en otra transaccion con sus respectivos horarios, dias y hora), cuando se ingresa un diplomado en el grilla automaticamente aparecen los horarios, lo que quiero hacer es que cuando se ingrese un segundo o tercer diplomado me valide los horario, ejemplo:

si el primer diplomado se recibe los dias lunes, martes y miercoles a las 2:00 pm a 4 pm e ingreso un diplomado que se recibe solo los lunes a las 3:00 pm que me de el aviso que hay conflicto con el horario y no me deje agregarlo.

Genexus 9.0
MySql
Genero para .NET
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

RE:Ayuda con Gilla

Publicado por Julio (301 intervenciones) el 28/01/2011 23:04:17
Hola Aroldo, que tal te fué con las facturas?

Para este caso te explico como yo lo haría, por experiencia y aunque al principio te suene algo difícil te aseguro que es muy fácil y sobre todo seguro:

Tengo un Wkp, en la parte superior coloco un Dinamic ComboBox que me lea la tabla de los estudiantes, es decir, a través de este combo selecciono el estudiante...
En la grilla voy a mostrar los diplomados ordenados por dia y horas, en esta grilla añadiré una columna con una variable &Sel pero la mostraré como un checkbox de tal manera que por medio de esta permita al usuario seleccionar los diplomados que desee.
En principio, el usuario usará su buen criterio (visual) para escoger (de la grilla) aquellos diplomados que no tengan conflicto, pero, cuando presione el botón Confirmar se deberá hacer una validacion en un evento y de la siguiente manera (por cuanto el usuario pudo haber errado): leeré la grilla por medio de un for each line y, el primer diplomado seleccionado que encuentre lo guardo en una matriz de datos cuidando guardar en otra variable la cantidad de filas que tengo guardadas en la matriz, continúo leyendo la grilla y cuando encuentre el siguiente diplomado seleccionado, enviándole los datos de este diplomado llamaré a una subrutina (Sub) que estará dentro del mismo Wkp y en esta leo cada uno de los registros guardados en la matriz y voy comparando contra los datos del diplomado seleccionado en la grilla y así sucesivamente, si en esta comparación encuentro que ya existe un diplomado que choca con el día y la hora entonces avisaré al usuario que hay un conflicto, en caso contrario lo almacenaré también en la matriz para que éste también sea elemento de comparación en las subsiguientes lecturas de la grilla.
Disfruto cuando hago este tipo de objetos en que las cosas sean muy simples para el usuario aunque no siempre lo sea para quien lo ha diseñado, pero son nuestros retos, posiblemente al principio parezca un poco complicado pero solo hasta que le tomes el pulso al problema. No dudes en pedir ayuda, todos la necesitamos siempre en algún momento.
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

RE:Ayuda con Gilla

Publicado por Aroldo (103 intervenciones) el 28/01/2011 23:42:27
Hola Julio, pues lo de las facturas me funciono de maravilla, de verdad agradezco toda la ayuda que me has brindado hasta el momento.

Con lo que me planteas para este sistema, comprendo muy bien lo que me dices, ya lei en la ayuda de genexus como declarar el array (es como declarar una variable pero se especifica que es Matrix) lo que no comprendo bien es si engo que declararlo Numerico, Varchar o como.. y como almaceno los datos en el array, la verdad es que nunca he trabajado con ellos, si me pudieras brindar un ejemplo seria genial, desde ya gracias por tu ayuda.

Saludos desde Honduras.
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

RE:Ayuda con Gilla

Publicado por Julio (301 intervenciones) el 29/01/2011 02:35:08
Bueno, supongamos que los datos que tienes en la grilla y que vas a almacenar en la matriz son:

DiplomadoId N(4)
DiplomadoDia N(1) // Dias de la semana del 1 al 7
DiplomadoHora C(5) // Formato hh:mm
&Sel N(1) // Variable para seleccionar

Podrías poner otros datos en la grilla como por ej. el nombre del diplomado pero básicamente los que nos sirven son los que acabo de listar.
Como puedes ver, la lista tiene datos de diferentes tipo, es decir, numéricos y caracter.
Los tipo caracter no los podemos transformar a número (podríamos con la hora pero nos vamos a complicar) pero los números si los podemos guardar como caracter con la función STR.
Tengo declarada una variable tipo matriz C(5) de n Filas (Rows) por 3 columnas (Columns) &MatDatos
Tambien tengo una variable que llevará la cantidad de registros ingresados en la matriz &Filas N(50) (dependerá de la cantidad de registros que se seleccionen de una sola vez)

Event 'Confirmar' // Asociado al botón Confirmar
&sw = 0
&Seguir = 0
&Filas = 0
&MatDatos() = '' // Así se encera (blanquea) una matriz
for each line // Lee secuencialmente la grilla
if &Seguir = 0
if &Sel = 1 // Toma de la grilla solo los registros seleccionados en el checkbox
if &sw = 0 // Sirve solo para que el primer registro se almacene en la matriz
&sw = 1
&MatDatos(1 , 1) = str(DiplomadoId)
&MatDatos(1 , 2) = str(DiplomadoDia)
&MatDatos(1 , 3) = DiplomadoHora
&Filas = 1 // Inicializa el contador de filas de la matriz
else
&DiploId = DiplomadoId
&DiploDia = DiplomadoDia
&DiploHora = DiplomadoHora
do 'Comparar y guardar en Matriz'
if &sw = 1
&Seguir = 1 // Si se encontró un registro en conflicto no procesar el resto,
/ /aquí no funciona el comando exit
endif // &sw = 1
endif // &sw = 0
endif // &Sel = 1
endif // &Seguir = 0
endfor // for each line
if &sw = 1
msg('Hay uno o más registros que tienen conflicto...')
else
confirm('Está seguro de los datos seleccionados ?...',N)
if confirmed()
PGuardar(EstudianteId ,&MatDatos() ,&Filas)
endif
endif
EndEvent // 'Confirmar'

Sub 'Comparar y guardar en Matriz'
&sw = 1
&j = 0
do while &j < &Filas
&j += 1
if &DiploDia = val(&MatDatos(&j , 2) ) and &DiploHora = val(&MatDatos(&j , 3)
// Compara día y hora de la matriz contra el del registro actual
&sw = 0
exit // Para salir inmediatamente del do while
endif
enddo
if &sw = 1 // El registro no tiene conflicto con otros horarios, se guarda en matriz
&Filas += 1
&MatDatos(&Filas , 1) = str(&DiploId)
&MatDatos(&Filas , 2) = str(&DiploDia)
&MatDatos(&Filas , 3) = &DiploHora
endif
EndSub // 'Comparar y guardar en Matriz'

Me avisas como te fue...
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

necesito ayuda con un grid

Publicado por natu (5 intervenciones) el 26/10/2012 17:49:39
Hola Julio, necesito por favor si sabes como eliminar registros de un grid, es decir que mediante una vble, directamente no sean visibles en el grid, por favor, hace dias que estoy con esto..no puedo terminar, ya probe con SDT, para que me cargue solo los registros que necesito, pero no funciona...por favor...solo nec que se muestre en el grid los registros cuya vble es imp o v...espero tu respuesta, gracias
me olvidaba, estoy con Genexus X Evo 1
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

RE:Ayuda con Gilla

Publicado por Julio (301 intervenciones) el 31/01/2011 16:48:02
Aroldo, en la respuesta anterior cometí un error grandote pero aquí lo corrijo:
donde dice "Tambien tengo una variable que llevará la cantidad de registros ingresados en la matriz &Filas N(50)" debe decir "Tambien tengo una variable que llevará la cantidad de registros ingresados en la matriz &Filas N(2)"
La diferenciua está en el largo de la variable &Filas.
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

RE:Ayuda con Gilla

Publicado por Aroldo (103 intervenciones) el 28/02/2011 06:20:42
No he podido solucionar el problema, use el ejemplo que me dio Julio pero en el grilla no me carga los diplomados que tengo creados, por lo tanto no puedo seleccionarlos para realizar la matricula.
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