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 24-04-2007
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
problema busqueda SQL

Hola amigos.... espero me puedan ayudar con un problema de busqueda con select

les cuento... necesito hacer una busqueda con respecto a 2 campos (OT y Sub)... ot es tipo long integer y sub alpha (asignadas en mi tabla paradox)
ahora bien... la busqueda se realiza con un boton desde un form que tiene el siguiente codigo

Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add ('Select *');
Query1.SQL.Add ('FROM Load.db');
Query1.SQL.Add ('WHERE OT = ' + Edit1.Text);
Query1.SQL.Add ('AND Sub =' + Edit2.text);
Query1.Open;

... creo entedender porque ocurre el problema... si es que lo escribo directamente en la propiedad SQL del query, necesito escribir la busqueda del campo Sub entre comillas ('') ya que es de tipo alpha.... digo esto porque si lo hago directamente al SQL del query, con parametros fijos si funciona....

entonces, aqui es donde necesito de su ayuda... de alguna ideo o codigo para poder agregar al SQL una sentencia que contenga comillas ('')... si es que realmete ese el problema

desde ya les agradezco su ayuda y tiempo

gracias
Responder Con Cita
  #2  
Antiguo 24-04-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Código Delphi [-]
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add ('Select *');
Query1.SQL.Add ('FROM Load.db');
Query1.SQL.Add ('WHERE OT = ' + Edit1.Text);
Query1.SQL.Add ('AND Sub =' + quotedstr(Edit2.text));
Query1.Open;

tambien podrías utilizar parámetros...
__________________

Responder Con Cita
  #3  
Antiguo 24-04-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola mjjj
En la sentencia sql, me parece que el campo OT es integer y lo quieres presentar de un edit que es string.
El campo alpha no se que es?
Para mi :
Código Delphi [-]
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:= 'Select * FROM Load.db '+
                 'WHERE OT = ' +IntToStr(Edit1.Text)+ 'AND Sub =' + quotedstr(Edit2.text);
Query1.Open;
Para que usar tanto add?
Saludos
Responder Con Cita
  #4  
Antiguo 24-04-2007
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
muchas gracias contraveneno... exactamente lo que necesita.... funciona perfecto

saludos
Responder Con Cita
  #5  
Antiguo 24-04-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Al usar una instrucción Add por cada línea SQL, en case de que exista un error, el manejador de bases de datos te dirá "error en la línea X" con lo que podras ir a esa línea y corregir el error. Cuando utilizas "SQL.Text" en caso de haber un error, el mensaje siempre será "error en la línea 1" con lo que se hace un poquito complicado ver donde esta el error.

No hay necesidad de:
IntToStr(Edit1.Text)

Ya que la propiedad Text del Edit es de tipo string.
__________________

Responder Con Cita
  #6  
Antiguo 24-04-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola ContraVeneno
Curioso>
Cita:
ot es tipo long integer
Y ot esta en el edit1.text.
Bueno me parece extraño nada mas.
Con respecto a usar add, si uno tiene cualquier sentencia en el sql del query dara error, muchas veces es practico tener la sentencia en este.
Bueno solo opino.
Saludos
Responder Con Cita
  #7  
Antiguo 24-04-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
De hecho, usar Query.SQL.Add es lo mismo que usar Query.SQL.Text. Si agregas tu sentencia SQL por medio de .Add(), igual puedes usar por ejemplo:

showmessage(SQL.Text);

y verás la instrucción... en una sola línea, pero igual la puedes ver.

Como te menciono, la diferencia es que al usar .Add , la sentencia quedará dividida en el número de líneas que lo hayas puesto. En cambio al usar .Text todo quedará en una sola línea.

Las ventajas para mi que utilizo SQL Server y utilizo mucho el profiler (que es una herramienta para monitorear las activadades de la base de datos) es que puedo ver la sentencia SQL bien organizada. Si utilizara .Text, me aparecería toda la consulta en una sola línea la cuál es dificil de leer.
__________________

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
Problema con búsqueda Puche Firebird e Interbase 1 30-06-2006 13:28:48
Problema campos de busqueda Luis Castillo Firebird e Interbase 7 06-01-2006 16:55:23
Problema campos de busqueda Luis Castillo Varios 2 02-11-2005 10:47:31
Problema con busqueda de strings pablo Tablas planas 4 26-04-2005 01:05:49
Problema con fecha en busqueda yanelisroque SQL 8 27-02-2005 02:44:03


La franja horaria es GMT +2. Ahora son las 03:25:01.


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