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

Problemas con un SQL...

Estas en el tema de Problemas con un SQL... en el foro de ASP Clásico en Foros del Web. Hola a todos: Tengo el siguiente código... Código HTML: <% set rs=server.CreateObject("adodb.recordset") set rs2=server.CreateObject("adodb.recordset") sql="SELECT nombre,id FROM clientes ORDER BY id ASC" rs.open sql, conexion ...
  #1 (permalink)  
Antiguo 25/01/2008, 18:27
Avatar de ciisteado  
Fecha de Ingreso: enero-2008
Ubicación: Home Office
Mensajes: 111
Antigüedad: 16 años, 4 meses
Puntos: 0
Pregunta Problemas con un SQL...

Hola a todos:

Tengo el siguiente código...

Código HTML:
<%

set rs=server.CreateObject("adodb.recordset")
set rs2=server.CreateObject("adodb.recordset")
sql="SELECT nombre,id FROM clientes ORDER BY id ASC"
rs.open sql, conexion
do while not rs.EOF
	sql="SELECT nomcte,rfc,numfact FROM ventas WHERE nomcte like '" &rs("nombre")& "'" 
	rs2.open sql, conexion
	do while not rs2.EOF
		response.write("ID:" & rs("id")& " " & "NOMBRE:" & rs2("nomcte") &" " & "RFC:" & rs2("rfc") &" " & "FACTURA:" & rs2("numfact") & "<br>")
		rs2.movenext
	loop
	rs2.close
rs.movenext
loop
rs.close

%> 
Lo que hace es extraerme los siguientes datos:

Código HTML:
ID:4 NOMBRE:Superparangaricutirimicuaro RFC:sd5156165 FACTURA:111222333
ID:4 NOMBRE:Superparangaricutirimicuaro RFC:sd5156165 FACTURA:111222334
ID:4 NOMBRE:Superparangaricutirimicuaro RFC:sd5156165 FACTURA:111222333
ID:4 NOMBRE:Superparangaricutirimicuaro RFC:sd5156165 FACTURA:111222334
ID:4 NOMBRE:Superparangaricutirimicuaro RFC:sd5156165 FACTURA:111222333
ID:4 NOMBRE:Superparangaricutirimicuaro RFC:sd5156165 FACTURA:111222334
ID:4 NOMBRE:Superparangaricutirimicuaro RFC:sd5156165 FACTURA:111222333
ID:4 NOMBRE:Superparangaricutirimicuaro RFC:sd5156165 FACTURA:111222334
Ahora el problema es que quiero que me muestre los datos de esta forma:

Código HTML:
ID:4 NOMBRE:Superparangaricutirimicuaro RFC:sd5156165 
FACTURA:111222333
FACTURA:111222334
y asi con cualquier cliente que encuentre...

¿¿..ALGUNA SUGERENCIA..??

Se los agradeceré enormemente...

Saludos...

Última edición por ciisteado; 25/01/2008 a las 18:52 Razón: Obetener una respuesta concreta...
  #2 (permalink)  
Antiguo 26/01/2008, 00:19
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: Problemas con un SQL...

, solo es cuestion de que saques los datos que ocupas del ciclo, de esta forma
Código HTML:
response.write("ID:" & rs("id")& " " & "NOMBRE:" & rs2("nomcte") &" " & "RFC:" & rs2("rfc") &"<br/> "
	do while not rs2.EOF
		response.write "FACTURA:" & rs2("numfact") & "<br>")
		rs2.movenext
	loop


__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #3 (permalink)  
Antiguo 26/01/2008, 11:03
Avatar de ciisteado  
Fecha de Ingreso: enero-2008
Ubicación: Home Office
Mensajes: 111
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Problemas con un SQL...

Hola Shiryu:

Ya hice el cambio que me sugeriste pero, al ejecutar la consulta, me marca que ocurre una excepción en la parte del response...

Código HTML:
response.write("ID:" & rs("id")& " " & "NOMBRE:" & rs2("nomcte") &" " & "RFC:" & rs2("rfc") & "<br>")
Te pongo todo el código para que puedas ver en donde esta la falla...

Código HTML:
<%
set rs=server.CreateObject("adodb.recordset")
set rs2=server.CreateObject("adodb.recordset")
sql="SELECT nombre,id FROM clientes ORDER BY id ASC"
rs.open sql, conexion
do while not rs.EOF
	sql="SELECT nomcte,rfc,numfact FROM ventas WHERE nomcte like '" &rs("nombre")& "'" 
	rs2.open sql, conexion
	response.write("ID:" & rs("id")& " " & "NOMBRE:" & rs2("nomcte") &" " & "RFC:" & rs2("rfc") & "<br>")
	do while not rs2.EOF
		response.write("FACTURA:" & rs2("numfact") & "<br>")
		rs2.movenext
	loop
	rs2.close
