Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Quitar Espacios en Blanco en los Valores de un Query (https://www.clubdelphi.com/foros/showthread.php?t=82430)

vientos 06-03-2013 20:05:29

Quitar Espacios en Blanco en los Valores de un Query
 
Hola Amigos,

Tengo un problema y acudo a ustedes para ver si pueden orientarme, estoy pasando registros de una base de datos de Firebird .GDB a una copia de esta misma hecha en PostgreSQL, para lo cual desarrolle una herramienta de traspaso de todos los registros, hasta aquí todo va muy bien, pero resulta que algunas cadenas se insertan en la base de datos de PostgreSQL con espacios en blanco al final, lo cual provoca que al consultar los datos no todos los registros buscados coincidan por esos espacios al final.

Cabe Mencionar que en la base de datos de Firebird no estan esos espacios en blanco al final y aquí las búsquedas en los registros funcionan perfectamente podrían ayudarme a como quitarle a los valores del query esos espacios en blanco al final?

Aquí pongo mí código:
Código Delphi [-]
 Fmodulo05.qry_AbrirCalificacionesU.First;
           while not Fmodulo05.qry_AbrirCalificacionesU.Eof do
                 begin

                    //avanzamos progress bar por tabla
                    FProgresTransf.LTransferencia.Caption:= 'Transfiriendo tabla Calificaciones';
                    FProgresTransf.Update;
                    with FProgresTransf.PBProgreso do
                       begin
                            Min := 1;
                            Max := Fmodulo05.qry_AbrirCalificacionesU.RecordCount;
                            for posicion := Min to Max do
                                begin
                                    Position := posicion;

                   Fmodulo05.qry_InsertCalificacionesU.Close;
                   Fmodulo05.qry_InsertCalificacionesU.Prepare;
                   Fmodulo05.qry_InsertCalificacionesU.ParamByName('ciclo').AsInteger:=(Fmodulo05.qry_AbrirCalificacion  esUCiclo.Value);
                   Fmodulo05.qry_InsertCalificacionesU.ParamByName('subciclo').AsInteger:=(Fmodulo05.qry_AbrirCalificac  ionesUSubCiclo.Value);
                   Fmodulo05.qry_InsertCalificacionesU.ParamByName('departamento').AsString:=(Fmodulo05.qry_AbrirCalifi  cacionesUDepartamento.Value);
                   Fmodulo05.qry_InsertCalificacionesU.ParamByName('matricula').AsString:=(Fmodulo05.qry_AbrirCalificac  ionesUMatricula.Value);
                   Fmodulo05.qry_InsertCalificacionesU.ParamByName('asignatura').AsString:=(Fmodulo05.qry_AbrirCalifica  cionesUAsignatura.Value);
                   Fmodulo05.qry_InsertCalificacionesU.ParamByName('aspecto').AsInteger:=(Fmodulo05.qry_AbrirCalificaci  onesUAspecto.Value);
                   Fmodulo05.qry_InsertCalificacionesU.ParamByName('evaluacion').AsString:=(Fmodulo05.qry_AbrirCalifica  cionesUEvaluacion.Value);
                   Fmodulo05.qry_InsertCalificacionesU.ParamByName('valor').AsFloat:=(Fmodulo05.qry_AbrirCalificaciones  UValor.Value);
                   Fmodulo05.qry_InsertCalificacionesU.ExecSQL;

                                     contador:=contador+1;
                                     FProgresTransf.LContador.Caption:=IntToStr(contador);
                                     FProgresTransf.Update;
                                     Fmodulo05.qry_AbrirCalificacionesU.Next;

                                end;
                       end;
                 end;

De antemano agradezco sus atenciones

Saludos

Casimiro Notevi 06-03-2013 20:11:27

Usa rpad, aunque el problema será que has declarado los campos en postgresql como char de longitud fija, en lugar de varchar.

Cita:

RPAD()

Available in: DSQL, PSQL
Added in: 2.1
Changed in: 2.5 (backported to 2.1.4)
Description: Right-pads a string with spaces or with a user-supplied string until a given length is reached.
Result type: VARCHAR or BLOB
Syntax:
RPAD (str, endlen [, padstr])
  • This function fully supports text BLOBs of any length and character set.
  • If str is a BLOB, the result is a BLOB. Otherwise, the result is a VARCHAR(endlen).
  • If padstr is given and equals '' (empty string), no padding takes place.
  • If endlen is less than the current string length, the string is truncated to endlen, even if padstr is the empty string.



La franja horaria es GMT +2. Ahora son las 17:20:29.

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