Home > Grupos sobre Informática > Grupo de Access >

Debates de Access

> Necesito hacer una consulta en Access y no se si se puede hacer...
Grupo de Access
Grupo de Access
1 Curso online | 271 Documentos | 6 Imágenes | 11 Vídeos | 660 Debates | 9842 Miembros

Necesito hacer una consulta en Access y no se si se puede hacer...

daniel
Reparador de pc uba
Escrito por Daniel Cullari el 16/07/2009 | Nivel Medio

Muy buenas tardes...

El motivo de la apertura de este nuevo tema es el siguiente... Necesito hacer una consulta en access de una tabla, la cual tiene informacion y uno de los campos es un serial, todos los serials que se ingresan deben de contener el dígito cero (0) delante pero no es obligatorio que éste este en la base de datos... Me explico mejor tengo que ingresar un seria, el serial es: 06551234 ahora si lo ingreso yo, lo ingreso tal cual (06551234) pero como otras personas ingresan datos en la base de datos algunos lo ingresan 6551234, para explicar un poco mejor el porque de este tema, nosotros con este serial hacemos una búsqueda en otro sistema que tenenemos y todos sabemos que aunque el seria esté ingresado como 6551234 delante lleva un cero; ahora viene mi pregunta... Quisiera hacer una consulta que me perimitiera listar todos los productos (por haci decirlo) que coincidan con un serial que se ingrese, el problema es el siguiente, yo quisiera que si una persona pone por ejemplo 6 como serial a buscar, que le aparezcan todos los productos que comiencen con 6 (pero también todos los que comiencen con 06) y si la persona ingresa 06 como serial a buscar que le aparezcan todo los productos que comiencen (siempre del serial hablamos) con 06 y también los que comiencen con 6... Ejemplo: al usuario le va a salir este cartel... "Ingrese serial"; ahi el usuario digita 658522 y le va a aparecer el serial junto con la descripción que asocia ese serial y si el serial en la base de datos está ingresado como 0658522 tambien le va a aparecer el serial junto con el producto asociado, ahora si la persona ingresa 6 le va a aparecer todos los serials que comienzan con 6 y también los que comienzan con 06 y lo mismo si se ingresa un serial a buscar de 06.

Quisiera saber si esto es posible...



Desde ya muchisimas gracias, cualquier cosa si no se llega a comprender lo que quiero hacer favor de avisarme y lo pongo en un ejemplo.



Muchas gracias.

compartir


Abraham Valencia
Computacion e informatica microsoft mv...
Escrito por Abraham Valencia el 18/07/2009 | Nivel Medio

Si, si es posible

Abraham


Daniel Cullari
Reparador de pc uba
Escrito por Daniel Cullari el 20/07/2009 | Nivel Medio

Buenos días Abraham Valencia , muchas gracias por tu respuesta, ahora quisiera hacerte una pregunta... Como es que puedo hacer eso? Podrias darme un ejemplo de como hacerlo? Porque hace unos días que quiero hacer esa consulta y no he podido lograrlo.

Desde ya muchas gracias.

Saludos.


Andry
Escrito por Andry el 20/07/2009 | Nivel Medio

Estimado Daniel Cullari.

La consulta debe ser así por ejemplo:

Id = Identificador del campo (autonumerico en este caso)
NombreTabla = Nombre de su tabla.
NombreCampo = Nombre del campo donde quiere buscar.

SELECT NombreTabla. Id, NombreTabla. NombreCampo FROM NombreTabla WHERE (NombreTabla. NombreCampo)="06")) OR (NombreTabla. NombreCampo)="6"));

Esto le dara los valores que comiencen con 06 y 6.

Sin más en espera de que le pueda servir de ayuda mi comentario.

Un saludo.


Daniel Cullari
Reparador de pc uba
Escrito por Daniel Cullari el 20/07/2009 | Nivel Medio

Muchas gracias por la respuesta Andry Rodríguez Pérez , pero el tema es el siguiente... En si lo del 06 o 6 fue a modo de ejemplo, o sea no son caracteres fijos, yo lo que quiero es que se le pida al usuario que ingrese un serial y si el usuario ingresa por ejemplo 05 muestre todos los serials que comiencen con 05 y también los que comiencen con 5 y si la persona ingresa 065 que se muestren los que comienzan con 065 y también los que comienzan con 65 en una sola consulta, por ejemplo:

en la tabla hay los siguientes serials:

serial
06123456
06999999
06878787
6552312
6521230
07454545
7888888

Al usuarios cuando entre a al consulta le sale el siguiente mensaje: "Ingrese número e serial" y si por ejemplo el usuario ingresa 6552312 el resultado de la búsqueda será el siguiente:

serial
6552312

Ahora si el usuario ingresa 07, lo que quiero que sea el resultado de la búsqueda es

serial
07454545
7888888

Lo mismo si el usuario ingresa 06, el resultado de la búsqueda quisiera que sea:

serial
06123456
06999999
06878787
6552312
6521230

Para poder hacerlo según lo que decís vos debería de ser:
SELECT NombreTabla. Id, NombreTabla. NombreCampo FROM NombreTabla WHERE (NombreTabla. NombreCampo) LIKE "06*")) OR (NombreTabla. NombreCampo) LIKE "6*")); ahora yo lo que quiero hacer (aprovechando la escritura del select) es que ese 06 y ese 6 los ingrese el usuario por parámetro, pero si pongo entre corchetes en ambos lados me pide el ingreso de datos 2 veces y no es el caso... La verdad es que no se si esto se puede llegar a realizar... Pero desde ya agradezco todo tipo de ayudas que me puedan dar.

Muchísimas gracias.

Saludos,


Daniel F. Cullari



Andry
Escrito por Andry el 21/07/2009 | Nivel Medio

Estimado Danie Cullari.

Bueno entonces la idea es la siguiente:

SELECT NombreTabla. Id, NombreTabla. NombreCampo FROM NombreTabla WHERE (NombreTabla. NombreCampo)=[Numero de serial a buscar]));

De esta forma le solicitara a la persona que ingese un número de serial a buscar.

Espero que con esto pueda solucionar su problema.

Un saludo.


Daniel Cullari
Reparador de pc uba
Escrito por Daniel Cullari el 21/07/2009 | Nivel Medio

Muchas gracias por la respuesta Andry Rodríguez Pérez , pero lo que usted plantea en su último ejemplo no va a funcionar ya que si yo hago lo siguiente:

SELECT NombreTabla. Id, NombreTabla. NombreCampo FROM NombreTabla WHERE
(NombreTabla. NombreCampo)=[Numero de serial a buscar]));

NOTA: si en la clausura WHERE se le ingresa por igual, o sea algo = algo... No va a traer resultados ya que si ingreso un serial como 055 a menos que esté ingresado tal cual no va a traer nada, ahora si se le ingresa como algo LIKE (algo +"*") de esta forma si va a traer resultados si por ejemplo se ingresa 055 ya que busca cualquier serial que comience con 055.

Yo lo que había echo hasta ahora es lo siguiente pero no es exactamente lo que quisiera obtener:

SELECT NombreTabla. Id, NombreTabla. NombreCampo FROM NombreTabla WHERE
(NombreTabla. NombreCampo) LIKE "*" + [Numero de serial a buscar] + "*"));

En este ejemplo si le ingreso 06 va a traer todos los serials que comiencen con 06, pero a su ves, también va a traer todos los serials que contengan en algún lugar del mismo los dígitos 06, ahora si modifico el select de la siguiente manera hace lo siguiente:

SELECT NombreTabla. Id, NombreTabla. NombreCampo FROM NombreTabla WHERE
(NombreTabla. NombreCampo) LIKE [Numero de serial a buscar] + "*"));

Si se ingresa un serial por ejemplo 07 va a traer todos los serials que comiencen con 07 pero no los que comiencen con 7.

Mi idea es la siguiente, quisiera saber si es que existe una manera de hacer lo siguiente:

Declarar una variable por ejemplo variable;

variable = [INGRESE SERIAL OMITIENDO EL CERO (0) DELANTE];

SELECT NombreTabla. Id, NombreTabla. NombreCampo FROM NombreTabla WHERE
(NombreTabla. NombreCampo) LIKE "0" + variable + "*") OR (NombreTabla. NombreCampo) LIKE variable + "*"));

Pediría que se ingrese el serial omitiendo el cero delante para que en el select se lo busque tal cual y además con un cero delante.

Muchas gracias por tu ayuda.

Saludos,


Daniel F. Cullari


Julian Herrera Gonzalez
Ingenería técnica industrial electróni...
Escrito por Julian Herrera Gonzalez el 21/07/2009 | Nivel Medio

Hola.
El problema que planteas se puede solucionar de varias maneras, pero lo que yo haría sería que al incluir un nuevo registro y si según entiendo este serial no es autonumérico, se grabase en la tabla con todos los dígitos que precise el serial, en el formulario que utilices para grabar los seriales en el evento AfterUpdate del cuadro donde introduzcas el serial le pongas el código:

Me. Cuadro=Format(Me. Cuadro,String(Num,"0"))

Donde Cuadro es el nombre de tu TextBox donde escribes el serial y Num la longitud de dígitos de tu serial. Así siempre se guardará el serial con una misma longitud y con los "0" a la derecha que necesite para rellenar su longitud.

Para hacer una consulta en la que te trate un "0xxx" igual que un "xxx" le veo un problema y es que en el caso que tengas dos seriales que quieras diferenciar y que varíen en el primer dígito (que sea "0" o diferente de cero) te los puede tratar igual y darte un resultado no deseado. El código que te he puesto te lo evita porque a cada uno lo tratará diferente.
La consulta que te puede dar el resultado por el que preguntas es convertir en la consulta el resultadoa numérico:

