Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-01-2006
ing.cagn ing.cagn is offline
Registrado
 
Registrado: ene 2006
Posts: 5
Poder: 0
ing.cagn Va por buen camino
Como Realizar una consulta desde un Tedit?

Hola, sucede que hice una aplicación en delphi, la cual almacena cierta cantidad de datos en un tabla, sucede que necesito hacer una consulta a la base de datos desde un texbox o Tedit como se llama originalmente en Delphi, pero no se como debo escribirlo puesto que me saca un error cuando intento activar la consulta..

ejem..

Select *from Tabla1 Where campo= BUSCAR.Text

Al consultarla me sale un error, supongo que me falta codigo en algun lado o no se que cosas, lo cierto es que no funciona...

lo que pasa es que el reporte que necesito imprimir debe ser filtrado, mejor dicho de las filas de la tabla solo puede ser impresa una fila, y es la que el usuario debe especificar por medio de un TEDIT.. si hay otra manera de hacerlo agradeceria me ayudaran..

Gracias!
Responder Con Cita
  #2  
Antiguo 06-01-2006
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Una forma de hacerlo

Hola ing.cagn

Suponiendo que utilizas algún componente como el TQuery para hacer la consulta entonces puedes enviar el contenido del TEdit como un parámetro, por ejemplo:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  with Query1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM tabla1 WHERE campo=:mitexto');
    // Envías como parámetro el texto contenido en el TEdit
    ParamByName('mitexto').AsString:=Edit1.Text;
    Open;
  end;
end;

Observa que para indicar que se trata de un parámetro se utilizan los dos puntos antes del identificador :mitexto.

Espero que te sea útil.
Responder Con Cita
  #3  
Antiguo 06-01-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Se me adelantó Héctor, e hizo bien, porque el método que propone tal vez sea el más indicado y elegante. Empero se me había ocurrido otra respuesta (por eso digo que se me adelantó Héctor) y con ella voy.

Primeramente dices que obtienes un error al realizar la consulta SQL, pero no dices de qué error se trata, lo cual, como comprenderás, ayudaría a ayudarte. Sin embargo, he creído ver en la consulta un posible error en que no haces uso de comillas para encerrar el texto del "TEdit" de turno, y tal vez por ahí fueran los tiros.

Quédate mejor o también con lo que Héctor propone: la posible solución que propongo yo es esta:

Código Delphi [-]
var
  consultaSql: string;
begin
  // Esta será nuestra plantilla para la consulta
  consultaSql := 'SELECT * FROM Tabla1 WHERE campo = ''%S''';

  // Aquí incluimos el texto del TEdit "edFiltro"
  consultaSql := Format(consultaSql, [edFiltro.Text]);

  // Mostramos cómo queda la consulta SQL
  ShowMessage(consultaSql);
end;
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 06-01-2006
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Cita:
Empezado por Dec
Se me adelantó Héctor, e hizo bien, porque el método que propone tal vez sea el más indicado y elegante
Hola David, ese asunto de que sea el más indicado y elegante no estoy muy seguro, pero es el que más me gusta y me he acostumbrado mucho a él. De hecho en el título escribí que tan solo es una forma de hacerlo porque sé que existen muchas formas más.

En fin dejemos que sea ing.cagn quien decida cual prefiere.

Saludos
Responder Con Cita
  #5  
Antiguo 06-01-2006
ing.cagn ing.cagn is offline
Registrado
 
Registrado: ene 2006
Posts: 5
Poder: 0
ing.cagn Va por buen camino
Otro lio

Gracias por responder,

les cuento: utilice como primera opción la consulta de hector, puesto que me pareció un poco mas sencilla, olvide decirles que el dato que se inserta en el tedit, es un dato numerico: 108799114, mejor dicho un documento de identidad, sucede que al ejecutarlo me devuelve un error, supuse que era por que el parametro estaba definido como string, así que decidi cambiar el campo a uno que realmente fuera un string para ver si no era otro cosa la que esta molestando, me di cuenta que efectivamente la consulta estaba bien, el problema que es el tedit no se indruce letras sino numeros, entonces hice lo siguiente:

Código Delphi [-]
procedure TForm1.printreport1Click(Sender: TObject);
begin
  with CONSULTABAUTISMO do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM db.bautismos WHERE DCI=: DCI');
    // Envías como parámetro el texto contenido en el TEdit
    ParamByName('DCI').Asinteger:=buscar.Text;
    Open;
    PRINTREPORTBAUTISMOS.Execute;
  end;
end;

end.

pero sucede que sale un pequeño error: Incompatible types: 'integer' and 'Tcaption', entonces hasta ahi llego mi felicidad, suponia que solo era cambiar eso y listo.. pero otro error.. les agradezco su ayuda..

es lo unico que me falta de la aplicación.. graciaS!

Última edición por dec fecha: 07-01-2006 a las 10:34:06. Razón: Añadir las etiquetas [DELPHI] (código aquí) [/DELPHI]
Responder Con Cita
  #6  
Antiguo 06-01-2006
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Hay que cambiarle un par de cositas y poner ese codigo asi:

Código Delphi [-]
procedure TForm1.printreport1Click(Sender: TObject);
begin
   with CONSULTABAUTISMO do
   begin
      Close;
      SQL.Clear;
      SQL.Add('SELECT * FROM db.bautismos WHERE DCI= :cedula');
      // Envías como parámetro el texto contenido en el TEdit
      ParamByName('cedula').Asinteger:=strtoint(buscar.Text);
      Open;
      PRINTREPORTBAUTISMOS.Execute;
   end;
end;
end.

Si, te fijas hice dos cosas, el parametro cedula en la consulta debe estar pegado a los dos puntos ":" a menos que quieras que el nombre del parametro tenga un espacio (Bueno ademas lo cambie porque si no me mostraba la carita feliz), y luega use StrToInt para pasar de String a Integer.

Por otro lado veo que sos de Colombia y por eso te contare un secreto, si tu haz visto noticias te puedes dar cuenta que los numeros de cedulas van a cambiar y los numeros seran mas largos y creeme que ya hice la prueba con campos enteros y muchas cedulas nuevas no caben en dicho tipo de dato, asi que deberas cambiar a string. (Yo siempre que no voy a hacer operaciones matematicas con numeros los declaro String).

Bueno eso es todo espero te sirva compatriota .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/

Última edición por jhonny fecha: 06-01-2006 a las 16:31:18.
Responder Con Cita
  #7  
Antiguo 06-01-2006
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Que curioso, acabo de responder este hilo y me encontre luego con este otro http://clubdelphi.com/foros/showthre...728#post124728, alli se puede ver lo que le sucedio a nuestro amigo Luis Castillo con el problema de las cedulas.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #8  
Antiguo 06-01-2006
ing.cagn ing.cagn is offline
Registrado
 
Registrado: ene 2006
Posts: 5
Poder: 0
ing.cagn Va por buen camino
ya lo solucione:

Señores, muchas gracias por sus respuestas, ya pude darle solución al problema lo hice de esta manera..

Código Delphi [-]
procedure TForm1.printreport1Click(Sender: TObject);
begin
  with CONSULTABAUTISMO do
  begin
    Close;
    SQL.Clear;
    CONSULTABAUTISMO.SQL.Text:='select *from db.bautismos Where DCI='+buscar.Text;
    PRINTREPORTBAUTISMOS.Execute;
  end;
end;

end.

//Makio muchas gRacias...

Adios!!!

Última edición por dec fecha: 07-01-2006 a las 10:36:32.
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


La franja horaria es GMT +2. Ahora son las 11:01:38.


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