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 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
  #2  
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.052
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Pero lo has solucionado?
Responder Con Cita
  #3  
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
Cool

Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Pero lo has solucionado?
Si Casimiro, Lo he solucionado, tanto el codigo propuesto por Chris, como el de pacopenin, me han funcionado, pero he optado por la Funcion
Código:
QuotedStr(', ');
de pacopenin, la cual no la conocía, ya que el codigo queda mas limpio, por decirlo de alguna manera. Muchas Gracias
__________________
Adrián Murúa.
Responder Con Cita
  #4  
Antiguo 01-04-2011
g_ferrada g_ferrada is offline
Miembro
NULL
 
Registrado: mar 2011
Posts: 13
Poder: 0
g_ferrada Va por buen camino
Amigos
Tengo un problema con las comillas (') que no logro solucionar. Escribo la sentencia SQL en la propiedad SQL.TEXT, de la siguiente forma:

Query1.SQL.Append('delete from genericos where id_equipo = ''' + frListTB1.dsListTB.DataSet.FieldByName('id_equipo').AsString + '''');

pero Delphi insiste en colocarme las comillas dos veces y me lo deja así:

delete from genericos, where id_equipo = ''EQUIPO 100''
y me coloca dos veces las comillas.

No soy un maestro en Delphi, pero hago esto desde muchos años, y ahora he decidido comenzar a usar Delphi2010 y me encontrado con esta dificultad (entre otras). El código anterior me funciona en Delphi7.

He intentado usando chr(39), #39, QuotedStr, AnsiQuotedStr... Si usara la comilla doble el tema anda:

Query1.SQL.Append('delete from genericos where id_equipo = "' + frListTB1.dsListTB.DataSet.FieldByName('id_equipo').AsString + '"');

y queda asi:
delete from genericos, where id_equipo = "EQUIPO 100"
pero esto Firebird no me lo reconoce (el delimitador de texto es comilla simple).

Si le saco las comillas:

Query1.SQL.Append('delete from genericos where id_equipo = ' + frListTB1.dsListTB.DataSet.FieldByName('id_equipo').AsString + '');

el resultado tampoco me sirve:
delete from genericos, where id_equipo = EQUIPO 100

Lo que me falta es probar otro camino usando parámetros en la consulta, pero me figuro que también tendré que preparar cadenas de texto, y la verdad, me cuesta creer que Delphi haya caído en un error tan burdo (y que nadie más se haya dado cuenta) así que prefiero pensar que el problema soy yo.
¿Habrá que cambiar alguna opción en Delphi para que funcione como lo hacía en mi querido Delphi7?

Agradeceré ayuda, por favor.
Saludos
Responder Con Cita
  #5  
Antiguo 01-04-2011
g_ferrada g_ferrada is offline
Miembro
NULL
 
Registrado: mar 2011
Posts: 13
Poder: 0
g_ferrada Va por buen camino
...Bueno, salí del paso usando parámetros:

SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Append('delete from genericos where id_equipo = :id_equipo');
SQLQuery1.Params.Clear;
SQLQuery1.Params.CreateParam(ftString,'id_equipo',ptUnknown);
SQLQuery1.ParamByName('id_equipo').AsString:= frListTB1.dsListTB.DataSet.FieldByName('id_equipo').AsString;
SQLQuery1.ExecSQL();

pero personalmente, la otra forma me acomodaba más. Si alguien sabe como hacerlo, se agradece la información.
Responder Con Cita
  #6  
Antiguo 01-04-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.052
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bueno, yo eso lo resumiría un poco:

Código Delphi [-]
SQLQuery1.SQL.Close;
SQLQuery1.SQL.Text('delete from genericos where id_equipo = :id_equipo');
SQLQuery1.ParamByName('id_equipo').AsString:= frListTB1.dsListTB.DataSet.FieldByName('id_equipo').AsString;
SQLQuery1.ExecSQL;

Cita:
Empezado por g_ferrada Ver Mensaje
...Bueno, salí del paso usando parámetros:
pero personalmente, la otra forma me acomodaba más. Si alguien sabe como hacerlo, se agradece la información.
Debe funcionarte de la otra forma, copia aquí el código exacto que estás usando para que le echemos un vistazo.
Responder Con Cita
  #7  
Antiguo 01-04-2011
g_ferrada g_ferrada is offline
Miembro
NULL
 
Registrado: mar 2011
Posts: 13
Poder: 0
g_ferrada Va por buen camino
Como soy porfiado, seguí con el tema, lo curioso es que este código si funciona correctamente en otro unit:

SQLQuery1.SQL.Append('select sucursal from sucursales where codigo_sucursal = ''' + sCodigoSucursal + '''');

donde sCodigoSucursal es un parámetro de entrada de tipo string a una función que contiene dicha línea.


Para probar, en el codigo anterior (donde no funciona) pase el valor del campo del Dataset a una variable string "s" y reemplacé en el SQL.Append:

s:= ClientDataSet1.FieldByName('id_equipo').AsString;
SQLQuery1.SQL.Append('delete from genericos where id_equipo = ''' + s + '''');

pero ocurre el mismo problema. Estoy confundido.
Responder Con Cita
  #8  
Antiguo 01-04-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.052
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Pero el problema es que te sale algún error o que no borra el registro?
Si es un error: ¿qué error es?

Por cierto, recuerda poner el código entre etiquetas, ejemplo:

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 03:07:19.


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