Foros del Web » Programando para Internet » ASP Clásico »

listado de registros repetidos sin tiene más de un anexo

Estas en el tema de listado de registros repetidos sin tiene más de un anexo en el foro de ASP Clásico en Foros del Web. Buenas tardes, el problema que tengo ahora es que si tengo un registro que contiene más de 1 anexo, este se repite tantas veces la ...
  #1 (permalink)  
Antiguo 05/07/2008, 11:54
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 17 años, 5 meses
Puntos: 0
listado de registros repetidos sin tiene más de un anexo

Buenas tardes, el problema que tengo ahora es que si tengo un registro que contiene más de 1 anexo, este se repite tantas veces la cantidad de anexos que tenga.

Bueno a continuación indico las tablas y el código, gracias de antemano por la paciencia...


Tengo 3 tablas

datos.mdb
(contiene todos los datos personales + categoria (numerico))

categoría.mdb
(contiene todas las ofertas, campos: Id (numerico) y Categoria (texto))

anexo_datos.mdb
(contiene los datos del anexo + id_datos (numerico)

datos.categoria = categoria.id
datos.id = anexo.datos_id



El código que tengo es el siguiente:

<%
dim strSql
dim mAdo
dim mPdf
dim empleo


Set mConnAcc=Server.CreateObject("ADODB.Connection")

set mAdo=CreateObject("ADODB.Recordset")
set mPdf=CreateObject("ADODB.Recordset")

'------ hago la selección de los registros que quiero mostrar
strSql="select datos.id, datos.nombre, datos.apellidos, datos.ciudad, datos.pais, datos.telefono, datos.movil, datos.mail, datos.honorarios, datos.autonomo, datos.mensaje, datos.fecha, categoria.id, categoria.categoria, anexo_datos.id_datos, anexo_datos.filename, anexo_datos.description1, anexo_datos.filesize from datos, categoria, anexo_datos where datos.categoria=categoria.id and datos.id=anexo_datos.id_datos and datos.id="&empleo


mAdo.Open strSql, mConnAcc, 1, 2
if not mAdo.EOF then

while not mAdo.EOF

%>
Fecha:<%=mAdo("fecha")%><br />
Categoria:<%=mAdo("categoria")%><br /><br />
Nombre:<%=mAdo("nombre")%>&nbsp;<%=mAdo("Apellidos ")%><br />
Pais, Ciudad:<%=mAdo("pais")%>&nbsp;-&nbsp;<%=mAdo("ciudad")%><br />
Telefono:<%=mAdo("telefono")%><br />
M&oacute;vil:<%=mAdo("movil")%><br /><br />
Autonomo:<%=mAdo("autonomo")%><br />
Honorarios:<%=mAdo("honorarios")%><br /><br />
Mensaje:<%=mAdo("mensaje")%><br /><br />



<%

'--------------------------------- Anexos -----------------------------
strSql = "select filename, description1, filesize from anexo_datos where id_datos="&empleo
set mPdf=mConnAcc.Execute(strSql)
if not mPdf.EOF then

while not mpdf.EOF
%>
Curriculum anexo:<a href="documentos/ofertas/<%=mPdf("filename")%>" target="_blank" title="<%=mPdf("description1")%>"><%=mPdf("descrip tion1")%></a>, &nbsp;Tama&ntilde;o del archivo:<%=mPdf("filesize")%>&nbsp;MB<br><br>

<br>

<br>
<%
mPDF.MoveNext
wend
mpdf.Close
end if
set mpdf=nothing
%>
<%
mAdo.MoveNext
wend
mAdo.Close
end if
set mAdo = nothing

%>
  #2 (permalink)  
Antiguo 05/07/2008, 18:35
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
Respuesta: listado de registros repetidos sin tiene más de un anexo

ummm

oki necesitas datos de las 3 bases

porque mejor no haces un planteamiento diferente

algo como:
Cita:
select * from datos order by Nombre
'seteo el RS

muestro los datos que necesito

select * from categoría where IdCliente = rs("IdClienet")
muestro la categorías de el cliente
seteo rs2

select * from anexos where IdCategoria = rs2("IdCategoria")
muestro los datos
seteo rs3

muevo rs1, rs2, rs3
eso tomando en cuenta que datos tiene muchas categorías y cada categoría tiene anexos

si no es así replantea mi idea

suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
  #3 (permalink)  
Antiguo 06/07/2008, 05:18
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 17 años, 5 meses
Puntos: 0
Sonrisa Respuesta: listado de registros repetidos sin tiene más de un anexo

Hola y gracias por responder.

Te digo a continuación como está funcionando:

DATOS contiene los datos personales del solicitante, y a su vez tiene un campo que es la categoría (valor numerico), esta categoría corresponderá a la seleccionada por el solicitante en la tabla CATEGORIA (que esta si tiene varias categorías), por lo que DATOS y CATEGORIA están relacionadas con el campo datos.categoria y categoria.id, esto funciona bien.

ANEXO_DATOS contiene todos los anexos que el solicitante necesite subir al servidor, y está relacionada con DATOS por medio del campo ID, lo cual en ANEXO_DATOS.id_datos y DATOS.id es lo mismo.

Si la table ANEXO_DATOS contiene un sólo anexo perteneciente al mismo ID_DATOS, se lista correctamente, es decir, se lista un solo registro completo con su respectivo anexo, así:


Nombre: pedro
apellidos: Perez
dirección: Madrid
Categoria: Carpintero
Archivos adjuntos:
Curriculum


Si la tabla ANEXO_DATOS contiene más de un registro perteneciente al mismo ID_DATOS, entonces se lista el registro existente en la tabla DATOS, tantos registro tenga en ANEXO_DATOS y de forma completa, así:


Nombre: pedro
apellidos: Perez
dirección: Madrid
Categoria: Carpintero
Archivos adjuntos:
Foto, carta, curriculum

Nombre: pedro
apellidos: Perez
dirección: Madrid
Categoria: Carpintero
Archivos adjuntos:
Foto, carta, curriculum

Nombre: pedro
apellidos: Perez
dirección: Madrid
Categoria: Carpintero
Archivos adjuntos:
Foto, carta, curriculum


Gracias por tu colaboración
  #4 (permalink)  
Antiguo 07/07/2008, 08:24
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
Respuesta: listado de registros repetidos sin tiene más de un anexo

pegas tu código?
__________________
JuanRa Pérez
San Salvador, El Salvador
  #5 (permalink)  
Antiguo 07/07/2008, 11:38
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Respuesta: listado de registros repetidos sin tiene más de un anexo

Es decir, ¿que al unir las tablas te está trayendo algunos datos duplicados debido a la relación que tienen tus tablas?

Si es así, un select distinct te debe ayudar.

Código:
SELECT DISTINCT campos ....
Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #6 (permalink)  
Antiguo 07/07/2008, 11:48
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: listado de registros repetidos sin tiene más de un anexo

Gracias por ressponder.

El código completo está al inicio del tema (es lo primero que coloqué).

Luego, el select distint lo hago para ambas tablas? así:

strSql="select DISTINCT datos.id, datos.nombre, datos.apellidos, datos.ciudad, datos.pais, datos.telefono, datos.movil, datos.mail, datos.honorarios, datos.autonomo, datos.mensaje, datos.fecha, categoria.id, categoria.categoria, anexo_datos.id_datos, anexo_datos.filename, anexo_datos.description1, anexo_datos.filesize from datos, categoria, anexo_datos where datos.categoria=categoria.id and datos.id=anexo_datos.id_datos and datos.id="&empleo

y el de anexos:

strSql = "select DISTINCT filename, description1, filesize from anexo_datos where id_datos="&empleo

??

Gracias otra vez!
  #7 (permalink)  
Antiguo 07/07/2008, 11:48
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: listado de registros repetidos sin tiene más de un anexo

Hola

Prueba con esto

Código PHP:
SQL "Select .......... "


Dim suma
registros
=rs.getrows()
suma UBound(registros,2)+1

' elimina valores duplicados 
Dim iniValores()
Dim limValores()
Redim iniValores(suma)
For j=0 to UBound(registros,2)
iniValores(j) =registros(id,j)
Next '
j
redim preserva limValores
(1)
limValores(0)=iniValores(0)
For 
x=0 to (UBound(iniValores)-1)
Dim resultado
resultado
=0
For y=0 to (ubound(limValores)-1)
resultado=StrComp(iniValores(x),limValores(y),1)
if (
resultado=0then 
exit for
end if
Next 'y
if(resultado<>0)then
redim preserva limValores(ubound(limValores)+1)
limValores(ubound(limValores)-1)=iniValores(x)
end if
Next '
x

SQL 
"Select * from tabla where id_datos = "CInt(limValores(z)) & " " 
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #8 (permalink)  
Antiguo 07/07/2008, 11:52
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Respuesta: listado de registros repetidos sin tiene más de un anexo

Según entiendo el problema viene en la unión de las tablas, trata primero aplicando el distinct al primer recordset, el siguiente que es un nivel más de profundidad debe estar bien -si es que es esto-, si no, fíjate en las otras recomendaciones.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #9 (permalink)  
Antiguo 07/07/2008, 12:28
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
Respuesta: listado de registros repetidos sin tiene más de un anexo

Cita:
Iniciado por Cameron_2006 Ver Mensaje
...
El código completo está al inicio del tema (es lo primero que coloqué).
...
pensé habías modificado algo digo basados en el caso que te expuse pero bueno...

insisto:

Código PHP:
sql "select * from DATOS order by Nombre"
'seteo el RS
'
muestro los datos que necesito


sql 
"select * from categoria where Id" rs("categoria")
'muestro la categoria
'
seteo rs2
'cierro RS2

sql = "select * from anexo_datos where id_datos" = rs("ID???")
'
muestro la categoria
'seteo rs3
'
while RS3
'muevo al sigueinte RS3


'
muevo siguiente RS 
suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
  #10 (permalink)  
Antiguo 08/07/2008, 04:23
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: listado de registros repetidos sin tiene más de un anexo

Mil gracias JuanRAPerez y a todos los que me han intentado ayudar con este problema, fue resuelto con la propuesta de JuanRAPerez, solo que en lugar de 3 select utilicé 2, y le quité al primero la tabla anexo_datos, que era la que estaba duplicando el resultado, quedando así:

strSql="select datos.id, datos.nombre, datos.apellidos, datos.ciudad, datos.pais, datos.telefono, datos.movil, datos.mail, datos.honorarios, datos.autonomo, datos.mensaje, datos.fecha, categoria.id, categoria.categoria from datos, categoria where datos.categoria=categoria.id and datos.id="&empleo

Gracias otra vez,
  #11 (permalink)  
Antiguo 08/07/2008, 09:27
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
Respuesta: listado de registros repetidos sin tiene más de un anexo

me alegra te haya servido el aporte Cameron_2006

suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:28.