Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-09-2014
edwin.simon edwin.simon is offline
Miembro
NULL
 
Registrado: oct 2011
Posts: 30
Poder: 0
edwin.simon Va por buen camino
Question Error de Sintaxis en Sentencia SQL

Hola buena tarde, para todos.
estoy haciendo una pantalla para buscar un registro por tres opciones diferente usando un RadioGroup, todo corre bien pero cuando busco por código no me dice nada y por cédula o nombre me presenta un error de sistnaxi en la clausura From, a continuación como estoy haciendo la busqueda.

Código Delphi [-]
procedure TFrm_Consulta.Edit1Change(Sender: TObject);
const
     STRSQL = 'Select * From Carnet';
begin
 case RadioGroup1.ItemIndex of
 0 : begin
     Qry_BuscarRegistro.Close;
  if (Edit1.Text = '') then begin
      Qry_BuscarRegistro.SQL.Text := STRSQL;
  end
  else begin
       Qry_BuscarRegistro.SQL.Text := STRSQL +
       ' WHERE Codigo_Carnet LIKE ' +QuotedStr('%' +Edit1.Text+ '%');
       end;
       Qry_BuscarRegistro.Open;
       end;
end;
end;
procedure TFrm_Consulta.Edit2Change(Sender: TObject);
const
STRSQL = 'Select * From Carnet';
begin
 case RadioGroup1.ItemIndex of
 1 : begin
     qry_BuscarRegistro.Close;
  if (Edit2.Text = '') then begin
      Qry_BuscarRegistro.SQL.Text := STRSQL;
  end
  else begin
       Qry_BuscarRegistro.SQL.Text := STRSQL +
       'WHERE Codigo_Pasaporte' +QuotedStr('%' +Edit2.Text+ '%');
       end;
       Qry_BuscarRegistro.Open;
end;
end;
end;

procedure TFrm_Consulta.Edit3Change(Sender: TObject);
const
STRSQL = 'Select * From Carnet';
begin
      case RadioGroup1.ItemIndex of
      2 : begin
          Qry_BuscarRegistro.Close;
       if (Edit3.Text = '') then begin
          Qry_BuscarRegistro.SQL.Text := STRSQL
          end
       else begin
          Qry_BuscarRegistro.SQL.Text := STRSQL +
          'where Nombre like '+QuotedStr('%'+Edit3.Text+ '%');
          end;
          Qry_BuscarRegistro.Open;
          end;
          end;

end;

Última edición por Casimiro Notevi fecha: 10-09-2014 a las 20:13:39.
Responder Con Cita
  #2  
Antiguo 10-09-2014
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Inspecciona el valor de Qry_BuscarRegistro.SQL.Text luego de asignarle el sql...
__________________
El malabarista.
Responder Con Cita
  #3  
Antiguo 10-09-2014
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
En Edit2Change y Edit3Change, a diferencia de Edit1Change, en l clúsula else de la sentencia case no dejas un espacio antes de WHERE.

// Saludos
Responder Con Cita
  #4  
Antiguo 10-09-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
roman,

Cita:
Empezado por roman
...En Edit2Change y Edit3Change...la sentencia case no dejas un espacio antes de WHERE...


Nelson.
Responder Con Cita
  #5  
Antiguo 10-09-2014
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
Por otra parte, te recomiendo:
  1. Usar SQL.Lines para agregar líneas a una consulta en lugar de concatenar con SQL.Text
  2. Evitar al máximo posible armar las consultas al vuelo
  3. Usar parámetros en la consulta
  4. Simplificar

Por ejemplo, aun cuando no conozco el resto del código, parecería que puedes usar el mismo evento OnChange para los tres Edit, además de que te puedes evitar la concatenación de la consuta SQL:

Código Delphi [-]
procedure TFrm_Consulta.EditChange(Sender: TObject);
const
  STRSQL = 'select * from Carnet where Codigo_Carnet like "%:codigo%"';

begin
  case RadioGroup1.ItemIndex of
    0:
    begin
      Qry_BuscarRegistro.Close;
      Qry_BuscarRegistro.ParamByName('codigo').AsString := Trim((Sender as TEdit).Text);
      Qry_BuscarRegistro.Open;
    end;
  end;   
end;

Si el control de edición (Edit) está vacío, la consulta quedará así:

Código SQL [-]
select * from Carnet where Codigo_Carnet like "%%"

que de todas maneras te dará todos los registros, así que no hace falta dividir en casos.

Fíjate que así, podrías entonces colocar el texto SQL directamente en el componente Query durante el diseño, en lugar de asignarlo en la ejecución, lo que da claridad a tu código.

// Saludos
Responder Con Cita
  #6  
Antiguo 10-09-2014
edwin.simon edwin.simon is offline
Miembro
NULL
 
Registrado: oct 2011
Posts: 30
Poder: 0
edwin.simon Va por buen camino
mil gracias mamcx y roman, todo corre bien pero no me busca nada y he leído la rutina por doto los puntos y no se que pasa
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
Error de sintáxis simple. H8RS Varios 3 20-05-2012 16:22:25
Error de sintaxis INSERT INTO AlanSlash SQL 11 02-11-2011 03:40:05
Ayuda con error de sintaxis pepon386 ASM y Microcontroladores 0 22-04-2009 19:34:14
Cual es el error de la sintaxis sierraja SQL 9 20-05-2008 02:31:47
!!!error de sintaxis en el INSERT INTO huwabe78 SQL 5 05-12-2006 00:45:55


La franja horaria es GMT +2. Ahora son las 18:20:41.


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