PDA

Ver la Versión Completa : Update a un campo varchar con el contenido de otros tres separados con espaco


fidel
04-06-2008, 20:22:08
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
update ALUMNOS set TOTGRUPO=NIVEL||' '||GRUPO||' '||ETAPA
:)

fidel
04-06-2008, 23:30:51
Gracias hecospina.


//Me funciona bien así, sin dejar espacios

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



//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

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)


DM.IBDSAlumBus.SelectSQL.Text := 'update ALUMNOS set TOTGRUPO=NIVEL||:ESPACIO||GRUPO||:ESPACIO||ETAPA';
DM.IBDSAlumBus.ParamByName('ESPACIO').AsString := ' ';


Un saludo.