Ir al contenido



Foto

Consulta de los valores de dos campos de la misma tabla


  • Por favor identifícate para responder
14 respuestas en este tema

#1 Orihuela

Orihuela

    Newbie

  • Miembros
  • Pip
  • 6 mensajes

Escrito 07 abril 2018 - 12:32

Hola soy un poco novato en este tema . Si alguien me puede ayudar lo agradezco.

 

El problema es quiero hacer una consulta de una tabla donde cun campo tiene stock y otro MinimoStock. Quiero hacer consulta para que salga todos los datos de esta tabla donde Stock se menor que MinimoStock.

 

Gracias.


  • 0

#2 ELKurgan

ELKurgan

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 523 mensajes
  • LocationEspaña

Escrito 09 abril 2018 - 02:05

No conozco mucho Access, pero si soporta SQL estándar valdría con

 

Select * from TABLA where stock < minstock

 

¿no?

 

Saludos


Editado por ELKurgan, 09 abril 2018 - 02:07 .

  • 0

#3 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.137 mensajes
  • LocationArgentina

Escrito 09 abril 2018 - 05:52

No conozco mucho Access, pero si soporta SQL estándar valdría con

 

Select * from TABLA where stock < minstock

 

¿no?

 

Saludos

 

No hay motor (o pseudo motor, para el caso de Access) de BD que no soporte SQL. Tu consulta SQL va a funcionar en todos,  que por algo es estandar.  ;) 

En eso no pueden meter sus anchas los motores. En lo que difieren, mayormente, es en la parte procedural (PSQL) y las cosas que cada uno pone para extender al estandar. Luego está las cosas de los tipos de datos... ahí si hay ciertas licencias. Aunque, supuestamente, hay tipos estandarizados... *-)

 

Saludos,


  • 0

#4 ELKurgan

ELKurgan

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 523 mensajes
  • LocationEspaña

Escrito 09 abril 2018 - 11:30

Pues si, tienes razón.

 

Otra cosa es como el amigo Orihuela está intentado obtener los datos. Tampoco da mucha información sobre el tema

 

Saludos

 

(y) 


  • 0

#5 Orihuela

Orihuela

    Newbie

  • Miembros
  • Pip
  • 6 mensajes

Escrito 11 abril 2018 - 11:34

Hola perdonarme por no haber contestado antes. Lo he metido y no da error pero tampoco no me hace nada. Yo creo que falta alguna cosa para que realice ese filtro.

Gracias.


  • 0

#6 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.792 mensajes
  • LocationMéxico

Escrito 11 abril 2018 - 11:42

Hola perdonarme por no haber contestado antes. Lo he metido y no da error pero tampoco no me hace nada. Yo creo que falta alguna cosa para que realice ese filtro.
Gracias.


¿Puedes colocar aquí tu consulta SQL?

Con más información es más fácil seguirte.

Saludos
  • 0

#7 Orihuela

Orihuela

    Newbie

  • Miembros
  • Pip
  • 6 mensajes

Escrito 11 abril 2018 - 11:44

Perdona si no me he expresado bien.

 

Tengo un programa hecho en Delphi y abro una base de datos de Access y esta tiene una serie de campos. Yo quiero sacar en una tabla todos los datos de esa base de datos que cumplan que el dato del campo ' Stock' sea menor que el dato del campo 'StockMinimo'. 

 

Si se necesita más información, por favor preguntame que respondere encantado.

 

Gracias


  • 0

#8 Orihuela

Orihuela

    Newbie

  • Miembros
  • Pip
  • 6 mensajes

Escrito 11 abril 2018 - 11:59

     Tengo un DBGrid1 configurado para el ADOQuery1.
 
En FormCreate tengo todo lo siguiente:
 
    ADOQuery1.Close;
     ADOQuery1.SQL.Text:='Select * From Recambios Where "Cantidad Stock > Cantidad Minima"';
     ADOQuery1.Active:= True;
     ADOQuery1.Open;
 
 
Gracias

  • 0

#9 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.137 mensajes
  • LocationArgentina

Escrito 11 abril 2018 - 05:19

Los nombres de los campos en SQL no deben ir con espacios.
Eso es motivo de problemas.

Saludos
  • 0

#10 ELKurgan

ELKurgan

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 523 mensajes
  • LocationEspaña

Escrito 11 abril 2018 - 11:34

¿Y probando así?

 

ADOQuery1.Close;

ADOQuery1.SQL.Text:='Select * From Recambios Where "Cantidad Stock" > "Cantidad Minima"';
ADOQuery1.Active:= True;
ADOQuery1.Open;

 

Saludos


  • 0

#11 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.137 mensajes
  • LocationArgentina

Escrito 12 abril 2018 - 05:33

Debería de andar.

Aunque lo mejor es no utilizar espacios en los nombres de tablas, campos, etc.

 

Evita muchos problemas.

 

Saludos,


  • 0

#12 Orihuela

Orihuela

    Newbie

  • Miembros
  • Pip
  • 6 mensajes

Escrito 12 abril 2018 - 03:29

Hola he puesto la doble comillas y no da error pero no filtra.

Tambien he quitado los espacios a los campos etc y no da error pero no filtra. Haré varias pruebas con la configuracion de ADOQuery. Si averiguo algo lo comentare.

 

Un saludo


  • 0

#13 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.137 mensajes
  • LocationArgentina

Escrito 12 abril 2018 - 04:06

La consulta:


sql
  1. SELECT <campos> FROM <tabla> WHERE CampoStock < CampoStockMinimo

Tiene que funcionar. Obviamente que la consulta devolverá vacio si no hay registros que cumplan la condición.

Y , naturalmente, si no hay ningún registro en la tabla no devolverá nada.

 

Para descartar algo, prueba con la simple:


sql
  1. SELECT * FROM <tabla>

Eso te tiene que traer la totalidad de registros. Si eso ya no muestra nada es porque la tabla está vacia.

 

Antes de copiar la SQL en los componentes ADOQuery sugiero probarlas desde el propio Access. Para descartar metidas de pata.

 

Si estuviera mal la configuración de la conexión te debería de reportar un error. Si estas empleando un DBGrid y quieres enlazarlo a un ADOQuery necesariamente debes pasar por un DataSource que haga el enlace. ¿Tienes el DataSource habilitado también? Puede que por ahí venga la mano. Porque con que esté deshabilitado basta para que el Grid no muestre nada.

 

No vendría mal que nos comentes como tienes configurados los componentes y controles. Y si puedes, haz algunas capturas de pantallas y subilas para que veamos.

 

Saludos,


  • 0

#14 Orihuela

Orihuela

    Newbie

  • Miembros
  • Pip
  • 6 mensajes

Escrito 20 abril 2018 - 12:58

Hola amigos he encontrado una solucion:

 

Con access he creado una consulta de de la tabla recambio de la siguiente forma, en la columna del campo CantidadStock (campo), Recambios (tabla), en orden nada y en criterios he colocado  :  <=[Recambios]![CantidadMinima].

 

Luego desde delphi hacemos un BDGrid con la tabla creada en la consulta . Así si que funciona.

 

 

Pero alguien me puede orientar hacerlo con delphi sin tener que hacer una consulta en Access?

 

Gracias


  • 0

#15 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.137 mensajes
  • LocationArgentina

Escrito 20 abril 2018 - 01:32

Hola amigos he encontrado una solucion:

 

Con access he creado una consulta de de la tabla recambio de la siguiente forma, en la columna del campo CantidadStock (campo), Recambios (tabla), en orden nada y en criterios he colocado  :  <=[Recambios]![CantidadMinima].

 

Luego desde delphi hacemos un BDGrid con la tabla creada en la consulta . Así si que funciona.

 

 

Pero alguien me puede orientar hacerlo con delphi sin tener que hacer una consulta en Access?

 

Gracias

 

A ver si logro entenderte.

¿Dices que en Access has logrado ejecutar la consulta?

Si es asi coloca esa misma consulta en el componente query y prueba.

 

Recuerdo que en Access, en su editor SQL, debia de emplearse [ ] para referenciar a las tablas y campos. Pero que esto era solo a efectos de Access. Debería de aceptarte las consultas sin los [ ], ya que técnicamente estas empleando ADO de por medio y éste se encarga de hacer el trabajo realmente. Access en realidad no es un motor, es una fachada. El motor se llama JET 4. Y ADO sirve para JET y otros motores gracias ODBC. ADO como inetermediario, genera los parsers necesarios. (en este caso parsea los [ ] para que se acomode a estandar)

Todo motor usa SQL en última.

 

Pero haz la prueb con los [] a ver si es por eso. Yo hace tiempo que no empleo Access.

 

Respecto a lo ultimo que comentas, en los componentes query puedes escribir la consulta sin problemas. Pero claro, esto es un simple "memo" en donde uno escribe. No es un editor propiamente dicho. Lo que debe de hacerse SIEMPRE es diseñar las consultas en el propio motor DB (y usando las propias herramientas que este ofrezca) y luego copiarlas al query.

 

Saludos,


  • 0