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

Agrupar los resultados

Estas en el tema de Agrupar los resultados en el foro de ASP Clásico en Foros del Web. Hola a todos; Tengo una inquietud, me gustaria que me ayudaran por q la verdad ya me tiene loco. La situacion es la siguiente, en ...
  #1 (permalink)  
Antiguo 04/04/2008, 22:20
 
Fecha de Ingreso: abril-2003
Ubicación: Bogota
Mensajes: 28
Antigüedad: 21 años, 2 meses
Puntos: 0
Información Agrupar los resultados

Hola a todos;
Tengo una inquietud, me gustaria que me ayudaran por q la verdad ya me tiene loco.

La situacion es la siguiente, en mi base de datos estoy manejando los datos de mis pedidos por esto tengo muchas datos repetidos, muchos pedidos con las mismas referencias. (Cuando un usuario hace uno de sus pedidos, estos datos pasan a ser listados como pendientes.) el caso es que al momento de generar el informe de pendientes mi informe geenra una lista asi:

Código:
Codigo   Cliente   Referencia  Color       27   28  29  30  31  32
 44          ATNG       1800         Blanco      1    2    2    3    3    4
 48          treG         1800         Blanco      1    2    2    3    3    4
 49          hyluG       1801         Blanco      1    2    2    3    3    4
 64          ATNG        1800         Blanco      1    2    2    3    3    4
 67          ATNG        1800         Blanco      1    2    2    3    3    4
 69          ATNG        1801         Blanco      1    2    2    3    3    4
 94          ATNG        1801         Blanco      1    2    2    3    3    4
ese es mi listado de pendientes, pero la pregunta es -- como podria generar un informe que me muestre el total por cada referencia?? algo asi
Código:
  Referencia  Color       27    28   29  30     31    32
   1800         Blanco      4      8     8   12     12     16
   1801         Blanco       3     6     6    9       9       12
Lo que se me ocrrio al principio era usar la expresion Group by,,,,,,, pero la verdad no estoy muy seguro,,,, espero que me puedan ayudar!!

muchas gracias!
  #2 (permalink)  
Antiguo 05/04/2008, 05:32
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Re: Agrupar los resultados

Hola, prueba así

Código PHP:
set rs1 Server.CreateObject("ADODB.Recordset")
SQL "Select distinct referencias, color from tabla"
rs1.Open SQLoConn,3,1
do while not rs1.eof
%>
<%=
rs1("referencias")%> - <%=rs1("color")%>:
<%
set rs2 Server.CreateObject("ADODB.Recordset")
 
otra consulta ya sin registros repetidos
SQL 
"Select referencias, ref1, ref2, ref3, ref4 from tabla where referencias = "CInt(rs1("referencias")) &""
rs2.Open SQLoConn,3,1
Totalref1 
0
Totalref2 
0
Totalref3 
0
Totalref4 
0
do while not rs2.eof
Totalref1 
=  Totalref1 rs2("ref1")
Totalref2 =  Totalref2 rs2("ref2")
Totalref3 =  Totalref3 rs2("ref3")
Totalref4 =  Totalref4 rs2("ref4")
rs2.Movenext
loop
%>
<%=
Totalref1%> - <%=Totalref2%> - <%=Totalref3%> - <%=Totalref4%><br />
<%
rs2.Close
set rs2
=nothing
rs1
.Movenext
loop
rs1
.Close
set rs1
=nothing
oConn
.Close
set oConn
=nothing 
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; 05/04/2008 a las 14:09 Razón: Faltaba una cosillas
  #3 (permalink)  
Antiguo 09/04/2008, 12:37
 
Fecha de Ingreso: abril-2003
Ubicación: Bogota
Mensajes: 28
Antigüedad: 21 años, 2 meses
Puntos: 0
Pregunta Proplema con CInt

Hola a todos
he estado intentando crear un resumen sobre los datos de mis pedidos para q queden como un resumen y no me muestre todos los datos que un vendedor ingresa, aqui les muestro una imagen de ejemplo:



para lograrlo, estoy utilizando este codigo
Código:
<%
codigox = "Pendiente"
set mertbaglan = Server.CreateObject("ADODB.Connection")
mertbaglan.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("pedidos.mdb"))
set mertgaleri = server.createobject("adodb.recordset")

IdMensaje = Request.QueryString("act")
usuario = Trim(Request.Cookies("brunettcliente")("usuario"))
galeriSirala = 1