rs.movenext
loop
rs.close
%> 
Gracias por la ayuda...

Saludos...
  #4 (permalink)  
Antiguo 26/01/2008, 14:39
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Re: Problemas con un SQL...

Prueba ahora

Código HTML:
<%
set rs=server.CreateObject("adodb.recordset")
set rs2=server.CreateObject("adodb.recordset")
sql="SELECT nombre,id FROM clientes ORDER BY id ASC"
rs.open sql, conexion
do while not rs.EOF
    sql="SELECT nomcte,rfc,numfact FROM ventas WHERE nomcte like '" &rs("nombre")& "'" 
    rs2.open sql, conexion
    response.write("ID:" & rs("id")&)
    do while not rs2.EOF
        response.write("NOMBRE:" & rs2("nomcte") &" " & "RFC:" & rs2("rfc") & " " & "FACTURA:" & rs2("numfact") & "<br>")
        rs2.movenext
    loop
    rs2.close
rs.movenext
loop
rs.close
%> 
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;" />

Última edición por Adler; 31/07/2008 a las 15:14
  #5 (permalink)  
Antiguo 26/01/2008, 15:18
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: Problemas con un SQL...

Cita:
Iniciado por ciisteado Ver Mensaje
Hola Shiryu:

Ya hice el cambio que me sugeriste pero, al ejecutar la consulta, me marca que ocurre una excepción en la parte del response...

Código HTML:
response.write("ID:" & rs("id")& " " & "NOMBRE:" & rs2("nomcte") &" " & "RFC:" & rs2("rfc") & "<br>")
Te pongo todo el código para que puedas ver en donde esta la falla...

Código HTML:
<%
set rs=server.CreateObject("adodb.recordset")
set rs2=server.CreateObject("adodb.recordset")
sql="SELECT nombre,id FROM clientes ORDER BY id ASC"
rs.open sql, conexion
do while not rs.EOF
    sql="SELECT nomcte,rfc,numfact FROM ventas WHERE nomcte like '" &rs("nombre")& "'" 
    rs2.open sql, conexion
    response.write("ID:" & rs("id")& " " & "NOMBRE:" & rs2("nomcte") &" " & "RFC:" & rs2("rfc") & "<br>")
    do while not rs2.EOF
        response.write("FACTURA:" & rs2("numfact") & "<br>")
        rs2.movenext
    loop
    rs2.close
rs.movenext
loop
rs.close
%> 
Gracias por la ayuda...

Saludos...
error de dedologia, es que falto el IF

recapitulemos
Cita:
Código HTML:
<%
set rs=server.CreateObject("adodb.recordset")
set rs2=server.CreateObject("adodb.recordset")
sql="SELECT nombre,id FROM clientes ORDER BY id ASC"
rs.open sql, conexion
do while not rs.EOF
    sql="SELECT nomcte,rfc,numfact FROM ventas WHERE nomcte like '" &rs("nombre")& "'" 
    rs2.open sql, conexion
    IF RS.EOF=FALSE then
    response.write("ID:" & rs("id")& " " & "NOMBRE:" & rs2("nomcte") &" " & "RFC:" & rs2("rfc") & "<br>")
    do while not rs2.EOF
        response.write("FACTURA:" & rs2("numfact") & "<br>")
        rs2.movenext
    loop
    rs2.close
    else
        response.write ("No se encontraron recibos para este cliente")
    end if
rs.movenext
loop
rs.close
%> 
con eso debe bastar
Cita:
Iniciado por Adler Ver Mensaje
Prueba ahora

Código HTML:
<%
set rs=server.CreateObject("adodb.recordset")
set rs2=server.CreateObject("adodb.recordset")
sql="SELECT nombre,id FROM clientes ORDER BY id ASC"
rs.open sql, conexion
do while not rs.EOF
    sql="SELECT nomcte,rfc,numfact FROM ventas WHERE nomcte like '" &rs("nombre")& "'" 
    rs2.open sql, conexion
    response.write("ID:" & rs("id")&)
    do while not rs2.EOF
        response.write("NOMBRE:" & rs2("nomcte") &" " & "RFC:" & rs2("rfc") & " " & "FACTURA:" & rs2("numfact") & "<br>")
        rs2.movenext
    loop
    rs2.close
rs.movenext
loop
rs.close
%> 
Suerte
el codigo que proporcionas es perfecto, con la unica condicion que no se cumple, repetiria en cada vuelta el RFC, NUMCTE, por cada recibo, que es lo que no desea CIISTEADO


