Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-02-2010
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 18
jafera Va por buen camino
Pasar una variable a una consulta

Hola de nbuevo a todos.

Otra pequeña duda que tengo en una consulta, a ver si me explico correctamente:

Tengo un formulario en el cual en el oncreate hago un decodedate de la fecha para obtener el valor del año actual ya que lo necesito para saber si la aplicacion está trabajando en el año correcto o en un año anterior, esto funciona bien.

En este formulario tengo un boton busqueda que me abre otro formulario para buscar un código dentro de la base de datos y una consulta con parametros funciona bien pero me devuelve los 5.000 registros de la tabla:

Código SQL [-]
 
BuscarCodi.SQL.Add('SELECT '+ComboBox1.text+' FROM CAR0006 WHERE UPPER ('+ComboBox1.Text+') STARTING WITH '+QuotedStr(AnsiUpperCase(Edit1.Text))+' ORDER BY CODI');

El problema es que no se como añadir dentro de esta consulta el valor de la variable (a), año en curso, algo asi para que me devuelva solo los 475 registros del año:

Código SQL [-]
 
BuscarCodi.SQL.Add('SELECT '+ComboBox1.text+' FROM CAR0006 WHERE UPPER ('+ComboBox1.Text+') STARTING WITH '+QuotedStr(AnsiUpperCase(Edit1.Text))+' AND ANIO = (A) ORDER BY CODI');

De nuevo gracias
Responder Con Cita
  #2  
Antiguo 16-02-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.297
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
No lo entiendo.
¿Porqué no la añades igual que has hecho con las otras?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 16-02-2010
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 18
jafera Va por buen camino
Es que no se como añadirla, ya que el valor de la variable esta en otro form
Responder Con Cita
  #4  
Antiguo 16-02-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.297
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Para llamarla haz referencia al nombre del form delante.

Código Delphi [-]
  
   ...  := Form2.A;

Lo que tienes que asegurarte de que en el otro form esté accesible. Para eso puedes definir una propiedad para acceder a la variable en la parte pública del form o en su defecto definir la variable en la parte pública.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 16-02-2010
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 18
jafera Va por buen camino
Perdonad mi ignorancia pero no encuentro como pasar el valor de la variable (a) dentro de una consulta sql.

Mi consulta es

Código Delphi [-]
 
SELECT CODI, ID_COLLA, ANIO FROM CAR0006
WHERE ANIO = 2010
ORDER BY CODI

en la linea where quiero pasarle el valor de la variable (a) que es el año en el cual trabajo, aqui no puedo poner where anio = Form.A

Sigo investigando

Josep
Responder Con Cita
  #6  
Antiguo 16-02-2010
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Código Delphi [-]
XX.SQL.ADD'SELECT CODI, ID_COLLA, ANIO FROM CAR0006'
XX.SQL.ADD'WHERE ANIO ='+Form.A
según el motor puede ser también:

Código Delphi [-]
XX.SQL.ADD'WHERE ANIO ='+QuotedStr(Form.A);

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #7  
Antiguo 16-02-2010
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 18
jafera Va por buen camino
Ya está, gracias Neftali, releyendo tu mensaje se me han abierto los ojos, sencillamente reescribo la consulta y ya está

De nuevo gracias

Josep
Responder Con Cita
  #8  
Antiguo 16-02-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
EDn el texto de la consulta pon el parámetro o variable antecedido de dos puntos:

Código SQL [-]
SELECT CODI, ID_COLLA, ANIO FROM CAR0006
WHERE ANIO = :año
ORDER BY CODI

Al momento de abrir la consulta, sustituyes el parámetro por el valor deseado:

Código Delphi [-]
Query1.ParamByname('año').AsInteger := A;
Query1.Open;

En ParamByName indicas el nombre que le hayas puesto al parámetro (que suponogo no puede llevar ñ pero eso ya es otra cuestión ) y usas AsXXX según el tipo de datos que requieras (AsInteger, AsString, As Boolean, AsFloat, etc.)

// Saludos
Responder Con Cita
  #9  
Antiguo 16-02-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.297
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
AÑADO/EDITO: Parece que la cosa se solucionó...

Vamos a ver.
Si sabes hacer esto:

Código Delphi [-]
  BuscarCodi.SQL.Add('SELECT ' + ComboBox1.text + 
                     ' FROM CAR0006 WHERE UPPER (' +
                     ComboBox1.Text + ') STARTING WITH ' +
                     QuotedStr(AnsiUpperCase(Edit1.Text)) + 
                     ' AND ANIO = (A) ORDER BY CODI');

No entiendo porque no puedes hacer esto:

Código Delphi [-]
  BuscarCodi.SQL.Add('SELECT ' + ComboBox1.text + 
                     ' FROM CAR0006 WHERE UPPER (' +
                     ComboBox1.Text + ') STARTING WITH ' +
                     QuotedStr(AnsiUpperCase(Edit1.Text)) + 
                     ' AND ANIO = (' + Form2.A + ') ORDER BY CODI');

Si la variable es de tipo string, bastaría con eso. Si es de tipo entero hay que convertirla.

¿Puedes poner cómo es la declaración de la variable A?
¿Y dónde la tienes declarada? ¿En el mismo formulario? ¿En otro? ¿Es una variable local/privada? ¿Pública?
¿Cuando dices que no puedes es que no sabes, que te da error? ¿Qué error? ....

Porque sino estamos "dándole vueltas al palo" como tontos.


PD: Otro tema es que cuando pases valores de tipo cadena/string a una SQL deben ir con comillas simples, pero de eso hablamos luego.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #10  
Antiguo 16-02-2010
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 18
jafera Va por buen camino
Si, el tema se solucionó, lo que pasaba es que no veia como pasar el parametro a la consulta ya escrita, pero se encendió la bombilla y como comenté en mi post anterior, reescribo la consulta pasandole los parametros y ya está.

Consulta original

Código Delphi [-]
SELECT CODI, ID_COLLA, ANIO FROM CAR0006 WHERE ANIO = 2000 ORDER BY CODI

Texto con el que modifico la consulta

Código Delphi [-]
 
OrdenarGrid.Close;
OrdenarGrid.SQL.Clear;
OrdenarGrid.SQL.Text:=('SELECT CODI, ID_COLLA, ANIO FROM CAR0006 WHERE ANIO = '+IntTostr(F_ModulDades.A)+' ORDER BY CODI');
OrdenarGrid.Open

De paso he aprovechado para declarar una sola vez la variable (a) en el data module y asi la utilizan todos los forms que hagan referencia al año.

Saludos

Josep
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Pasar el resultado de un Zquery a una variable NeWsP Conexión con bases de datos 6 02-06-2007 20:43:37
Como pasar la parte decimal de una variable maravert Varios 1 30-10-2006 20:30:11
Pasar una Variable a Reporte en Rave. servicomp Impresión 1 30-01-2004 15:28:26
pasar resultado sql a una variable ?? Alex2000 SQL 7 08-12-2003 23:09:25
pasar una variable a una sentencia sql acrophet SQL 6 03-11-2003 17:01:02


La franja horaria es GMT +2. Ahora son las 20:49:47.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi