Funcion con varios cursores
Publicado por david (2 intervenciones) el 16/08/2017 11:46:38
Buenas.
Estoy intentando hacer una función que me devuelva en html, una tabla con los módulos de un curso y a su vez con sus unidades, y a su vez con las notas del alumno en cada unidad.
El tema es que la hago asi:
El problema es que no me devuelve la nota en cada unidad, me devuelve esto que adjunto en la imagen:
Alguna ayuda? Muchas gracias.
Estoy intentando hacer una función que me devuelva en html, una tabla con los módulos de un curso y a su vez con sus unidades, y a su vez con las notas del alumno en cada unidad.
El tema es que la hago asi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
ALTER function [ForCdm].[Dame_TableHTML_Sen25_Notas](@Grupoid as int, @inscripcionid as int, @AccionidCat as int)
RETURNS varchar(max) AS
begin
--declare @nota numeric(18, 2) = 0
declare @notaMedia numeric(18, 2) = 0
declare @contador int = 1
declare @numUnidades int
declare @contadorUnidades int = 1
declare @tabla varchar(max) = ''
declare @tabla2 varchar(max) = ''
declare @tabla3 varchar(max) = ''
declare @tabla4 varchar(max) = ''
declare @tablaAux varchar(max) = ''
set @tabla = @tabla + '
<table border="1" border=1 cellspacing=0 cellpadding=2 bordercolor="666633" style="border-style:solid">
<tr>
<td colspan="" rowspan="2" style="background-color:#C2D69D">
<span style="font-size:8.0pt;font-family:''Arial'',''sans-serif''"><p align=center><b>Nº</b></p></span></td>
<td rowspan="2" style="background-color:#C2D69D">
<span style="font-size:8.0pt;font-family:''Arial'',''sans-serif''"><p align=center><b>DNI/NIE</b></p></span></td>
<td rowspan="2" style="background-color:#C2D69D"><span style="font-size:8.0pt;font-family:''Arial'',''sans-serif''"><p align=center><b>APELLIDOS Y NOMBRE</b></p></span></td>'
declare modulos cursor for
select cam.moduloid, cm.codigo as Nombre
from FormacionCdm..CatalogoAccionesModulos cam
inner join FormacionCdm..CatalogoModulos cm on cm.ModuloId = cam.ModuloId
where cam.AccionId = @AccionidCat
order by cam.Orden
open modulos
declare @moduloId int
declare @modulo varchar(MAX)
fetch next from modulos into @Moduloid, @modulo
WHILE @@FETCH_STATUS = 0
BEGIN
set @contadorUnidades = (select COUNT(unidadid)+1 from FormacionCdm.dbo.CatalogoAccionesModulosUnidades camu, FormacionCdm.dbo.CatalogoAccionesModulos cam
where camu.AccionModuloId = cam.AccionModuloId and cam.ModuloId = @moduloId)
set @tabla = @tabla + '<td colspan ="'+cast(@contadorUnidades as varchar)+'" style="background-color:#C2D69D"><span style="font-size:8.0pt;font-family:''Arial'',''sans-serif''"><b>'+@modulo+'</b></span></td>'
declare unidades cursor for
select * from (select cu.unidadid, cu.codigo as Nombre
from FormacionCdm..CatalogoUnidades cu
inner join FormacionCdm..CatalogoAccionesModulosUnidades camu on cu.UnidadId = camu.UnidadId
inner join FormacionCdm..CatalogoAccionesModulos cam on cam.AccionModuloId = camu.AccionModuloId
where cam.AccionId = @AccionidCat and cam.ModuloId = @moduloId
union all
select 11000 as unidadid, 'CALIFICACIÓN FINAL' as Nombre) a
order by a.UnidadId
open unidades
declare @UnidadId int
declare @unidad varchar(MAX)
fetch next from unidades into @UnidadId, @unidad
WHILE @@FETCH_STATUS = 0
BEGIN
set @tabla2 = @tabla2 + '<td style="background-color:#C2D69D"><span style="font-size:8.0pt;font-family:''Arial'',''sans-serif''"><b>'+@unidad+'</b></span></td>'
declare Inscripciones cursor for
select i.inscripcionid, I.nif as Nif, ISNULL(i.apellido1,'') + ' ' + ISNULL(i.apellido2,'') + ' ' + ISNULL(i.nombre,'') as Nombre, iu.Convocatoria1Practico as nota
from FormacionCdm..Inscripciones i
LEFT OUTER JOIN FormacionCdm.dbo.InscripcionesUnidades iu on i.InscripcionId = iu.inscripcionid
where i.InscripcionId = @inscripcionid and iu.UnidadId = @UnidadId
order by i.Apellido1,i.Apellido2,i.Nombre
open Inscripciones
declare @nif varchar(MAX)
declare @nombre varchar(max)
declare @nota varchar(max)
fetch next from Inscripciones into @Inscripcionid, @nif, @nombre, @nota
fetch next from unidades into @UnidadId, @unidad
close Inscripciones
deallocate Inscripciones
end
fetch next from modulos into @Moduloid, @modulo
close unidades
deallocate unidades
END
close modulos
deallocate modulos
set @tabla = @tabla + '<td rowspan="2" style="background-color:#C2D69D"><span style="font-size:8.0pt;font-family:''Arial'',''sans-serif''"><b>'+'PROPUESTA CERTIFICADO'+'</b></span></td>
<td rowspan="2" style="background-color:#C2D69D"><span style="font-size:8.0pt;font-family:''Arial'',''sans-serif''"><b>'+'PROPUESTA DE ACREDITACIÓN PARCIAL'+'</b></span></td></tr>'
set @tabla3 = @tabla3 + '<tr></tr><tr><td>'+'numero'+'</td><td>'+@nif+'</td><td>'+@nombre+'</td>'
set @contador += 1
set @tabla = @tabla + @tabla2 + @tabla3 + @tabla4
set @tabla = @tabla + isnull(@tablaAux, '')
set @tabla = @tabla + '</table>
</td>
</tr>
</table>'
set @tabla = @tabla + ''
return @tabla
end
El problema es que no me devuelve la nota en cada unidad, me devuelve esto que adjunto en la imagen:
Alguna ayuda? Muchas gracias.
- tabla_HTML.rar(3,5 KB)
Valora esta pregunta
0