__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #6 (permalink)  
Antiguo 26/01/2008, 15:38
 
Fecha de Ingreso: enero-2008
Ubicación: Siempre sere tu sombra
Mensajes: 41
Antigüedad: 16 años, 4 meses
Puntos: 1
Re: Problemas con un SQL...

CIISTEADO, debes preguntar primero si no es el final de la consulta para que no tengas problemas con errores de que no te aparece nada o similares

por lo regular la estructura basica seria algo asi:

Cita:
SQL="consulta"
'ejecucion de tu consulta
set RS=conexion.execute(SQL)
if Err=0 then <--- si no existe error
if RS.EOF=FALSE THEN <---- si no es el final entonces
'despleigas resultados
'con ciclos (DO ó WHILE)
'ejemplo 1
DO WHILE NOT RS.EOF
response.write "resultados"
RS.MOVENEXT
LOOP
'ejemplo2
WHILE RS.:EOF=FALSE
response.write "RESULTADOS"
RS.movenext
WEND
ELSE <--- en dado caso de que no se encontraran coincidencias
response.write "No hay resultados"
end if <-- cerrando el IF interno
else <---- en dado caso de que se encontraran errores
response.write "Error de conexion"
'si tienes una funcion que recopile errores
'aqui es donde pones el nombre de la funcion, y los parametros para saber que fallo
'FuncionErrores (Err.descripcion, SQL, date(now()))
end if <--- cerrando IF de errores
o puedes utilizar 'Getrows
Cita:
SQL="consulta"
set RS=conexion.execute(SQL) <-- ejecucion de tu consulta
if Err=0 then <--- si no existe error
if RS.EOF=FALSE THEN <---- si no es el final entonces
Registros=RS.GetROWS
RS.close
'ahora mostramos los registros
'con un ciclo for
for i=0 to ubound(registros,2)
for j=0 to ubound(registros,1)
response.write " | " & registros(j,i)
next
response.write "<br/>"
next
ELSE <--- en dado caso de que no se encontraran coincidencias
response.write "No hay resultados"
end if <-- cerrando el IF interno
else <---- en dado caso de que se encontraran errores
response.write "Error de conexion"
'si tienes una funcion que recopile errores
'aqui es donde pones el nombre de la funcion, y los parametros para saber que fallo
'FuncionErrores (Err.descripcion, SQL, date(now()))
end if <--- cerrando IF de errores
la ventaja que tiene la segunda parte es que deja libre la base de datos mas rapido y estresas menos tu servidor
  #7 (permalink)  
Antiguo 27/01/2008, 08:01
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Re: Problemas con un SQL...

¿como va, Shiryu_Libra?

Como siempre tienes razón. Eso me pasa por no saber leer
__________________
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 27/01/2008, 13:32
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: Problemas con un SQL...

Adler

que no te ganen las ansias de contestar, todo a su tiempo



Patience My Friend

__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #9 (permalink)  
Antiguo 28/01/2008, 12:07
Avatar de ciisteado  
Fecha de Ingreso: enero-2008
Ubicación: Home Office
Mensajes: 111
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Problemas con un SQL...

Hola a todos:

Despues de varios intentos el código quedo de esta forma:

Código HTML:
set rs=server.CreateObject("adodb.recordset")
set rs2=server.CreateObject("adodb.recordset")
sql="SELECT nombre,id FROM clientes ORDER BY id ASC"
rs.open sql, conexion
do while not rs.EOF
	sql="SELECT nomcte,rfc,numfact FROM ventas WHERE nomcte like '" &rs("nombre")& "'"
	rs2.open sql, conexion
	i=0
	do while not rs2.EOF
		if i=0 then
			response.write("ID:" & rs("id")& " " & "NOMBRE:" & rs2("nomcte") &" " & "RFC:" & rs2("rfc") & "<br>")
		end if
		response.write("FACTURA:" & rs2("numfact") & "<br>")
		i=i+1
		rs2.movenext
	loop
	rs2.close
rs.movenext
loop
rs.close
Mostrandome este resultado:

Código HTML:
ID:4 NOMBRE:Superparangaricutirimicuaro RFC:sd5156165
FACTURA:111222333
FACTURA:111222334
FACTURA:111222333
FACTURA:111222334
FACTURA:111222333
FACTURA:111222334
FACTURA:111222333
FACTURA:111222334
Y como se darán cuenta me repite los NUMFACT, ese es ahora el problema...

la idea es que me muestre los datos de esta forma:

Código HTML:
ID:4 NOMBRE:Superparangaricutirimicuaro RFC:sd5156165
FACTURA:111222333
FACTURA:111222334
¿¿ALGUNA SUGERENCIA??... y perdon por la ignorancia...

