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 23-12-2011
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 14
Vales08 Va por buen camino
Error en codigo SQL!!

Hola foro!

Estoy tratando de realizar una consulta para mi proyecto pero me salta el siguiente error y no puedo ubicarlo, me gustaria que me orienten si puede ser..

---------------------------
Debugger Exception Notification
---------------------------
Project Project_tesis.exe raised exception class EIBInterBaseError with message 'Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, char 138
'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------

y el codigo que utilizo es el siguiente

Código Delphi [-]
with (DM.Q_pac )do
  begin
   SQL.Clear;
                            // Para mi el problema esta en esta primera linea, a lo que entiendo debe ser una comilla pero no se 
   SQL.Text:='select APELLIDO_Y_NOMBBRE, NUMERO_DOCUMENTO, EDAD, SEXO, LOCALIDAD,NOMBRE'+     
           'from PACIENTES, LOCALIDADES, COBERTURAS_MEDICAS'+
           'where LOCALIDADES.LOCALIDAD = ' + QuotedStr(loc.Text)+
           'and COBERTURAS_MEDICAS.NOMBRE = ' + QuotedStr(cm.Text)+
           'and LOCALIDADES.ID_LOC = PACIENTES.ID_LOC'+
           'and COBERTURAS_MEDICAS.ID_COBER = PACIENTES.ID_COBER';
   Open;
  end;

A lo mejor estoy haciendo cualquier cosa, pero es la primera vez que realizo una consulta y me estoy orientando con lo que ustedes aportan en los foros..

Desde ya muchas gracias... Saludos
Responder Con Cita
  #2  
Antiguo 23-12-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.474
Poder: 21
newtron Va camino a la fama
Hola.

En principio veo que te faltan por separar con espacios varias instrucciones, tendrías que hacer esto:
Código Delphi [-]
  SQL.Text:='select APELLIDO_Y_NOMBBRE, NUMERO_DOCUMENTO,EDAD,SEXO,LOCALIDAD,NOMBRE'+
            ' from PACIENTES, LOCALIDADES, COBERTURAS_MEDICAS'+
            ' where LOCALIDADES.LOCALIDAD = ' + QuotedStr(loc.Text)+
            ' and COBERTURAS_MEDICAS.NOMBRE = ' + QuotedStr(cm.Text)+
            ' and LOCALIDADES.ID_LOC = PACIENTES.ID_LOC'+
            ' and COBERTURAS_MEDICAS.ID_COBER = PACIENTES.ID_COBER';

revísalo por si se me escapa alguno.

Saludos
__________________
Be water my friend.

Última edición por newtron fecha: 23-12-2011 a las 19:58:54.
Responder Con Cita
  #3  
Antiguo 23-12-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Vales.

Creo que el error se produce por la forma en que concantenas las constantes literales, más exáctamente la falta de espacios entre expresiones:
Código Delphi [-]
...from PACIENTES, LOCALIDADES, COBERTURAS_MEDICAS'+
   'where LOCALIDADES...
Ya que la cadena quedaría: "from PACIENTES, LOCALIDADES, COBERTURAS_MEDICASwhere LOCALIDADES..."

De todas formas te conviene acostumbrarte a utilizar parámetros para evitar la posibilidad de inyección SQL, por otro lado también es más óptimo.

Proba de este modo:
Código Delphi [-]
  with DM.Q_pac  do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT APELLIDO_Y_NOMBBRE, NUMERO_DOCUMENTO, EDAD, SEXO, LOCALIDAD,NOMBRE ');
    SQL.Add('FROM PACIENTES, LOCALIDADES, COBERTURAS_MEDICAS ');
    SQL.Add('WHERE LOCALIDADES.LOCALIDAD = :LOCALIDAD ');
    SQL.Add('AND COBERTURAS_MEDICAS.NOMBRE = :COBERTURA ');
    SQL.Add('AND LOCALIDADES.ID_LOC = PACIENTES.ID_LOC ');
    SQL.Add('AND COBERTURAS_MEDICAS.ID_COBER = PACIENTES.ID_COBER');
    ParamByName('LOCALIDAD').AsString:= loc.Text;
    ParamByName('COBERTURA').AsString:= cm.Text;
    Open;
  end;

Un saludo.

Edito: No había visto la respuesta del amigo newtron, pero como verás coincido con él en la apreciación.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 23-12-2011 a las 20:11:12.
Responder Con Cita
  #4  
Antiguo 23-12-2011
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 14
Vales08 Va por buen camino
Solucionado

Ahh no me habia dado cuenta, como dije recien nunca hice una consulta de estas y menos concatenadas, ya solucione el problema...

ecfisa gracias por el consejo, la verdad asi es mas facil y ordenado y tiene menos posibilidades de error..
Muchas gracias por la solucion..
Saludos..
y Pasen muy Felicices Fiestas...
Responder Con Cita
  #5  
Antiguo 24-12-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.474
Poder: 21
newtron Va camino a la fama
Cita:
Empezado por Vales08 Ver Mensaje
ecfisa gracias por el consejo, la verdad asi es mas facil y ordenado y tiene menos posibilidades de error..
Muchas gracias por la solucion..
De nada, de nada, me alegro de que hayas solucionado el problema.
__________________
Be water my friend.
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
Porque este código me da error (adjunto código) David JAVA 1 12-03-2009 20:07:27
error en código? identsoft Varios 3 26-11-2007 13:37:32
Error en este código. FF funciona/IE da error papulo HTML, Javascript y otros 7 14-11-2007 09:44:23
Error en codigo Delar Varios 9 30-07-2007 23:41:06
error en el codigo pepelu1975 OOP 10 12-02-2004 13:01:03


La franja horaria es GMT +2. Ahora son las 09:18:37.


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