.... WHERE VAL(serial)=VAL(valor)

Si quieres que te vayan apareciendo los valores deberías tener un ComboBox con los valores de los seriales en formato numérico, así irán apareciendo y acotándose los valores de seriales que desees tal como los vayas escribiendo sin hacerle falta el "0" que internamente ya lo tendrían.

Espero que te sirva.


Daniel Cullari
Reparador de pc uba
Escrito por Daniel Cullari el 21/07/2009 | Nivel Medio

Muchas gracias por tu respuesta Julian Herrera Gonzalez , mucho lo de agregar eventos a la base de dato no entiendo, pero creo que voy a optar por lo más fácil, o sea, por lo general (casi el 99,9% de las veces) cuando uno busca un serial lo que hace es ingresar el número completo del serial, ejemplo: "Ingrese serial a buscar" y ahí el usuario digita 65123456 y la consulta devuelve el serial en caso de que se halla encontrado o nada en caso de que no se halla encontrado, lo que quise hacer es que si una persona ingresa (por ejemplo) como serial 6 que le liste todos los serials que hay que comienzan con 6 o con 06, pero casi nunca se usa, es más yo no usé eso nunca, porque puntualmente nos interesa saber a que producto se le asocia un determinado serial y no cuantos serial con 6 hay, es más... Los serials no tienen nada que ver unos con otros, no es nuestro caso que (por ejemplo) los serials con 6 son para algo y los serials con 7 son para otra cosa, o sea puedo tener un producto asociado a un serial y otro totalmente distinto con otro serial, lo que quise es poder darle un poco más de valor agregado a la consulta, o sea, que la misma sirviera tanto para una cosa como para la otra, voy a resolverlo de la siguiente manera...

SELECT * FROM nombretabla
WHERE nombretabla. Campo LIKE "*" + [INGRESE SERIAL A BUSCAR, OMITIENDO EL CERO DEL COMIENZO] + "*";

El motivo de todas las preguntas que hice fueron porque pensé que habría una manera de resolver esto con un select por ahí un poco más complejo, pero bueno, no hay drama, ya que hasta el día de hoy nos manejamos buscando serials con la búsqueda de Access; el motivo que me llevó a mí a buscar una solución a esto es intentar mejorar las cosas que ya están y las que no están tratar de implementarlas.

Agradezco a todos por su colaboración.
Desde ya si necesitan ayuda sobre algún tema en el cual les pueda dar una mano... Cuenten conmigo.

Nota: hice un año en programación abap, que es lo que más se, y por los estudios en la facultad, conozco sobre programación en C y respecto a lo que es reparación de pc´s me manejo bastante bien, ya que trabajé un buen tiempo en eso; así que para lo que necesiten no duden en consultarme.

Saludos,


Daniel F. Cullari


Jose Del Pozo
Ciencias geológicas universidad de ovi...
Escrito por Jose Del Pozo el 31/07/2009 | Nivel Medio

Una cosilla así, como solución fácil.
Si generas una consulta de la tabla original (con ceros a la izqda. ) y le añades una columna con el serial sin el cero de la izquierda (esto es fácil), luego puedes hacer la búsqueda contra este campo siempre que le quites el cero a la izquierda a todo aquel usuario que lo ponga.
Las idea es unificar criterios por código aprovechando un nuevo campo, evitando que cualquier consulta tenga que tener en cuenta valores con o sin cero a la izquierda.
Te obliga a modificar ligeramente el código, pero no necesitas estructuras complejas de búsqueda.

Ánimo.


Hector Ballester
Administracion de empresas francisco d...
Escrito por Hector Ballester el 06/08/2009 | Nivel Medio

Estimado Daniel, he leido tus comentarios y el de los compañeros y te cuento que veo na solución muy sencilla para tu consulta.

1) En el formulario te ubicas en modo diseño y das clip al campo donde tienes el serial

2) Das clip al boton derecho de mouse y buscas propiedasdes.

3) En formato colocas tantos ceros como requieras. Si colocas 5 ceros, el campo se mostrará en la vista 00000 al ingresar un número Ej. 55, se muestra 00055.

Como puesdes ver es muy sencillo y sirve para reportes.




Responder


Quiero recibir alertas por email cuando haya mensajes nuevos en este debate

Debe cumplir las normas de contenido y normas de conducta
Al escribir en el debate:
  1. Repasa la ortografía y no escribas en formato SMS.
  2. Lee el texto dos veces antes de publicar.
  3. No escribas todo en mayúsculas o negritas.
 
Páginas internacionales: España  |  Italia  |  Francia  |  México  |  Alemania  |  Reino Unido  |  Argentina  |  Chile  |  Colombia  |  USA |  India |  Y próximamente: Brasil | 

Búsquedas frecuentes: alzeimer como definir musculos kardex peps neurologo sinovular

EMAGISTER Servicios de formación, S.L. Copyright 1999/2013.