Saludos...

  #10 (permalink)  
Antiguo 28/01/2008, 12:13
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: Problemas con un SQL...

puedes realizar un distinct en tu query
Cita:
sql="SELECT distinct(numfact), nomcte, rfc FROM ventas WHERE nomcte like '" &rs("nombre")& "'"
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #11 (permalink)  
Antiguo 28/01/2008, 12:20
Avatar de ciisteado  
Fecha de Ingreso: enero-2008
Ubicación: Home Office
Mensajes: 111
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Problemas con un SQL...

El problema ahora es que NUMFACT es de tipo "text" por lo que me marca el siguiente error:

The text data type cannot be selected as DISTINCT because it is not comparable.


¿Alguna Alternativa?...

Gracias Shiryu-Libra...
  #12 (permalink)  
Antiguo 28/01/2008, 13:41
Avatar de ciisteado  
Fecha de Ingreso: enero-2008
Ubicación: Home Office
Mensajes: 111
Antigüedad: 16 años, 4 meses
Puntos: 0
Pregunta Como evitar extraer registros repetidos sin DISTINCT...

Hola a todos:

Hola a todos:

Tengo un problema con la siguiente consulta, este es el código que estoy utilizando:

Código HTML:
set rs=server.CreateObject("adodb.recordset")
set rs2=server.CreateObject("adodb.recordset")
sql="SELECT nombre,id FROM clientes ORDER BY id ASC"
rs.open sql, conexion
do while not rs.EOF
	sql="SELECT distinct(numfact),nomcte,rfc FROM ventas WHERE nomcte like '" &rs("nombre")& "'"
	rs2.open sql, conexion
	i=0
	do while not rs2.EOF
		if i=0 then
			response.write("ID:" & rs("id")& " " & "NOMBRE:" & rs2("nomcte") &" " & "RFC:" & rs2("rfc") & "<br>")
		end if
		response.write("FACTURA:" & rs2("numfact") & "<br>")
		i=i+1
		rs2.movenext
	loop
	rs2.close
rs.movenext
loop
rs.close
Mostrandome este resultado:
Código HTML:
ID:4 NOMBRE:Superparangaricutirimicuaro RFC:sd5156165
FACTURA:111222333
FACTURA:111222334
FACTURA:111222333
FACTURA:111222334
FACTURA:111222333
FACTURA:111222334
FACTURA:111222333
FACTURA:111222334
Como se darán cuenta me repite los NUMFACT, ese es el problema...

la idea es que me muestre los datos de esta forma:

Código HTML:
ID:4 NOMBRE:Superparangaricutirimicuaro RFC:sd5156165
FACTURA:111222333
FACTURA:111222334
Ya lo he intentado con un DISTINCT en la sentencia SQL de esta forma:
--------------------------------------------------------------
sql="SELECT distinct(numfact),nomcte,rfc FROM ventas WHERE nomcte like '" &rs("nombre")& "'"
--------------------------------------------------------------

Pero me manda este error por que el campo NUMFACT es de tipo text:
--------------------------------------------------------------
The text data type cannot be selected as DISTINCT because it is not comparable.
--------------------------------------------------------------

¿¿Alguna sugerencia para solucionar este problema,,, instruccion,,, lógica,,, algo que se les ocurra??
Se los agradeceria bastante.

Saludos a todos...
  #13 (permalink)  
Antiguo 28/01/2008, 14:06
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Re: Como evitar extraer registros repetidos sin DISTINCT...

No se si estamos hablando de SQL ANSI, pero así a golpe de vista la sentencia sería:

sql="SELECT distinct numfact FROM ventas WHERE nomcte like '" &rs("nombre")& "'"


DISTINCT te va a aliminar los duplicados de la lista de selección, no lleva parámetros y no se si el campo nomCte vaya a variar, si no varían, supongo que tanto el RFC como ese campo los podrías sacar de la consulta que haces sobre clientes, y si sí varían, te pueden causar que recibas facturas duplicadas.

Saludos
  #14 (permalink)  
Antiguo 28/01/2008, 14:36
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: Como evitar extraer registros repetidos sin DISTINCT...

Solo agregar que estás utilizando una consulta like sin comodines, lo cuál puede ocasionar extraños, y repercutir negativamente en el performance de tu aplicación, si como comenta Myakire el nombre no variará y realmente lo que quieres traer son aquellas facturas del cliente X", una consulta = 'nombre' es lo que necesitas.

Ahora, si nos ponemos más exigentes, la relación de las facuras-cliente, debería ser un campo de preferencia numérico, y no un string -el nombre del cliente en este caso.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
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 22:31.