Control de salida en pantalla de datos: Recordset, Do While, If ... algo falla

04/07/2007 - 18:04 por Fernando | Informe spam
Como mero aficionado que soy, tengo problemas de novato.of course!!



Tengo un recordset con unos datos que quiero presentar de la siguiente forma



Datos del recordset:



Nombredelcentro Nombreempleado Fechabaja

Madrid Pepe1 01022007

Madrid Pepe2 01022007

Madrid Pepe3 01022007

Corboba Pepe4 01022007

Cordoba Pepe5 01022007

Barcelona Pepe6 01022007

Barcelona Pepe7 01022007

Barcelona Pepe8 01022007





Presentación deseada:



Centro de Trabajo: Madrid

Nombreempleado Fechabaja

Pepe1 01022007

Pepe2 01022007

Pepe3 01022007



Centro de Trabajo: Cordoba

Nombreempleado Fechabaja

Pepe4 01022007

Pepe5 01022007



Centro de Trabajo: Barcelona

Nombreempleado Fechabaja

Pepe6 01022007

Pepe7 01022007

Pepe8 01022007





Para hacerlo he preparado el siguiente código de Novato (que no funciona.por
eso estoy preguntando. Sólo me sale el primer bloque de registros: el que
corresponde al primer centro de trabajo)



(quito del código las etiquetas html que controlan la salida en pantalla de
los datos.)



<%@language=VBScript%>



<%



Set rsdatos = Server.CreateObject("ADODB.Recordset")

rsdatos.Open todaselect , db , adOpenDynamic



do while not rsdatos.eof

Response.Write rsdatos.Fields("Nombredelcentro")



controlcentro=rsdatos.Fields("Nombredelcentro")

controlcentro2=controlcentro



do while not rsdatos.eof



if controlcentro2=controlcentro then



Response.Write
rsdatos.Fields("nombreempleado")

Response.Write
rsdatos.Fields("fechabaja")

end if



rsdatos.movenext



if rsdatos.eof=false then

controlcentro2=rsdatos.Fields("Nombredelcentro ")



end if



loop



loop



rsdatos.close



%>





Gracias por sus respuestas



Fernando
 

Leer las respuestas

#1 Arturo Costa Delgado
04/07/2007 - 18:21 | Informe spam
Buenos días:
Si te he entendido bien, tu quieres presentar el listado agrupados por
ciudades y a 2 columnas (nombre y fecha de baja).
Bueno, la sintaxis que yo utilizo es totalmente distinta a la tuya, pero
creo que podré darte al menos una idea.

Yo utilizo primero un archivo db.asp en incluyo las líneas de conexión.
Este archivo tiene esta estructura:

<%
Dim Conexion,Tabla
Set Conexion=Server.CreateObject("adodb.connection")
Set Tabla1=Server.CreateObject("adodb.recordset")
Set Tabla2=Server.CreateObject("adodb.recordset")
Set Tabla3=Server.CreateObject("adodb.recordset")
Conexion.open "Provider=Microsoft.Jet.OLEDB.4.0; Data
Source=f:\inetpub\base de datos\MiBaseDeDatos.mdb"
%>

Explicado esto te paso a mostrar el código que usaría en la página
LISTADO.ASP que es el nombre que usare como ejemplo



LISTADO.ASP
<!-- #include file="setup/db.asp" -->

<%
Temp1="Select Distinct Nombredelcentro From TablaDeUsuarios"
Tabla1.Open Temp1, Conexion
While Not Tabla1.EOF
%>

Centro de Trabajo: <%= Tabla1.Fields("Nombredelcentro") %><br>
<table>
<tr>
<td>Nombre del Empleado</td>
<td>Fecha de Baja</td>
</tr>

<%
Temp2="Select * From TablaDeUsuarios Where Nombredelcentro='" &
Tabla1.Fields("Nombredelcentro") & "'"
Tabla2.Open Temp2, Conexion
While Not Tabla2.EOF
%>

<tr>
<td><%= Tabla1.Fields("Nombreemmpleado") %></td>
<td><%= Tabla1.Fields("Fechabaja") %></td>
</tr>

<%
Tabla2.MoveNext
Wend
Tabla2.Close

Response.Write("</table><br>")

Tabla1.MoveNext
Wend
%>

Espero haberte sido de utilidad.
Un saludo desde Lima, Perú

ACd

Preguntas similares