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 12-01-2011
Avatar de Adrian Murua
Adrian Murua Adrian Murua is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tucuman - Argentina
Posts: 45
Poder: 0
Adrian Murua Va por buen camino
Unhappy Error en concatenacion de Sentencia SQL, Firebird 2.5

Estimados Amigos :

Tengo esta sentencia SQL, definida en una variable de delphi, que luego al intentar ejecutarla en un dataset, me da un error :

el Error es :

" Dynamic SQL error
SQL error code = -104
Token unknown - line 1, column 715
,

"
la Sentencia SQL es :

Código SQL [-]

 FNegSQL := 'SELECT  EMPRESAS.CUIT,  EMPRESAS.NOMBRE as EMPRESA,                  '+
            ' BANCOS.redes_id RED,                                                '+
            ' BANCOS.zonas_id ZONA,                                               '+
            ' BANCOS.SUCURSAL,                                                    '+
            ' BANCOS.NOMBRE as BANCO,                                             '+
            ' PRODUCTOS.NOMBRE AS PRODUCTO,                                       '+
            ' SITUACIONES.NOMBRE AS SITUACION,                                    '+
            ' ESTADOS.NOMBRE AS ESTADO,                                           '+
            ' NEGOCIOS.COTIZACION,                                                '+
            ' NEGOCIOS.DETALLE,                                                   '+
            ' (CONTACTOS.APELLIDO || '+', '+ ' || CONTACTOS.NOMBRE) as CONTACTO,  '+
            ' (OPERADORES.APELLIDO || '+', '+ ' || OPERADORES.NOMBRE) AS OPERADOR,'+
            ' PRODUCTOS.COLOR AS PCOLOR,                                          '+
            ' SITUACIONES.COLOR AS SCOLOR,                                        '+
            ' ESTADOS.COLOR AS ECOLOR,                                            '+
            ' NEGOCIOS.ID AS NEGOCIOS_ID,                                         '+
            ' NEGOCIOS.bancos_id as BANCOS_ID,                                    '+
            ' NEGOCIOS.empresas_id AS EMPRESAS_ID,                                '+
            ' NEGOCIOS.productos_id PRODUCTOS_ID,                                 '+
            ' NEGOCIOS.situaciones_id AS SITUACIONES_ID,                          '+
            ' NEGOCIOS.estados_id AS ESTADOS_ID,                                  '+
            ' NEGOCIOS.contactos_id AS CONTACTOS_ID,                              '+
            ' NEGOCIOS.operadores_id AS OPERADORES_ID,                            '+
            ' NEGOCIOS.activo                                                     '+
            '                                                                     '+
            'FROM                                                                 '+
            ' NEGOCIOS                                                            '+
            ' INNER JOIN BANCOS ON (NEGOCIOS.BANCOS_ID = BANCOS.ID)               '+
            ' INNER JOIN EMPRESAS ON (NEGOCIOS.EMPRESAS_ID = EMPRESAS.ID)         '+
            ' INNER JOIN CONTACTOS ON (NEGOCIOS.CONTACTOS_ID = CONTACTOS.ID)      '+
            ' INNER JOIN OPERADORES ON (NEGOCIOS.OPERADORES_ID = OPERADORES.ID)   '+
            ' INNER JOIN PRODUCTOS ON (NEGOCIOS.PRODUCTOS_ID = PRODUCTOS.ID)      '+
            ' INNER JOIN SITUACIONES ON (NEGOCIOS.SITUACIONES_ID = SITUACIONES.ID)'+
            ' INNER JOIN ESTADOS ON (NEGOCIOS.ESTADOS_ID = ESTADOS.ID)';

Me imagino que el error se encuentra en la concatenación del apellido y el nombre del contacto.

La idea de la concatenacion es que se vea " Apellido, Nombre", a mi parecer la concatenacion esta bien echa, pero al parecer no es asi.

uso. Delphi 2010 y Firebird 2.5 , sobre Windows 7 y componentes IBX (Dataset).

Desde ya muchas gracias.
__________________
Adrián Murúa.
Responder Con Cita
  #2  
Antiguo 12-01-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Has verificado desde ibexpert, por ejemplo, de que la sentencia se ejecuta bien?
Responder Con Cita
  #3  
Antiguo 12-01-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Estoy casi seguro que es donde tú mencionas. Veo un error en la concanetación y es que estás utilizando unas Comas (,) que están de más. Eso es lo que te está indicando el error, que tienes un identificador desconocido, en este caso una coma. Tu concanetación debería de quedar así:

Código Delphi [-]
' (CONTACTOS.APELLIDO || ' + ''', ''' + ' || CONTACTOS.NOMBRE) as CONTACTO,  '+
' (OPERADORES.APELLIDO || ' + ''', ''' + ' || OPERADORES.NOMBRE) AS OPERADOR,' +

Saludos,
Chris
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #4  
Antiguo 12-01-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Todavía no me he tomado el café, así que no tengo las neuronas en
funcionamiento, pero me parece que sobra todo eso, no?
O sea,:
Código:
' (CONTACTOS.APELLIDO || '+', '+ ' || CONTACTOS.NOMBRE) as CONTACTO,  '+
' (OPERADORES.APELLIDO || '+', '+ ' || OPERADORES.NOMBRE) AS OPERADOR,'+
Puede quedarse así:
Código:
' (CONTACTOS.APELLIDO || CONTACTOS.NOMBRE) as CONTACTO,  '+
' (OPERADORES.APELLIDO || OPERADORES.NOMBRE) AS OPERADOR,'+
Responder Con Cita
  #5  
Antiguo 12-01-2011
Avatar de pacopenin
pacopenin pacopenin is offline
Miembro
 
Registrado: sep 2010
Ubicación: Asturias
Posts: 382
Poder: 14
pacopenin Va por buen camino
Hola.

también podrías usar

Código Delphi [-]
' (CONTACTOS.APELLIDO || ' + QuotedStr(', ') + ' || CONTACTOS.NOMBRE) as CONTACTO,  '+

Está en SysUtils.

Saludos.
__________________
http://www.gestionportable.com
Responder Con Cita
  #6  
Antiguo 13-01-2011
Avatar de Adrian Murua
Adrian Murua Adrian Murua is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tucuman - Argentina
Posts: 45
Poder: 0
Adrian Murua Va por buen camino
Thumbs up

Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Has verificado desde ibexpert, por ejemplo, de que la sentencia se ejecuta bien?
Gracias Casimiro Notevi por responder, si la ejecute a la sentencia en el ibexpert y funciona bien , da el error cuando la ejecuto desde el dataset de las ibx de delphi.

Cita:
Empezado por Chris Ver Mensaje
Estoy casi seguro que es donde tú mencionas. Veo un error en la concanetación y es que estás utilizando unas Comas (,) que están de más. Eso es lo que te está indicando el error, que tienes un identificador desconocido, en este caso una coma. Tu concanetación debería de quedar así:

Código Delphi [-]
' (CONTACTOS.APELLIDO || ' + ''', ''' + ' || CONTACTOS.NOMBRE) as CONTACTO,  '+
' (OPERADORES.APELLIDO || ' + ''', ''' + ' || OPERADORES.NOMBRE) AS OPERADOR,' +

Saludos,
Chris
Gracias Chris por tu respuesta, tenes razon me hice un lio con las comillas simples, he probado tu correccion y me ha funcionado bien.

Cita:
Empezado por Casimiro Notevi Ver Mensaje
Todavía no me he tomado el café, así que no tengo las neuronas en
funcionamiento, pero me parece que sobra todo eso, no?
O sea,:
Código:
' (CONTACTOS.APELLIDO || '+', '+ ' || CONTACTOS.NOMBRE) as CONTACTO,  '+
' (OPERADORES.APELLIDO || '+', '+ ' || OPERADORES.NOMBRE) AS OPERADOR,'+
Puede quedarse así:
Código:
' (CONTACTOS.APELLIDO || CONTACTOS.NOMBRE) as CONTACTO,  '+
' (OPERADORES.APELLIDO || OPERADORES.NOMBRE) AS OPERADOR,'+
Gracias de Nuevo Casimiro, como le dije a Chris, me hice un lio con las comillas simples, ya habia probado como tu dices, pero la idea es tener el apellido, separado con una coma, del nombre.

Cita:
Empezado por pacopenin Ver Mensaje
Hola.

también podrías usar

Código Delphi [-]
' (CONTACTOS.APELLIDO || ' + QuotedStr(', ') + ' || CONTACTOS.NOMBRE) as CONTACTO,  '+

Está en SysUtils.

Saludos.
Gracias por tu respuesta pacopenin, he optado usar tu sugerencia ya que el codigo es mas simple que con las comillas.

Gracias a todos ustedes.

Ssludos.
__________________
Adrián Murúa.
Responder Con Cita
  #7  
Antiguo 13-01-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Pero lo has solucionado?
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 con " en sentencia sql Besto SQL 4 05-01-2008 19:57:26
Duda en sentencia de firebird vivamotos Firebird e Interbase 6 10-09-2007 11:17:18
Error con sentencia SQL Coco_jac SQL 7 28-11-2005 21:00:52
error de sentencia if , else Epunamun Conexión con bases de datos 8 29-07-2005 13:23:24
sentencia sql echa abajo firebird CarlosN Firebird e Interbase 4 06-04-2004 00:11:29


La franja horaria es GMT +2. Ahora son las 05:57:59.


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