tablo = "Select distinct ref, color from detalle  WHERE xcodigo='"&codigox&"'"
Titulo = "Linea Dama"
mertgaleri.pagesize = 12000
mertgaleri.open tablo,mertbaglan,1,3

If mertgaleri.EOF Then
%>
	      <center>No has Agregado ningun producto!</center>
<%Else



if request.QueryString("s")="" or request.querystring("s")=0 then
	s=1
else
	s=request.QueryString("s")
end if
mertgaleri.AbsolutePage = s

ref = mertgaleri("ref")
%>

<%=mertgaleri("ref")%> - <%=mertgaleri("color")%>:
<%
set rs2 = Server.CreateObject("ADODB.Connection")
rs2.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("pedidos.mdb"))
set rs2 = server.createobject("adodb.recordset")


' otra consulta ya sin registros repetidos
SQL = "Select * from detalle where ref = "& CInt(mertgaleri("ref")) &""
rs2.Open SQL, oConn,3,1
T27 = 0
T28 = 0
T29 = 0
T30 = 0
do while not rs2.eof
T27 =  T27 + rs2("27")
T28 =  T28 + rs2("28")
T29 =  T29 + rs2("29")
T30 =  T30 + rs2("30")
rs2.Movenext
loop
%>
<%=T27%> - <%=T28%> - <%=T29%> - <%=T30%><br />
<%
end if
%>

pero cuando lo intento abrir me sale el error:

Tipo de error:
Error de Microsoft VBScript en tiempo de ejecución (0x800A005E)
Uso no válido de Null: 'CInt'
/asp/mhl/xxxx.asp, línea 41


alguien que me pueda ayudar, please!!

Gracias a todos!
  #4 (permalink)  
Antiguo 09/04/2008, 13:09
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: Proplema con CInt

No se cual sea la linea 41

pero lo que ocupas tiene pinta de un simple

select ref, color, Count([27]), SUM([28]), SUM([29]), SUM([30])
from tabla group by ref, color

No se si puedas tener números como nombres de campos

Será cosa de que probaras la consulta en tu gestor de bd

Saludos
  #5 (permalink)  
Antiguo 09/04/2008, 13:10
Avatar de i_e_s27  
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 208
Antigüedad: 16 años, 2 meses
Puntos: 5
Re: Proplema con CInt

Aver si mi intiucion es buena... son zapatos de mujer?? y T27, T28, T29, T30 son los talles?

Y tu quieres agruparlos y sumar la cantidad que hay por Ref o Color?

No entiendo, si por ej. la ref 1800 es igual en todos los zapatos blancos... porque lo repites varias veces con diferente codigo?

No seria mejor tenes una sola fila e ir actualizando dicha fila con la cantidad que hay en stock??

Digo... porque el dia que tengas 1000 zapatos, de 1000 modelos diferentes, te va a quedar una tabla gigantesca y pesada....

Perdon por no tratar de responder tu pregunta... es que primero queria saber eso... de metido nomas!

Saludos!
  #6 (permalink)  
Antiguo 09/04/2008, 13:15
 
Fecha de Ingreso: abril-2003
Ubicación: Bogota
Mensajes: 28
Antigüedad: 21 años, 2 meses
Puntos: 0
Re: Proplema con CInt

muy bien,,,
si son zapatos y los 27, 28 ..30 son tallas..
El problema es que cada linea en la base de datos son datos q ingresa el vendedor, y deben ser lineas induviduales,, cada una le da una informacion diferente a los vendedores. es por eso que sale asi
  #7 (permalink)  
Antiguo 09/04/2008, 13:17
 
Fecha de Ingreso: abril-2003
Ubicación: Bogota
Mensajes: 28
Antigüedad: 21 años, 2 meses
Puntos: 0
Re: Proplema con CInt

la linea 41 es:

SQL = "Select * from detalle where ref = "& CInt(mertgaleri("ref")) &"

es alli donde esta el problema
  #8 (permalink)  
Antiguo 09/04/2008, 13:38
Avatar de i_e_s27  
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 208
Antigüedad: 16 años, 2 meses
Puntos: 5
Re: Proplema con CInt

Mmmm a mi se me ocurrio algo asi:

