Me hace falta numerar una select ordenada con order bby de la siguiente forma:
Nombre grupo numero
------- ----- -------
Alberto a1 1
jesus a1 2
juama a1 3
santi b1 1
jose b1 2
juan b1 3
pepe b1 4
Espero me podais ayudar una saludo.
Me hace falta numerar una select ordenada con order bby de la siguiente forma:
Nombre grupo numero
------- ----- -------
Alberto a1 1
jesus a1 2
juama a1 3
santi b1 1
jose b1 2
juan b1 3
pepe b1 4
Espero me podais ayudar una saludo.
Solo se puede ejecutar una instrucción a la vez, o dependiendo si lo necesitas para cargarlos de diferentes formar:
Select * from Tabla order by Nombre
Select * from Tabla order by grupo
Select * from Tabla order by numero
Saludos!
Jeremías 17:5 Así habla el Señor:
¡Maldito el hombre que confía en el hombre
y busca su apoyo en la carne,
mientras su corazón se aparta del Señor!
17:7 ¡Bendito el hombre que confía en el Señor
y en él tiene puesta su confianza!
Creo que no me explique bien.Antes que nada me gustaria decirte dlanor que si resuelves esta select no me importaria donarte alguna cantidad q consideres justa.
A ver si me explico:
Tengo estos datos
Nombre Grupo fechainscripcion
--------- ------- -----------------
alberto a1 21/08/20004
pedro b1 22/05/2003
pepe b1 23/06/2007
ana a1 22/09/2005
lourdes a1 24/07/2007
jesus b1 24/07/2008
Estos nombres los quiero agrupar segun el tipo de grupo y ordenados segun la fecha de inscripcion.Es decir me tiene que quedar una tabla asi:
Nombre Grupo fechainscripcion orden
--------- ------- ---------------- ------- alberto a1 21/08/20004 1
ana a1 22/09/2005 2
lourdes a1 24/07/2007 3
pedro b1 22/05/2003 1
pepe b1 23/06/2007 2
jesus b1 24/07/2008 3
Mi telefono es el 639841897.Este programa es para la empresa que trabajo, soy asministrativo y no tengo mucha practica de informatica,por eso te pido ayuda y no me importaria pagar lo que me digas siempre q sea honesto ya que lo tengo que pagar yo de mi bolsillo jejje.
Siento que salgan las tablas asi, te aseguro que las pongo bien pero cuando guardo se desordenan.Espero que lo entiendas.
Decirte que mi base de datos es acces 2000 y le hago la consulta desde visual basic 6.0
Hola, solo debes usar el group by, Siendo los campos Nombre, Grupo y fechainscripcion, el codigo quedaria de la siguiente manera:
cargando los datos en un MSHFlexGrid:
Set rs = New ADODB.Recordset
rs.Open "select Nombre,Grupo ,fechainscripcion from TABLA GROUP BY Grupo,fechainscripcion ,Nombre", nc, adOpenKeyset, adLockOptimistic
Set MSHFlexGrid1.DataSource = rs
Este codigo agrupa por el campo Grupo y te los ordena por la fecha de inscripción, luego lo que he hecho es mostrarlo en un MSHFlexGrid para visualizar la consulta. A mi me funciona perfectamente, saludos!
Jeremías 17:5 Así habla el Señor:
¡Maldito el hombre que confía en el hombre
y busca su apoyo en la carne,
mientras su corazón se aparta del Señor!
17:7 ¡Bendito el hombre que confía en el Señor
y en él tiene puesta su confianza!
Saludos:
La consulta SQL seria asi:
SELECT Nombre, Grupo, fechainscripcion
FROM Tabla
GROUP BY 1,2,3
ORDER BY 2,3,1
Espero ayude.
JOSE LUIS
Exodo 20:1-17 ----> Dios NO los llamo LAS DIEZ RECOMENDACIONES.
Dlanor tio me da problemas con el nc de la select.Me dice variable no definida
He agregado una referencia que he encontrado por internet para los MSHFlexGrid1 es la microsoft data object 2.8.
Gracias por tu pronta respuesta.
Buenas, el nc es el nombre de la conexión que creaste, por ejemplo:
Public nc As New ADODB.Connection
esa fue la que yo cree para realizar el ejercicio, colola el nombre de la conexión que tu creaste, por decir algo, si tu conexión a la bd la llamaste ConexBD, que daria algo asi:
Public ConexBD As New ADODB.Connection
Set rs = New ADODB.Recordset
rs.Open "select Nombre,Grupo ,fechainscripcion from TABLA GROUP BY Grupo,fechainscripcion ,Nombre", ConexBD, adOpenKeyset, adLockOptimistic
Set MSHFlexGrid1.DataSource = rs
por otro parte tienes razon al activar la referencia microsoft data object 2.8, para que puedas utilizar el objeto MSHFlexGrid.
Espero te ayude, Saludos!
Jeremías 17:5 Así habla el Señor:
¡Maldito el hombre que confía en el hombre
y busca su apoyo en la carne,
mientras su corazón se aparta del Señor!
17:7 ¡Bendito el hombre que confía en el Señor
y en él tiene puesta su confianza!
Dlanor otra vez gracias por tu respuesta ya me funciona la conexión ado.
El problema es q la sentencia sql q me diste no devuelve lo que yo quiero.
Aver si me explico un poco mejor.Yo tengo usuarios de distintos grupos que se han inscrito en distintas fechas y q todo ello esta en una tabla desordenado.
Lo ordeno de la siguiente forma:
select [apellidos y nombre],curso,[fecha reserva] from usuarios order by curso, [fecha reserva] ;
Es decir por tipo de grupo y por fecha de inscripcion.
Mi problema esta en que a mi me hace falta saber el numero q ocupa dentro de ese tipo de grupo segun la fecha de inscripcion.
Es decir:
Tabla original
Nombre Grupo fechainscripcion
-----------------------------------------------------------------
alberto----------------------a1--------------------21/08/20004
pedro-----------------------b1--------------------22/05/2003
pepe------------------------b1--------------------23/06/2007
ana-------------------------a1--------------------22/09/2005
lourdes----------------------a1--------------------24/07/2007
jesus------------------------b1--------------------24/07/2008
Tabla de salida
Nombre Grupo fechainscripcion orden
-----------------------------------------------------------------
alberto-------------a1------------21/08/20004-------------1
ana----------------a1------------22/09/2005--------------2
lourdes-------------a1------------24/07/2007--------------3
pedro--------------b1-------------22/05/2003-------------1
pepe---------------b1-------------23/06/2007-------------2
jesus---------------b1-------------24/07/2008-------------3
Es decir lo que quiero es saber el numero que tiene dentro de una lista de espera, que es el programa que quiero hacer.
Esta consulta:
rs.Open "select Nombre,Grupo ,fechainscripcion from TABLA GROUP BY Grupo,fechainscripcion ,Nombre", ConexBD, adOpenKeyset, adLockOptimistic
te muestra el siguiente resultado:
Nombre Grupo fechainscripcion orden
-----------------------------------------------------------------
alberto-------------a1------------21/08/20004-------------1
ana----------------a1------------22/09/2005--------------2
lourdes-------------a1------------24/07/2007--------------3
pedro--------------b1-------------22/05/2003-------------1
pepe---------------b1-------------23/06/2007-------------2
jesus---------------b1-------------24/07/2008-------------3
Que es lo que entiendo que quieres hacer. En el codigo o consulta que envias estas utilizando el order by y no el GROUP BY, y no entiendo por que utilizas corchetes [, los campos no deberian tener espacios, me refiero a que deberias llamarlo fechareserva por ejemplo.
Supongamos que utilizo tu codigo el cual es:
select [apellidos y nombre],curso,[fecha reserva] from usuarios order by curso, [fecha reserva].
al yo modificarlo quedaria asi:
select [apellidos y nombre],curso,[fecha reserva] from usuarios GROUP BY curso,[fecha reserva],[apellidos y nombre].
Saludos!
Jeremías 17:5 Así habla el Señor:
¡Maldito el hombre que confía en el hombre
y busca su apoyo en la carne,
mientras su corazón se aparta del Señor!
17:7 ¡Bendito el hombre que confía en el Señor
y en él tiene puesta su confianza!
Pues dlanor algo debo estar haciendo mal pq yo ejecuto la sentencia en acces tal cual me la pones y la columna donde tiene que venir enumerado cada registro
(en la tabla de salida que te puse en la pregunta anterior la llamo orden y tiene los valores 1,2,3....) no viene.Esta columna es super importante ya que es el numero que tendra dentro de la lista de espera.
Saludos¡¡
La verdad es que tu pregunta esta muy confusa, pero ya estoy entendiendo lo que quieres hacer, bueno eso creo jeje, pues claro que no va a venir esa columna o campo debido a que yo no la estoy llamando ni generando.
Por lo que entiendo deberias hacer lo siguiente:
Teniendo 2 tablas en tu BD, una original y otra salida.
Tabla original (Desordenada completamente)
Nombre Grupo fechainscripcion
-----------------------------------------------------------------
alberto----------------------a1--------------------21/08/20004
pedro-----------------------b1--------------------22/05/2003
pepe------------------------b1--------------------23/06/2007
ana-------------------------a1--------------------22/09/2005
lourdes----------------------a1--------------------24/07/2007
jesus------------------------b1--------------------24/07/2008
Al ejecutar esta consulta en la tabla original:
select [apellidos y nombre],curso,[fecha reserva] from usuarios GROUP BY curso,[fecha reserva],[apellidos y nombre].
Te traera lo siguiente:
Consulta de salida (Ordenada segun tu Requerimiento), ojo no tabla de salida.
Nombre Grupo fechainscripcion
-----------------------------------------------------------------
alberto-------------a1------------21/08/20004
ana----------------a1------------22/09/2005
lourdes-------------a1------------24/07/2007
pedro--------------b1-------------22/05/2003
pepe---------------b1-------------23/06/2007
jesus---------------b1-------------24/07/2008
Luego debes insertar estos datos a la tabla de Salida, supongamos que mis campo en la salida los llamare Nombre, Curso, Fecha, Orden, para no utilizar los corchetes, y creando un loop para que guarde el orden por ejemplo:
Dim Campo1,Campo2,Campo3
Dim Suma as Integer
Suma=0
If rs.RecordCount > 0 Then
rs.MoveFirst
Do
Suma=Suma+1
Campo1= rs.Fields("apellidos y nombre")
Campo2= rs.Fields("curso")
Campo3= rs.Fields("fecha reserva")
nc.Execute ("INSERT INTO TablaSalida (Nombre, Curso, Fecha, Orden) VALUES ('" + Campo1 + "','" + Campo2 + "','" + Campo3 + "','" + Suma + "')")
rs.MoveNext
Loop While Not rs.EOF
End If
Algo como esto es lo que debes hacer, guardar el resultado ordenado en la segunda tabla, luego que finalize el proceso de inscripción por decir algo.
Si me equivoco, disculpa jeje.
Jeremías 17:5 Así habla el Señor:
¡Maldito el hombre que confía en el hombre
y busca su apoyo en la carne,
mientras su corazón se aparta del Señor!
17:7 ¡Bendito el hombre que confía en el Señor
y en él tiene puesta su confianza!
Claro eso decia yo, digo donde muestra la columna orden jejjje.
Con el insert que me dices veo que lo que voy a obtener es una segunda tabla
con los registros ordenados por grupo y fecha de reserva y solamente numerados del 1 hasta ... .Y lo que a mi me hace falta es que esta columna orden contenga numerado del 1 al ... de cada grupo; grupo a1-->> 1234... grupo b1-->> 1233... es decir que cada vez que cambie de grupo inicie el contador a 1.
No hay alguna forma que se pueda hacer en una select .He conseguido hacer algo que funcione casi parecido a lo que quiero con dcount lo malo que luego cuando lo paso a basic no funciona.
Un saludo dlanor gracias por tu interés otra vez ¡¡
Claro amigo, supongo que debes de conocer cuantos grupos tienes, me refiero A1, B1, C1 y hasta alli supongamos.
Yo siendo tu por facilidad crearia 3 recordset: rs, rs1, rs2, y selecciono cada grupo y lo organizo.
rs.open select [apellidos y nombre],curso,[fecha reserva] from usuarios where curso = A1 GROUP BY curso,[fecha reserva],[apellidos y nombre].
rs1.open select [apellidos y nombre],curso,[fecha reserva] from usuarios where curso = B1 GROUP BY curso,[fecha reserva],[apellidos y nombre].
rs2.open select [apellidos y nombre],curso,[fecha reserva] from usuarios where curso = C1 GROUP BY curso,[fecha reserva],[apellidos y nombre].
Esto quiere decir que tengo ordenado cada grupo por fecha, luego utilizare 3 loop:
Dim Campo1,Campo2,Campo3
Dim Suma as Integer
Suma=0
If rs.RecordCount > 0 Then
rs.MoveFirst
Do
Suma=Suma+1
Campo1= rs.Fields("apellidos y nombre")
Campo2= rs.Fields("curso")
Campo3= rs.Fields("fecha reserva")
nc.Execute ("INSERT INTO TablaSalida (Nombre, Curso, Fecha, Orden) VALUES ('" + Campo1 + "','" + Campo2 + "','" + Campo3 + "','" + Suma + "')")
rs.MoveNext
Loop While Not rs.EOF
Suma=0
rs1.MoveFirst
Do
Suma=Suma+1
Campo1= rs1.Fields("apellidos y nombre")
Campo2= rs1.Fields("curso")
Campo3= rs1.Fields("fecha reserva")
nc.Execute ("INSERT INTO TablaSalida (Nombre, Curso, Fecha, Orden) VALUES ('" + Campo1 + "','" + Campo2 + "','" + Campo3 + "','" + Suma + "')")
rs1.MoveNext
Loop While Not rs1.EOF
Suma=0
rs2.MoveFirst
Do
Suma=Suma+1
Campo1= rs2.Fields("apellidos y nombre")
Campo2= rs2.Fields("curso")
Campo3= rs2.Fields("fecha reserva")
nc.Execute ("INSERT INTO TablaSalida (Nombre, Curso, Fecha, Orden) VALUES ('" + Campo1 + "','" + Campo2 + "','" + Campo3 + "','" + Suma + "')")
rs2.MoveNext
Loop While Not rs2.EOF
End If
Creo que esto te deberia de funcionar, ya me esta cansando el tema jejejeje!
Saludos!
Jeremías 17:5 Así habla el Señor:
¡Maldito el hombre que confía en el hombre
y busca su apoyo en la carne,
mientras su corazón se aparta del Señor!
17:7 ¡Bendito el hombre que confía en el Señor
y en él tiene puesta su confianza!
Al final esta esto ultimo creo que es la unica solucion.No creo que se pueda hacer en una select jejeje.Gracias por todo dlanor.
Un saludo¡¡
Por nada, espero te funcione correctamente el codigo.
Saludos![]()
Jeremías 17:5 Así habla el Señor:
¡Maldito el hombre que confía en el hombre
y busca su apoyo en la carne,
mientras su corazón se aparta del Señor!
17:7 ¡Bendito el hombre que confía en el Señor
y en él tiene puesta su confianza!