Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Update a un campo varchar con el contenido de otros tres separados con espaco (https://www.clubdelphi.com/foros/showthread.php?t=57077)

fidel 04-06-2008 20:22:08

Update a un campo varchar con el contenido de otros tres separados con espaco
 
Hola:

FireBird conectado con IBX

Quiero actualizar un campo varchar con el contenido de otros tres separados con un espacio

Sería algo como esto pero escrito correctamente

'update ALUMNOS set TOTGRUPO = NIVEL + espacio + GRUPO + espacio + ETAPA';

TOTGRUPO el campo a actualizar
NIVEL, GRUPO , ETAPA los otros campos de la misma tabla

¿Se puede hacer? ¿Cómo?

Un saludo.

hecospina 04-06-2008 21:05:23

Código SQL [-]
 update ALUMNOS set TOTGRUPO=NIVEL||' '||GRUPO||' '||ETAPA
:)

fidel 04-06-2008 23:30:51

Gracias hecospina.

Código SQL [-]
//Me funciona bien así, sin dejar espacios

'update ALUMNOS set TOTGRUPO=NIVEL||GRUPO||ETAPA'

Código SQL [-]
//Pero necesito un espacio y si pongo esto Delphi me da error: Missing operator or semicolon

'update ALUMNOS set TOTGRUPO=NIVEL||'  '||GRUPO||'  '||ETAPA'

He probado de varias formas más y no va, me suele dar SQL error ... Token Unknown ...

¿Cómo puedo solucionarlo?

Al González 05-06-2008 01:52:49

¿Podrías mostrarnos cómo lo intentas desde Delphi?

(considera que también en Delphi las comillas sencillas se toman como delimitadores de cadenas, y por ello a veces es conveniente utilizar la función QuotedStr o bien comillas duplicadas para los valores String que contienen comillas).

Saludos.

Al.

hecospina 05-06-2008 14:30:12

Muy extraño que no te funcione, yo hice las pruebas y me funciona, revisa lo que te dice Al sobre utilizar la comilla doble

otra opcion es crear en la tabla un campo nuevo con el caracter espacio y concatenarlo de este forma

Código SQL [-]
update ALUMNOS set TOTGRUPO=NIVEL||nuevocampo||GRUPO||nuevocampo||ETAPA

Si es un cambio que vas a hacer solo una vez te funcionara

Si va a ser constante te recomiendo crear un campo "computed by" en la tabla

TOTGRUPO COMPUTED BY NIVEL||' '||GRUPO||' '||ETAPA

y dejar que la base de datos haga el trabajo
:)

fidel 05-06-2008 20:30:13

Muchas gracias a los dos.

Me he dado cuenta que podía pasar el espacio por parámetro así (funciona bien)

Código SQL [-]
DM.IBDSAlumBus.SelectSQL.Text := 'update ALUMNOS set TOTGRUPO=NIVEL||:ESPACIO||GRUPO||:ESPACIO||ETAPA';
DM.IBDSAlumBus.ParamByName('ESPACIO').AsString := ' ';

Un saludo.


La franja horaria es GMT +2. Ahora son las 14:06:50.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi