Access - La selec maldita:)

   
Vista:

La selec maldita:)

Publicado por alberto (9 intervenciones) el 14/09/2010 16:46:54
Mi problema es con una selec de un programa q estoy haciendo para una lista de espera del lugar donde trabajo.
Esta selec debe mostrar todos los niños nacidos despues del 2005, y ordenado desdentemente por fecha de inscripcion.Mi problema es que esta primera selec deberia mostrar una columna donde aparezca el numero que ocupa, q ese a su vez seria el numero que tendria en la lista de espera(una cosa como un rownumber en Transact-SQL).Despues con la selec principal extraeria el usuario que quiero a traves del apellido y su numero.
Aqui os dejo lo que he consiguio hasta ahora,os agradeceria vuestra colaboracion.
Un saludo alberto.


SELECT *
FROM [SELECT *
FROM prueba
WHERE (((prueba.fechanacimiento)>#1/1/2005#))
ORDER BY prueba.fechainscripcion]. AS [%$##@_Alias]
WHERE ((([prueba].[nombre])="gomez revuelta josema"));
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:La selec maldita:)

Publicado por elias (405 intervenciones) el 15/09/2010 08:57:55
Hola,

¿has probado a hacer una select de select?

seria algo asi

select........where (select........)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:La selec maldita:)

Publicado por alberto (9 intervenciones) el 15/09/2010 12:32:36
Hola elias gracias por contestar ,no se muy bien que me quieres decir ,si ves la selec que he subido ya hago una subselec.
Un saludo alberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:La selec maldita:)

Publicado por alberto (9 intervenciones) el 15/09/2010 12:32:41
Hola elias gracias por contestar ,no se muy bien que me quieres decir ,si ves la selec que he subido ya hago una subselec.
Un saludo alberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:La selec maldita:)

Publicado por mi menda (1111 intervenciones) el 15/09/2010 19:10:09
Hola:
Sí a lo que te refieres es a enumerar correlativamente en un campo los registros prueba creando un campo de esta forma:

DCount("CampoId","NombreTabla","CampoId >=" & [CampoId]) AS Orden

Donde CampoId será el nombre del campo con clave principal.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:La selec maldita:)

Publicado por alberto (9 intervenciones) el 16/09/2010 11:24:29
MI menda jeje funciono bien ,cree el campo campoid y funciono correctamente.
Oye muchas gracias por tu solucion.
Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:La selec maldita:)

Publicado por alberto (9 intervenciones) el 16/09/2010 15:53:47
Mi menda tengo un problemilla cuando se ejecuta la sentencia donde esta el dcount pasa lo siguiente:
1-(si ordeno prueba.fechainscripcion desc ) osea de forma descendente me aparece la columna orden(la del dcount) bien es decir primer registro 1 ,segundo 2...., pero en el caso dos:

2-(si ordeno prueba.fechainscripcion desc ) que es lo que quiero ya que quiero que el uno sea el que primero se inscribio,(tengo 20 usuarios ),pues me sale el primer registro 20 ,segundo 19.... es decir el ultimo qu ese inscribio tine el numero mayor.

He probao cambiando los operadores (CampoId >=" & CampoId) pero me salen cosas muy rara.


SELECT tabla1.orden, tabla1.nombre,tabla1.fechainscripcion
FROM [

SELECT DCount("CampoId","prueba","CampoId >=" & CampoId) AS Orden, *
FROM prueba
WHERE (((prueba.fechanacimiento)>#1/1/2005#))
ORDER BY prueba.fechainscripcion asc
]. AS [tabla1]

WHERE ((([tabla1].[nombre])="gomez revuelta josema"))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:La selec maldita:)

Publicado por mi menda (1111 intervenciones) el 17/09/2010 10:03:29
Hola
Tendría que funcionar cambiando los operadores según ordenes, sí ordenas de forma ascendente el operador tendría que ser <=

DCount("CampoId","prueba","CampoId <=" & CampoId) AS Orden

Doy por supuesto que el campoId será un número correlativo con respecto a la FechaInscripcion.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:La selec maldita:)

Publicado por alberto (9 intervenciones) el 17/09/2010 15:30:09
Mii menda cuando pongo la sentencia como me lo has puesto tu <= la columna
orden me sale con los mismos numero que campoid (que es autonumerico).

Orden Nombre
4 sanchez mantel africa
5 gomez revuelta josema
6 gomez revelta josema

fechainscripcion fechanacimiento
02/04/2010 03/05/2005
02/05/2010 03/06/2006
03/05/2010 03/05/2006

campoid
4
5
6
Gtracias por tu ayuda tio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:La selec maldita:)