Código:
	Set rsRef = Server.CreateObject("ADODB.Recordset")
	strSQLrsRef = "SELECT distinct ref FROM detalle"
	rsRef.Open strSQLComboCategoria, adoCon, adOpenStatic, adLockOptimistic
	'Obtenemos los codigos distinct ref:
	EsPrimero = True
	Do While NOT rsRef.EOF
		If rsRef("distinct ref") <> Referencias Then
			If EsPrimero = False Then Referencias = Referencias & ","
			Referencias = Referencias & rsRef("distinct ref")
			EsPrimero = False
		End If
		rsRef.MoveNext
	Loop
	Referencias = Split(Referencias, ",", -1, 1)
	
	'Ahora por cada referencia hacemos una consulta:
	For i=1 to uBound(Referencias)
		Set rsProductos = Server.CreateObject("ADODB.Recordset")
		strSQLrsProductos = "SELECT color, Count([T27]), SUM([T28]), SUM([T29]), SUM([T30]) from detalle WHERE distinct ref=" & Referencias(i)
		rsProductos.Open strSQLComboCategoria, adoCon, adOpenStatic, adLockOptimistic
		Response.Write(rsProductos("color") & ", " & rsProductos("T27") & ", " & rsProductos("T28") & ", " & rsProductos("T29") & ", " & rsProductos("T30"))
		rsProductos.Close
		Set rsProductos =  Nothing
	Next 'i
Aunque es lo mismo que te puso Myakire pero mas tedioso...

Tu decides cual te convenga mas!

Saludos!
  #9 (permalink)  
Antiguo 09/04/2008, 13:51
Avatar de i_e_s27  
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 208
Antigüedad: 16 años, 2 meses
Puntos: 5
Re: Proplema con CInt

Ahora que me pongo a pensar un poco mas veo que lo que te puse no sirve

Porque aca:

If rsRef("distinct ref") <> Referencias Then

Siempre van a ser diferentes, porque le voy agregando referencias separados por comas adentro del if...

Utiliza la construccion SQL que te dio Myakire

Y perdon por mi respuesta erronea y apresurada
  #10 (permalink)  
Antiguo 09/04/2008, 14:05
 
Fecha de Ingreso: abril-2003
Ubicación: Bogota
Mensajes: 28
Antigüedad: 21 años, 2 meses
Puntos: 0
Re: Proplema con CInt

Cita:
Iniciado por i_e_s27 Ver Mensaje
Mmmm a mi se me ocurrio algo asi:

Código:
	Set rsRef = Server.CreateObject("ADODB.Recordset")
	strSQLrsRef = "SELECT distinct ref FROM detalle"
	rsRef.Open strSQLComboCategoria, adoCon, adOpenStatic, adLockOptimistic
	'Obtenemos los codigos distinct ref:
	EsPrimero = True
	Do While NOT rsRef.EOF
		If rsRef("distinct ref") <> Referencias Then
			If EsPrimero = False Then Referencias = Referencias & ","
			Referencias = Referencias & rsRef("distinct ref")
			EsPrimero = False
		End If
		rsRef.MoveNext
	Loop
	Referencias = Split(Referencias, ",", -1, 1)
	
	'Ahora por cada referencia hacemos una consulta:
	For i=1 to uBound(Referencias)
		Set rsProductos = Server.CreateObject("ADODB.Recordset")
		strSQLrsProductos = "SELECT color, Count([T27]), SUM([T28]), SUM([T29]), SUM([T30]) from detalle WHERE distinct ref=" & Referencias(i)
		rsProductos.Open strSQLComboCategoria, adoCon, adOpenStatic, adLockOptimistic
		Response.Write(rsProductos("color") & ", " & rsProductos("T27") & ", " & rsProductos("T28") & ", " & rsProductos("T29") & ", " & rsProductos("T30"))
		rsProductos.Close
		Set rsProductos =  Nothing
	Next 'i
Aunque es lo mismo que te puso Myakire pero mas tedioso...

Tu decides cual te convenga mas!

Saludos!
Si lo he intentado y lo he modificado algo asi,,
[CODE]
<%
set rsRef1 = Server.CreateObject("ADODB.Connection")
rsRef1.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("pedidos.mdb"))
set rsRef = server.createobject("adodb.recordset")


tablo = "SELECT distinct ref FROM detalle"
rsRef.pagesize = 12000
rsRef.open tablo,rsRef1,1,3

'Obtenemos los codigos distinct ref:
EsPrimero = True
Do While NOT rsRef.EOF
If rsRef("ref") <> Referencias Then
If EsPrimero = False Then Referencias = Referencias & ","
Referencias = Referencias & rsRef("ref")
EsPrimero = False
End If
rsRef.MoveNext
Loop
Referencias = Split(Referencias, ",", -1, 1)

'Ahora por cada referencia hacemos una consulta:
For i=1 to uBound(Referencias)
Set rsProductos = Server.CreateObject("ADODB.Recordset")
tablox = "SELECT color, Count([T27]), SUM([T28]), SUM([T29]), SUM([T30]) from detalle WHERE distinct ref=" & Referencias(i)
rsProductos.open tablox,rsProductos,1,3
Response.Write(rsProductos("color") & ", " & rsProductos("T27") & ", " & rsProductos("T28") & ", " & rsProductos("T29") & ", " & rsProductos("T30"))
rsProductos.Close
Set rsProductos = Nothing
Next 'i
%>[CODE]

pero el iis me da el siguiente error!

Tipo de error:
ADODB.Recordset (0x800A0BB9)
Argumentos incorrectos, fuera del intervalo permitido o en conflicto con otros.
/asp/mhl/xxxx2.asp, línea 28

la linea 28 es:

rsProductos.open tablox,rsProductos,1,3

que enredo que me estoy haciendo,,
  #11 (permalink)  
Antiguo 09/04/2008, 14:17
 
Fecha de Ingreso: abril-2003
Ubicación: Bogota
Mensajes: 28
Antigüedad: 21 años, 2 meses
Puntos: 0
Re: Proplema con CInt

Gracias por tu ayuda i_e_s27!

Alguien mas tiene ideas que me puedan ayudar,, aun no he logrado hacer el resumen!
  #12 (permalink)  
Antiguo 09/04/2008, 14:28
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: Proplema con CInt

ya corriste la instrucción que te puse en tu BD?
  #13 (permalink)  
Antiguo 09/04/2008, 14:33
 
Fecha de Ingreso: abril-2003
Ubicación: Bogota
Mensajes: 28
Antigüedad: 21 años, 2 meses
Puntos: 0
Re: Proplema con CInt

Hola estoy en eso,,, estoy haciendo algo asi, haber que opinas:

Código:
<%
codigox = "Pendiente"
set mertbaglan = Server.CreateObject("ADODB.Connection")
mertbaglan.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("pedidos.mdb"))
set mertgaleri = server.createobject("adodb.recordset")

IdMensaje = Request.QueryString("act")
usuario = Trim(Request.Cookies("brunettcliente")("usuario"))

tablo = "Select ref, color, Count([27]), SUM([28]), SUM([29]), SUM([30]) from detalle  WHERE xcodigo='"&codigox&"' group by ref, color"
mertgaleri.open tablo,mertbaglan,1,3

if request.QueryString("s")="" or request.querystring("s")=0 then
	s=1
else
	s=request.QueryString("s")
end if
mertgaleri.AbsolutePage = s


ref = mertgaleri("ref")
%>

<%=mertgaleri("ref")%> - <%=mertgaleri("color")%>:
 - <%=T28%> - <%=T29%> - <%=T30%><br />
  #14 (permalink)  
Antiguo 09/04/2008, 14:37
Avatar de i_e_s27  
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 208
Antigüedad: 16 años, 2 meses
Puntos: 5
Re: Proplema con CInt

Haz lo que te dijo Myakire!!

Aca te muestro como implementarlo:

Código:
	Set Conexion = Server.CreateObject("ADODB.Connection")
	Conexion.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("pedidos.mdb"))
	
	Set rsRef = Server.CreateObject("ADODB.Recordset")
	strSQLrsRef = "SELECT distinct ref, color, SUM([T27]), SUM([T28]), SUM([T29]), SUM([T30]) FROM detalle GROUP BY distinct ref"
	rsRef.Open strSQLrsRef, Conexion, 1, 3
	
	'Hago un loop mostrando la informacion:
	Do While NOT rsRef.EOF
		Response.Write("Referencia: " & rsRef("distinct ref") & VbCrLf)
		Response.Write("Color: " & rsRef("color") & VbCrLf)
		Response.Write("Cantidad de Talles 27: " & rsRef("T27") & VbCrLf)
		Response.Write("Cantidad de Talles 28: " & rsRef("T28") & VbCrLf)
		Response.Write("Cantidad de Talles 29: " & rsRef("T29") & VbCrLf)
		Response.Write("Cantidad de Talles 30: " & rsRef("T30") & VbCrLf)
		Response.Write(VbCrLf & VbCrLf)
		rsRef.MoveNext
	Loop
	
	'Cierro el RecordSet y la Conexion y lebero memoria:
	rsRef.Close
	Set rsRef = Nothing
	
	Conexion.Close
	Set Conexion = Nothing
  #15 (permalink)  
Antiguo 09/04/2008, 14:41
 
Fecha de Ingreso: abril-2003
Ubicación: Bogota
Mensajes: 28
Antigüedad: 21 años, 2 meses
Puntos: 0
Re: Proplema con CInt

hola,,, ok, lo corri como me lo enviaste con este codigo

Código:
<%
Set Conexion = Server.CreateObject("ADODB.Connection")
	Conexion.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("pedidos.mdb"))
	
	Set rsRef = Server.CreateObject("ADODB.Recordset")
	strSQLrsRef = "SELECT distinct ref, color, SUM([27]), SUM([28]), SUM([29]), SUM([30]) FROM detalle GROUP BY distinct ref"
	rsRef.Open strSQLrsRef, Conexion, 1, 3
	
	'Hago un loop mostrando la informacion:
	Do While NOT rsRef.EOF
		Response.Write("Referencia: " & rsRef("distinct ref") & VbCrLf)
		Response.Write("Color: " & rsRef("color") & VbCrLf)
		Response.Write("Cantidad de Talles 27: " & rsRef("27") & VbCrLf)
		Response.Write("Cantidad de Talles 28: " & rsRef("28") & VbCrLf)
		Response.Write("Cantidad de Talles 29: " & rsRef("29") & VbCrLf)
		Response.Write("Cantidad de Talles 30: " & rsRef("30") & VbCrLf)
		Response.Write(VbCrLf & VbCrLf)
		rsRef.MoveNext
	Loop
	
	'Cierro el RecordSet y la Conexion y lebero memoria:
	rsRef.Close
	Set rsRef = Nothing
	
	Conexion.Close
	Set Conexion = Nothing
	%>
pero cuando intento abrirlo me sale el siguiente error:


Tipo de error:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Controlador ODBC Microsoft Access] Error de sintaxis (falta operador) en la expresión de consulta 'distinct ref'.
/asp/mhl/xxxx.asp, línea 7
  #16 (permalink)  
Antiguo 09/04/2008, 14:55
Avatar de i_e_s27  
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 208
Antigüedad: 16 años, 2 meses
Puntos: 5
Re: Proplema con CInt

Mmm eso creo que es porque utilizas espacios en el nombre del campo... pueba poniendolo entre corchetes:

[distinct ref]

Y otra cosa... yo te habia puesto:

SUM([T27]), SUM([T28]), SUM([T29]), SUM([T30]

Porque supuse que asi se llaman tus campos

Vos pusiste:

SUM([27]), SUM([28]), SUM([29]), SUM([30]


Aunque no estoy muy seguro...

Como veras mis conocimientos no son los mas completos por este foro

Aver que dicen los Masters, que me corrijan, asi yo tmb aprendo
  #17 (permalink)  
Antiguo 09/04/2008, 14:59
 
Fecha de Ingreso: abril-2003
Ubicación: Bogota
Mensajes: 28
Antigüedad: 21 años, 2 meses
Puntos: 0
Re: Proplema con CInt

Je, pero igual poco a poco vamos llegando a la solucion,,,,, Alguien que sepa por que sale este error??????
  #18 (permalink)  
Antiguo 09/04/2008, 15:57
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: Proplema con CInt

solo como observacion al codigo que has puesto
esto va asi
Cita:
strSQLrsRef = "SELECT distinct ref, color, SUM([27]), SUM([28]), SUM([29]), SUM([30]) FROM detalle GROUP BY distinct ref"
deberia ir asi que no ???
Cita:
strSQLrsRef = "SELECT distinct ref, color, SUM([27]), SUM([28]), SUM([29]), SUM([30]) FROM detalle GROUP BY ref"
intenta nuevamente
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #19 (permalink)  
Antiguo 09/04/2008, 15:59
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: Proplema con CInt

A ver, veamos.

El error es por que tienes esto:

Cita:
strSQLrsRef = "SELECT distinct ref, color, SUM([T27]), SUM([T28]), SUM([T29]), SUM([T30]) FROM detalle GROUP BY distinct ref"
Y por lo menos que yo sepa, no puedes usar un distinct en el GROUP BY .

Segundo, en el código que inicialmente dices que intentaste hacer colocaste esto:

Cita:
tablo = "Select ref, color, Count([27]), SUM([28]), SUM([29]), SUM([30]) from detalle WHERE xcodigo='"&codigox&"' group by ref, color"
Ahí veo que tienes un WHERE por el compo código, y según la imagen que pusiste en el post 1, el campo código no entra en ningún tipo de selección sino en el agrupamiento, Desde ahí ya no estamos bien.

Por último, lo que tuviste que haber hecho, es tomar esa instrucción SQL que te puse, y correrla en tu base de datos (no se cual sea), es decir, si es access, en una nueva consulta; si es SQL Server en el analizador de consultas; si es Oracle, desde el TOAD; si es informix desde la creación de una vista; etc. etc. etc. Y ya cuando por fin viste y comprobaste que la instrucción SELECT es exactamente lo que necesitas, entonces y solo entonces, te lanzas a codificar en un lenguaje tal como ASP.

Recuerda lo que enseñan en la escuela: primero el análisis, luego un psoudocódigo, luego la prueba de escritorio al algoritmo que hiciste y al final ya lo codificas.
  #20 (permalink)  
Antiguo 09/04/2008, 16:04
 
Fecha de Ingreso: abril-2003
Ubicación: Bogota
Mensajes: 28
Antigüedad: 21 años, 2 meses
Puntos: 0
Re: Proplema con CInt

si ya lo probe,,,,,, lo que no entiendo es que al hacerlo con este codigo me sale un nuevo error:
Código:
<%
Set Conexion = Server.CreateObject("ADODB.Connection")
	Conexion.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("pedidos.mdb"))
	
	Set rsRef = Server.CreateObject("ADODB.Recordset")
	strSQLrsRef = "SELECT distinct ref, color, SUM([27]), SUM([28]), SUM([29]), SUM([30]) FROM detalle GROUP BY ref, color"
	rsRef.Open strSQLrsRef, Conexion, 1, 3
	
	'Hago un loop mostrando la informacion:
	Do While NOT rsRef.EOF
		Response.Write("Referencia: " & rsRef("ref") & VbCrLf)
		Response.Write("Color: " & rsRef("color") & VbCrLf)
		Response.Write("Cantidad de Talles 27: " & rsRef("27") & VbCrLf)
		Response.Write("Cantidad de Talles 28: " & rsRef("28") & VbCrLf)
		Response.Write("Cantidad de Talles 29: " & rsRef("29") & VbCrLf)
		Response.Write("Cantidad de Talles 30: " & rsRef("30") & VbCrLf)
		Response.Write(VbCrLf & VbCrLf)
		rsRef.MoveNext
	Loop
	
	'Cierro el RecordSet y la Conexion y lebero memoria:
	rsRef.Close
	Set rsRef = Nothing
	
	Conexion.Close
	Set Conexion = Nothing
	%>
si lo dejo asi, el error que me sale es el siguiente:

Tipo de error:
ADODB.Recordset (0x800A0CC1)
No se encontró el elemento en la colección que corresponde con el nombre o el ordinal pedido.
/asp/mhl/xxxx.asp, línea 13

lo cual me parece muy extra~no, ya que el campo 27 si existe en la base de datos!!

y si hago la consulta con :
strSQLrsRef = "SELECT distinct ref, color, SUM([27]), SUM([28]), SUM([29]), SUM([30]) FROM detalle GROUP BY ref"

me sale el siguiente error:

Tipo de error:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Controlador ODBC Microsoft Access] Ha intentado ejecutar una consulta que no incluye la expresión especificada 'color' como parte de una función de agregado.
/asp/mhl/xxxx.asp, línea 7
  #21 (permalink)  
Antiguo 09/04/2008, 16:42
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: Proplema con CInt

DEBES colocar todos los campos simples del SELECT en la instrucción GROUP BY. Eso es normal.

¿No que ya habías corrido la sentencia en la BD?

Si la hubieras corrido te hubiera marcado el error desde el inicio de todo esto. Y es que tengo duda sobre la sintaxis para usar campos que solo tengan números en su nombre.

