Necesito ayuda sobre una tabla de cota y volumen
Hola buenos días:
Tengo una tabla con tres campos nombre, cota y volumen. Necesito hacer una consulta que introduzcas un volumen y te devuelva la cota correspondiente.
Todo funciona bien mientras introduzcas un volumen que se encuentre en la tabla, el problema viene cuando introduces un volumen que no, que se muestra una tabla vacía.. Son números con millones y decimales, por lo que es difícil acertar.. Por lo que me gustaría que buscara el volumen más cercano.. Y me mostrase esa cota...
Muchas gracias
Tengo una tabla con tres campos nombre, cota y volumen. Necesito hacer una consulta que introduzcas un volumen y te devuelva la cota correspondiente.
Todo funciona bien mientras introduzcas un volumen que se encuentre en la tabla, el problema viene cuando introduces un volumen que no, que se muestra una tabla vacía.. Son números con millones y decimales, por lo que es difícil acertar.. Por lo que me gustaría que buscara el volumen más cercano.. Y me mostrase esa cota...
Muchas gracias
1 Respuesta
Respuesta de nilharto
1
1
Pues es un poco complicado lo que me pides, ya que tenemos que hacer consultas concretas, pero se me ocurre una cosa,
podemos hacer varias consultas e insertarlas en una macro, ¿y qué esa macro actúe con un botón en un formulario ok? En esta macro vamos a introducir varias consultas ya creadas anteriormente, y que se ejecuten según un criterio.
no se si tus datos son muy grandes o muy pequeños, asi que una instruccion podria ser
select volumen
from tabla
where volumen between (volumen-10000) AND (volumen+10000)
es decir que encuentre volumenes entre esos dos valores.
if volumen is null ( si volumen es nulo, que haga otra consulta igual que antes pero cambia el between
where volumen between (volumen-100000) AND (volumen+100000)
Y así hasta que sea una consulta demasiado grande y te salgan muchos.
podemos hacer varias consultas e insertarlas en una macro, ¿y qué esa macro actúe con un botón en un formulario ok? En esta macro vamos a introducir varias consultas ya creadas anteriormente, y que se ejecuten según un criterio.
no se si tus datos son muy grandes o muy pequeños, asi que una instruccion podria ser
select volumen
from tabla
where volumen between (volumen-10000) AND (volumen+10000)
es decir que encuentre volumenes entre esos dos valores.
if volumen is null ( si volumen es nulo, que haga otra consulta igual que antes pero cambia el between
where volumen between (volumen-100000) AND (volumen+100000)
Y así hasta que sea una consulta demasiado grande y te salgan muchos.
La tabla tiene la siguiente estructura:
Cota - volumen
------------------------
100 - 5000
101 - 5400
102 - 6000
103 - 6500
104 - 7800
105 - 8000
Entonces cuando introduzco por ejemplo volumen= 6500 la consulta me muestra la siguiente tabla..
Cota - volumen
----------------------
103 - 6500
El problema esta si introduzco el 7900 que no se encuentra en la tabla, y la consulta muestra una tabla en blanco y am i me gustaría que me mostrara el más cercano o el anterior y el siguiente:
Cota - volumen
------------------------
104 - 7800
105 - 800
¿Me entiendes el problema ahora?
Cota - volumen
------------------------
100 - 5000
101 - 5400
102 - 6000
103 - 6500
104 - 7800
105 - 8000
Entonces cuando introduzco por ejemplo volumen= 6500 la consulta me muestra la siguiente tabla..
Cota - volumen
----------------------
103 - 6500
El problema esta si introduzco el 7900 que no se encuentra en la tabla, y la consulta muestra una tabla en blanco y am i me gustaría que me mostrara el más cercano o el anterior y el siguiente:
Cota - volumen
------------------------
104 - 7800
105 - 800
¿Me entiendes el problema ahora?
Pero eso en access es complicado amigo, ¿probaste lo que te comente?
También se me ocurre que pruebes, en vez de igualar en la consulta, usar el mayor que ">" y menor que "<"
Yo te puedo crear la consulta que te devuelva el siguiente más mayor o el siguiente más pequeño, pero no los dos a la vez
También se me ocurre que pruebes, en vez de igualar en la consulta, usar el mayor que ">" y menor que "<"
Yo te puedo crear la consulta que te devuelva el siguiente más mayor o el siguiente más pequeño, pero no los dos a la vez
Bueno con uno de los dos me valdría... y seria perfecto porque llegados a este punto.. cualquier cosa me vale.. mi trabajo depende de esto.. asique si me pudieras crear esa consulta te lo agradecía con todas mis fuerzas..
espero tu respuesta.. ahh! Y soy una chica jajaja :D
espero tu respuesta.. ahh! Y soy una chica jajaja :D
Jajaja entonces amiga, sorry
Bueno vamos a ello, la consulta( en SQL) sería esta, luego tu la modificas para que valga para access(solo tienes que cambiar el nombre de los campos por algo que quede tal que así:: [nombretabla].[nombrecampo)]
Creo que podemos conseguir que recoja los 3 mayores y los tres menores con una anidación, ¿espero qué access la coja ok? ¿Supongamos qué en tu formulario el volumen le escribes en un campo denominado VOL ok?
Select Volumen, Cota
from nombredetutabla
where Volumen > vol
order by Volumen desc
limit 3
UNION
Select Volumen, Cota
from nombredetutabla
where Volumen < vol
order by Volumen asc
Limit 3
Bueno vamos a ello, la consulta( en SQL) sería esta, luego tu la modificas para que valga para access(solo tienes que cambiar el nombre de los campos por algo que quede tal que así:: [nombretabla].[nombrecampo)]
Creo que podemos conseguir que recoja los 3 mayores y los tres menores con una anidación, ¿espero qué access la coja ok? ¿Supongamos qué en tu formulario el volumen le escribes en un campo denominado VOL ok?
Select Volumen, Cota
from nombredetutabla
where Volumen > vol
order by Volumen desc
limit 3
UNION
Select Volumen, Cota
from nombredetutabla
where Volumen < vol
order by Volumen asc
Limit 3
Después del mayor o del menor pon un igual, para que si escribes el dato y coincide con la tabla te lo escriba
De verdad te sigo agradeciendo muchisisisismo tu interés y tu paciencia conmigo :D
El volumen no lo escribo en ningún campo.. al ejecutar el formulario creado con la consulta que busca los volumen me salta una ventanita emergente que me lo pide.. por lo cual no se si se almacenara en algún lado...
El volumen no lo escribo en ningún campo.. al ejecutar el formulario creado con la consulta que busca los volumen me salta una ventanita emergente que me lo pide.. por lo cual no se si se almacenara en algún lado...
675... ja ja por ahora te has ganado eso... :D :D es broma también... puedo darte el msn si quieres xD!
Ah! Todavía no se si funciona.. estoy en ello.. pero todo esto tiene que ser si no encuentra el dato.. si lo encuentra con mostrarme ese me llega..
Bueno es cierto, puedes ponerlo en un formulario o sino access te lo pedirá en una ventana... nosotros con esa consulta, mostraremos 6 resultados, el primero puede que coincida o puede que no, pero te va a aparecer, ¿luego el problema se soluciona no?
Venga que ya queda poco, lo vamos a conseguir
Venga que ya queda poco, lo vamos a conseguir
Presiento que me acabas mandando a la mierda.. :D :D :D :¿D
haber la consulta SQL donde la pongo? Porque ahora ai un problema.. haber como te lo explico... yo tengo la consulta con el nombre cota y volumen y en el criterio de volumen [Introduce:] lo que provoca que al ejecutar esta consulta salga una ventana emergente donde introducir el volumen que buscara.. entonces si lo encuentra lo muestra.. pero si no volumen es =0 cota=0 y nombre=""
entonces no se onde poner la consulta sql porque si la pongo en el formu, tendría que volver a meter el volumen, porque ya valdría 0... y en la consulta que tengo esto:
SELECT Embalses.Nombre, Embalses.Cota, Embalses.Volumen
FROM Embalses
WHERE (((Embalses.Nombre)="barcena") AND ((Embalses.Volumen)=[Introduce un volumen: ]))
¿Cómo ago? ¿Podrías acoplarme tu sentencia SQL a esta mía para que me lo muestre si es 0?
haber la consulta SQL donde la pongo? Porque ahora ai un problema.. haber como te lo explico... yo tengo la consulta con el nombre cota y volumen y en el criterio de volumen [Introduce:] lo que provoca que al ejecutar esta consulta salga una ventana emergente donde introducir el volumen que buscara.. entonces si lo encuentra lo muestra.. pero si no volumen es =0 cota=0 y nombre=""
entonces no se onde poner la consulta sql porque si la pongo en el formu, tendría que volver a meter el volumen, porque ya valdría 0... y en la consulta que tengo esto:
SELECT Embalses.Nombre, Embalses.Cota, Embalses.Volumen
FROM Embalses
WHERE (((Embalses.Nombre)="barcena") AND ((Embalses.Volumen)=[Introduce un volumen: ]))
¿Cómo ago? ¿Podrías acoplarme tu sentencia SQL a esta mía para que me lo muestre si es 0?
Vale, te rehago la consulta
SELECT Embalses.Nombre, Embalses.Cota, Embalses.Volumen
FROM Embalses
WHERE (Embalses.Volumen)>[Introduce un volumen: ]
ORDER BY (Embalses. Volumen)
Limit 3
Union
SELECT Embalses.Nombre, Embalses.Cota, Embalses.Volumen
FROM Embalses
WHERE (Embalses.Volumen)<[Introduce un volumen: ]
ORDER BY (Embalses. Volumen)
Limit 3
Dios quiera que funcione, puede que te pida introducir el volumen 2 veces... si no quieres que pase eso deberíamos insertar un campo volumen en un formulario para que quede ahí guardado.. pero bueno de momento mientras la SQL funcione me doy por satisfecho.
Todavía estoy esperando tu teléfono... tututut jejejeje
SELECT Embalses.Nombre, Embalses.Cota, Embalses.Volumen
FROM Embalses
WHERE (Embalses.Volumen)>[Introduce un volumen: ]
ORDER BY (Embalses. Volumen)
Limit 3
Union
SELECT Embalses.Nombre, Embalses.Cota, Embalses.Volumen
FROM Embalses
WHERE (Embalses.Volumen)<[Introduce un volumen: ]
ORDER BY (Embalses. Volumen)
Limit 3
Dios quiera que funcione, puede que te pida introducir el volumen 2 veces... si no quieres que pase eso deberíamos insertar un campo volumen en un formulario para que quede ahí guardado.. pero bueno de momento mientras la SQL funcione me doy por satisfecho.
Todavía estoy esperando tu teléfono... tututut jejejeje
Acabo de llegar a casa del curro y lo primero que e exo es encender el pc para ver si habías contestado... que trauma estoy cogiendo con esto.. jajajajjaja
tu sql tiene muy buena pinta.. voy comer y cuando termine lo pruebo y te cuento.. gracias..
¿No te vale el msn? jajajaj :D que sepas que aunque no funcione tte lo doy igual por simpático :D
tu sql tiene muy buena pinta.. voy comer y cuando termine lo pruebo y te cuento.. gracias..
¿No te vale el msn? jajajaj :D que sepas que aunque no funcione tte lo doy igual por simpático :D
Que suerte tienes, yo hasta las 3 no salgo jajaja, probabemente no pueda contestarte hasta mañana, suerte con la consultita dichosa.
Un beso!
Un beso!
Ostia arta de esto.. lo voy dejar por hoy... ¿mñn a primera ahorita te cuento como me fue vale?
Te estoy muy muy agradecida ;)
Te estoy muy muy agradecida ;)
Hola... probé tu consulta y con un pequeño retoque conseguí lo que quería.. en Access LIMIT no existe es SELECT TOP... y en vez de 3 puse 1 así obtengo lo que necesito el anterior y el siguiente..
Ahora necesito operar con estos resultados.. es decir: restarlos, multiplicarlos,... entre ellos... pero bueno e pensado que hago una consulta con esta consulta que me as hecho y solucionado... :D :D :D
Ah! Y todo esto es así en una BD de prueba que hice para probar estas movidas... ahora ai que pasarlo a la buena que estoy temblando jajajaj :D :D
Pero a pesar de todos mis males GRACIAS
Ahora necesito operar con estos resultados.. es decir: restarlos, multiplicarlos,... entre ellos... pero bueno e pensado que hago una consulta con esta consulta que me as hecho y solucionado... :D :D :D
Ah! Y todo esto es así en una BD de prueba que hice para probar estas movidas... ahora ai que pasarlo a la buena que estoy temblando jajajaj :D :D
Pero a pesar de todos mis males GRACIAS
Hola amigo:
PROBLEMA: el resultado de tu consulta es la cota-volumen ANTERIOR y la cota-volumen SIGUIENTE al volumen introducido por el usuario... pero, ¿cómo puedo guardar el también el volumen introducido por el usuario? Lo necesito para realizar las operaciones ;)
PROBLEMA: el resultado de tu consulta es la cota-volumen ANTERIOR y la cota-volumen SIGUIENTE al volumen introducido por el usuario... pero, ¿cómo puedo guardar el también el volumen introducido por el usuario? Lo necesito para realizar las operaciones ;)
Podías crearte un formulario con los campos que tienes que rellenar a la tabla y un botón que llame a una macro o una consulta de actualiacion, en la macro o en la consulta tienes que poner la consulta para que añada el registro.. ahora mismo no me acuerdo pero lo puedo mirar
Ya lo tengo solucionado, te lo explicaría pero es una rayada enorme.. jajajajajjaja esta gente va a volverme loca... :D :D
Bueno me alegro haberte ayudado, mi correo es [email protected] para lo que neesites
¿Te puedo hacer una pregunta más? Pero esto ya como curiosidad personal:
Cuando ponemos:
SELECT Embalses.Nombre, Embalses.Cota, Embalses.Volumen
FROM Embalses
WHERE (Embalses.Volumen)>[Introduce un volumen: ]
¿Cómo sabe que lo que estas introduciendo son datos de volumen y no de otro campo? Me sera útil más adelante cuando realice estas operaciones con otras tablas :S
Gracias por todo ahora mismo te agrego mua :D
Cuando ponemos:
SELECT Embalses.Nombre, Embalses.Cota, Embalses.Volumen
FROM Embalses
WHERE (Embalses.Volumen)>[Introduce un volumen: ]
¿Cómo sabe que lo que estas introduciendo son datos de volumen y no de otro campo? Me sera útil más adelante cuando realice estas operaciones con otras tablas :S
Gracias por todo ahora mismo te agrego mua :D
- Compartir respuesta
- Anónimo
ahora mismo