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 16-12-2010
warrior79 warrior79 is offline
Registrado
 
Registrado: jun 2010
Posts: 8
Poder: 0
warrior79 Va por buen camino
busqueda de datos en SQL con TMEMO

que tal a todos,quiesiera ver si alguien tiene una idea sobre un problema que tengo
Tengo en mi forma un TMEMO,adoquery,DBGrid y un boton quisiera poner varios nombres en el TMEMO y despues presionar el boton que execute el query buscando la informacion en una tabla llamada empleados.
Si puedo hacerlo si solo meto un solo nombre en el TMEMO el problema es como puedo hacer que poniendo varios nombres que todos esos nombres los busque en la tabla talvez usando el SELECT IN, algun ejemplo que tenga se los agradeceria
Responder Con Cita
  #2  
Antiguo 17-12-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.275
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
Deberías "montar" la consulta dependiendo de los nombres que ponbgas en el memo. O un OR o si son muchos, como tú dices un IN puede ser más cómodo.

Código SQL [-]
SELECT * FROM EMPLEADOS
WHERE (nombre=:nombre1) or (nombre=:nombre2) or ...

Código SQL [-]
SELECT * FROM EMPLEADOS
WHERE nombre IN (:nombre1, :nombre2, ...)

Las 2 formas son válidas; Aquí se usan parámetros también puedes colocar las cadeas directamente.

¿Puedes afinar más diciéndonos qué es lo que no tienes claro?
¿Sacar los nombres del memo?
¿Montar la sentencia?
¿la sintaxis?
...

Prueba a hacerlo y si tienes problemas ya nos dirás...
__________________
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 17-12-2010
warrior79 warrior79 is offline
Registrado
 
Registrado: jun 2010
Posts: 8
Poder: 0
warrior79 Va por buen camino
Gracias por tu propuesta Neftali de hecho si habia pensado en eso
ahorita tengo este codigo

Código Delphi [-]
procedure Tfrminfo.BitBtn1Click(Sender: TObject);
begin
  qryinfo.Close;
  qryinfo.parameters.ParamByName('begin').Value:=TRIM(Memo1.Text);
  qryinfo.Open;
end;
procedure Tfrminfo.BitBtn2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
   memo1.Lines.LoadFromFile(OpenDialog1.FileName);

end;
En el MEMO1.text si solo pongo una informacion asi:
YMN1016120001
si me lo busca en sql pero yo quisiera que el en MEMO1.text pusiera varios registros
YMN1016120001
YMN1016120002
YMN1016120003
YMN1016120004
YMN1016120005

yo quisiera que todos esos registros my query los buscara a todos, pero no se como en delphi hacer leer uno por uno.
Responder Con Cita
  #4  
Antiguo 17-12-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.275
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
Te lo pongo de memoria (quiero decir que lo he hecho directamente sobre el editor, no lo he compilado, así que si hay algun error ya dirás...)

Código Delphi [-]

var
    i:integer;
    StrSQL:string;
    StrNames:string;
begin
    // Preparamos la sentencia
    StrSQL := 'SELECT * FROM EMPLEADOS WHERE Nombre IN (%s)';

    // recorremos el memo con todos los nombres
    for i := 0 to (Memo1.Lines.Count - 1) do begin
        // le añadimos la coma si hace falta
        if (i > 0) then begin
            StrName := StrNames + ',';
        end;
        // nombre
        StrName := StrNames + QuotedStr(Memo1.Lines[i)]);
    end;

    StrSQL := Format(StrSQL,[StrNames]);

Si los nombres en el memo son:

Código:
YMN1016120001
YMN1016120002
YMN1016120003
YMN1016120004
YMN1016120005
La SQL (si no me he dejado nada) debería quedar algo así:

Código SQL [-]
SELECT * FROM EMPLEADOS WHERE Nombre IN ('YMN1016120001','YMN1016120002','YMN1016120003','YMN1016120004','YMN1016120005')
__________________
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 17-12-2010
warrior79 warrior79 is offline
Registrado
 
Registrado: jun 2010
Posts: 8
Poder: 0
warrior79 Va por buen camino
ok cuando lo corry me salian unos errors en la variable Strname porque no estaba declarada pero se lo agregue y me quedo asi
Código Delphi [-]
procedure Tfrminfo.BitBtn1Click(Sender: TObject);
Var
    i:integer;
    StrSQL:string;
    StrNames:string;
    StrName:string
begin
    // Preparamos la sentencia
    StrSQL := 'SELECT * FROM EMPLEADOS WHERE Nombre IN (%s)';
 // recorremos el memo con todos los nombres
    for i := 0 to (Memo1.Lines.Count - 1) do begin
        // le añadimos la coma si hace falta
        if (i > 0) then begin
            StrName := StrNames + ',';
        end;
        // nombre
        StrName := StrNames + QuotedStr(Memo1.Lines[i]);
    end;
    StrSQL := Format(StrSQL,[StrNames]);
end;

y ya no me salio error
Pero no me salio nada en mi DBGRID
como mando el resultado del query al DBGRID

gracias
Responder Con Cita
  #6  
Antiguo 18-12-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Haber que tal así:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
begin
   qryinfo.Close;
   qryinfo.SQL.Clear;
   qryinfo.SQL.Add('SELECT * FROM EMPLEADOS WHERE Nombre IN ');
   qryinfo.SQL.Add('(');
   for  i:=0  to Memo1.Lines.Count - 1 do
   begin
    qryinfo.SQL.Add(QuotedStr(Memo1.Lines[i]));
    if i<>Memo1.Lines.Count - 1 then
     qryinfo.SQL.Add(',');
   end;
   qryinfo.SQL.Add(')');
   qryinfo.Open;
end;
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #7  
Antiguo 18-12-2010
warrior79 warrior79 is offline
Registrado
 
Registrado: jun 2010
Posts: 8
Poder: 0
warrior79 Va por buen camino
Exceletente muchas gracias funciono
Responder Con Cita
  #8  
Antiguo 20-12-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.275
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
Cita:
Empezado por warrior79 Ver Mensaje
Pero no me salio nada en mi DBGRID
como mando el resultado del query al DBGRID
Bueno, se trataba de acabar asignando esa variable al Query y realizar el Open.
__________________
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
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
Búsqueda de texto en TMemo ixMike Varios 0 09-10-2006 19:24:51
Busqueda De Datos ercrizeporta Conexión con bases de datos 4 27-06-2005 11:31:35
problemas para pasar los datos de un Tmemo a otro, ya probe de todo :/ nahuel007 Varios 6 08-01-2005 20:05:02
Busqueda de Datos jmedina Conexión con bases de datos 9 30-07-2004 16:52:20
Dos datos iguales en Busqueda. kwan Conexión con bases de datos 4 13-09-2003 00:28:51


La franja horaria es GMT +2. Ahora son las 03:17:18.


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