¿que bd usas?, digo, si la tengo instalada, para probar
  #22 (permalink)  
Antiguo 09/04/2008, 16:43
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: Proplema con CInt

vayamos por partes (dr Yekill )....

realiza la consulta lo mas simple posible para saber si funciona, primero con pocos campos, asi vas descubriendo donde esta el error
Cita:
strSQLrsRef = "SELECT distinct ref, color, SUM([27]) FROM detalle WHERE xcodigo='"&codigox&"' GROUP BY ref"
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #23 (permalink)  
Antiguo 09/04/2008, 17:00
 
Fecha de Ingreso: abril-2003
Ubicación: Bogota
Mensajes: 28
Antigüedad: 21 años, 2 meses
Puntos: 0
Re: Proplema con CInt

uupaa, pues iba intentando todo lo que me decian,,, por eso va el tema hasta aqui!!

la que uso es access!

y ya lo probe pero sigue dando el mismo error,, la sentencia que le doy es:

strSQLrsRef = "SELECT distinct ref, color, count([27]), SUM([28]), SUM([29]), SUM([30]) FROM detalle GROUP BY ref, color, 27, 28, 29, 30"
  #24 (permalink)  
Antiguo 09/04/2008, 17:54
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: Proplema con CInt

creo que no te quedara mas que cambiar los nombres de los campos
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #25 (permalink)  
Antiguo 09/04/2008, 18:23
 
Fecha de Ingreso: abril-2003
Ubicación: Bogota
Mensajes: 28
Antigüedad: 21 años, 2 meses
Puntos: 0
Re: Proplema con CInt

tu crees???

no entiendo por q me sale este error, es muy raro!
  #26 (permalink)  
Antiguo 09/04/2008, 18:56
Avatar de i_e_s27  
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 208
Antigüedad: 16 años, 2 meses
Puntos: 5
Re: Proplema con CInt

Cita:
Iniciado por Shiryu_Libra Ver Mensaje
creo que no te quedara mas que cambiar los nombres de los campos
Yo tmb creo que es como dice Shiryu_Libra...

Que pierdes con probar?

Cambia los campos 27, 28, 29 y 30 por, por ejemplo:

talle_27, talle_28, talle_29, talle_30

o mejor aun:

talle_veintisiete, talle_veintiocho, talle_veintinueve, talle_treinta

Y luego utiliza:

strSQLrsRef = "SELECT DISTINCT ref, color, SUM(talle_veintisiete), SUM(talle_veintiocho), SUM(talle_veintinueve), SUM(talle_treinta
) FROM detalle GROUP BY ref"

Saludos!
  #27 (permalink)  
Antiguo 10/04/2008, 07:09
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: Proplema con CInt

Yo diría que nos diéramos una vuelta por un manual de SQL, igual si tenemos problemas con esto no es de extrañarse que las tengamos en un futuro con consultas con relaciones, subconsultas o filtros en los grupos. Intentar emular el resultado de una consulta mediante programación no es lo más óptimo, necesariamente necesitamos mas o menos dominar el tema del SQL.

Cambio y fuera

Suerte
  #28 (permalink)  
Antiguo 10/04/2008, 10:35
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: Proplema con CInt

Cita:
Iniciado por Myakire Ver Mensaje
....

Cambio y fuera

Suerte
Roger 10-4 para tu 17 Sensei
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #29 (permalink)  
Antiguo 14/04/2008, 16:10
 
Fecha de Ingreso: febrero-2004
Ubicación: horcon
Mensajes: 133
Antigüedad: 20 años, 4 meses
Puntos: 1
Re: Agrupar los resultados

Yo creo que lo mas optimo seria agrupar los datos desde el sql

select campo1 , campo 2 , sum(valor1) as valor1 ,sum(valor2) as valor2 ,sum(valor3) as valor3, sum(valor4) as valor4
from tabla
group by campo1 , campo 2 order by campo1

espero que te sirvas
__________________
pato
  #30 (permalink)  
Antiguo 15/04/2008, 01:04
Avatar de i_e_s27  
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 208
Antigüedad: 16 años, 2 meses
Puntos: 5
Re: Agrupar los resultados

NO A LOS TEMAS REPETIDOS: http://www.forosdelweb.com/f15/propl...n-cint-574261/
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:09.