Publicado por mi menda (1111 intervenciones) el 20/09/2010 20:00:53
Hola:
La verdad es que no entiendo como quieres ordenar, que salgan ordenados igual que el campo autonumérico es simple casualidad, si eliminas un registro el campo autonumérico dejara de ir correlativo mientras que el campo orden seguirá siendo correlativo. Si explicas mejor como quieres el campo orden quizás saquemos algo.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:La selec maldita:)

Publicado por alberto (9 intervenciones) el 23/09/2010 10:43:13
Hola menda gracias por contestar ,voy a intentar explicar lo que quiero:

SELECT DCount("CampoId","prueba","CampoId >= " & CampoId) AS Orden, *
FROM prueba
WHERE (((prueba.fechanacimiento)>#1/1/2005#))
ORDER BY prueba.fechainscripcion;

Esta select devuelve la siguiente tabla:

Orden Nombre fechainscripcion fechanacimiento grupo campoid
3 sanchez mantel africa 02/04/2010 03/05/2005 4
2 gomez revuelta josema 02/05/2010 03/06/2006 5
1 gomez revelta josema 03/05/2010 03/05/2006 6

El problema esta en que el registro 3 el de sanchez mantel africa es el numero tres y para mi programa deberia ser el 1, esto es pq de las tres fechas es la que se apunto primero es decir es la primera persona que tenemos que llamar ,ya que esto es un programade lista de espera para el lugar donde trabajo.
Es decir me tiene que dar el numero que ocupa esa persona comprendido en una edad por orden de inscripcion.

Si cambio el operador (,"CampoId <= ") de sitio me da el siguiente resultado:

Orden Nombre fechainscripcion fechanacimiento grupo campoid
4 sanchez mantel africa 02/04/2010 03/05/2005 4
5 gomez revuelta josema 02/05/2010 03/06/2006 5
6 gomez revelta josema 03/05/2010 03/05/2006 6

Y si lo ordeno descendentemente me da el mismo resultado de arriba pero pero en el orden 1,2,3 pero los registros tienen el mismo numero.

Agradecerte otra vez tu colaboracion,un saludo alberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:La selec maldita:)

Publicado por mi menda (1111 intervenciones) el 23/09/2010 11:53:53
Hola:
El dominio de la función DCount() tiene que ser la misma consulta en vez de la Tabla

DCount("CampoId","NombreConsulta","CampoId <= " & CampoId)

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:La selec maldita:)

Publicado por mi menda (1111 intervenciones) el 23/09/2010 12:35:25
Hola
He estado probando y lo mejor para posibles errores debido al campo autonumérico, es convertir la fecha de inscripción a Entero largo y ordenar por este,

SELECT DCount("*","NombreConsulta","CLng( [FechaInscripcion] )<=" & CLng([FechaInscripcion])) AS Orden, *
FROM Prueba
WHERE (((Prueba.FechaNacimiento)>#1/1/2005#))
ORDER BY Prueba.FechaInscripcion;

Con lo que ahora sí no necesitas el campo autonumérico lo puedes quitar.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:La selec maldita:)

Publicado por alberto (9 intervenciones) el 24/09/2010 20:52:25
Funciona a la perfeccion gracias tio.
Se que es abusar pero sabrias como traducirlo para que visual basic lo coja,es q el dcount me da problemas .
un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:La selec maldita:)

Publicado por mi menda (1111 intervenciones) el 27/09/2010 18:23:49
Hola
Pues yo no soy ningún fiera del SQL, pero como la función dcount ordena por lo filtrado en la consulta, tendrás que conservar la consulta pero sín la función dcount.
Luego en visual basic podría quedar así:

ssql = "SELECT DCount('*','Consulta1','CLng( [FechaInscripcion] )<='" _
& "& CLng([FechaInscripcion])) AS Orden,* FROM Consulta1"

aunque no se lo que querrás, porque te puede valer la consulta y luego asignarla por código:

Me.Lista0.Rowsource = "Consulta1"

Aunque seguramente se podrá hacer toda la SQL por código, yo no sé como se haría.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:La selec maldita:)

Publicado por alberto (9 intervenciones) el 29/09/2010 22:26:39
Lo miro en el foro de visual basic y te lo pongo por aqui para que lo veas .
Gracias menda jejejj
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar