Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Insertar coma en una tabla paradox (https://www.clubdelphi.com/foros/showthread.php?t=94906)

Frami 16-10-2020 14:42:48

Insertar coma en una tabla paradox
 
Hola,

Tengo una tabla paradox donde aparecen varias columnas numéricas mal formateadas debido a que no se ha tenido en cuenta el separador decimal de la ','.
Ahora me gustaría poder insertar la coma en el campo para que el formato sea correcto.
Por ejemplo tengo la tabla esta:

PuBaseHt PuBaseTtc PuHt PuTtc TxRem MtHt MtTtc
1050000 1270500 1050000 1270500 0 8400 10164
340000 411400 340000 411400 0 306000 370260

y quiero insertar una coma en la posición 3 de cada columna para que quede algo así:
PuBaseHt PuBaseTtc PuHt PuTtc TxRem MtHt MtTtc
10,50000 12,70500 10,50000 12,70500 0 84,0 10,164
34,0000 41,1400 34,0000 41,1400 0 30,6000 37,0260

¿Alguien puede ayudarme?

GRACIAS

Casimiro Noteví 16-10-2020 17:20:55

Hola, pero eso es texto, ¿en la tabla paradox también es texto?

Frami 16-10-2020 18:14:01

No, el texto es el nombre del campo y yo lo que quiero es cambiar el contenido de los campos añadiendo la coma.

Es decir, PuBaseHt es el nombre de la columna y 1050000 es donde quiero añadir la coma para que quede 10,50000.

Pensaba con un INSERT INTO "Nombre tabla" y añadir nombre campo, pero no sé decirle que inserte la coma en la posición 3...

Casimiro Noteví 16-10-2020 18:40:21

¿Entonces en la tabla los valores son cadenas de texto y no son números?

marco3k 16-10-2020 19:05:35

-Lo que yo haría primero es hacer un backup de tus tablas.
-En visual foxpro se arregla ese problema con este comando vfp, asumiendo que te necesitas los 2 primeros caracteres, en la tercera columna la coma y agregando los demás caracteres (suponiendo que el campo es de 20 caracteres):
Código SQL [-]
REPLACE ALL MONTO WITH LEFT(MONTO,2) + "," + TRIM(SUBSTR(MONTO,3,20))

-Ahora en paradox que yo sepa no es compatible con comandos vfp pero puedes adecuar ese comando vfp en sentencias sql para paradox.

-Lo otro seria hacer un programa en delphi para conectarte a la tabla y hacer un bucle para recorrer todas la filas e implementar el comando vfp a cada fila.

Saludos.

Frami 19-10-2020 09:25:47

Cita:

Empezado por Casimiro Notevi (Mensaje 538752)
¿Entonces en la tabla los valores son cadenas de texto y no son números?


Hola,

Los valores ahora son texto, pero realmente deben de ser numéricos.
Si consigo poner la coma, pasarán a ser números.

Casimiro Noteví 19-10-2020 10:35:17

Cita:

Empezado por Frami (Mensaje 538762)
Hola,
Los valores ahora son texto, pero realmente deben de ser numéricos.
Si consigo poner la coma, pasarán a ser números.

Si los campos son de tipo texto, al ponerle la coma seguirán siendo textos con una coma.
¿Por qué no cambias a campos numéricos?

Frami 19-10-2020 11:29:12

Cita:

Empezado por marco3k (Mensaje 538753)
-Lo que yo haría primero es hacer un backup de tus tablas.
-En visual foxpro se arregla ese problema con este comando vfp, asumiendo que te necesitas los 2 primeros caracteres, en la tercera columna la coma y agregando los demás caracteres (suponiendo que el campo es de 20 caracteres):
Código SQL [-]
REPLACE ALL MONTO WITH LEFT(MONTO,2) + "," + TRIM(SUBSTR(MONTO,3,20))

-Ahora en paradox que yo sepa no es compatible con comandos vfp pero puedes adecuar ese comando vfp en sentencias sql para paradox.

-Lo otro seria hacer un programa en delphi para conectarte a la tabla y hacer un bucle para recorrer todas la filas e implementar el comando vfp a cada fila.

Saludos.


HOLA,

A partir de tu comando vfp he creado el mismo en paradox:

Update "DOCLI.DB" set PuBaseHt = (SUBSTRING(PuBaseHt FROM 1 FOR 2) + "," + SUBSTRING(PuBaseHt FROM 3 FOR 20))

Pero no me funciona y aparece un mensaje de error que dice: "Diferencia de Tipo en una expresión"

¿Alguna idea de porque no funciona?

Gracias

Frami 19-10-2020 11:33:27

Cita:

Empezado por Casimiro Notevi (Mensaje 538764)
Si los campos son de tipo texto, al ponerle la coma seguirán siendo textos con una coma.
¿Por qué no cambias a campos numéricos?

¿Cómo puedo cambiarlos a numéricos?

Con el comando este
Update "DOCLI.DB" set PuBaseHt = (SUBSTRING(PuBaseHt FROM 1 FOR 2) + "," + SUBSTRING(PuBaseHt FROM 3 FOR 20))

Me aparece un mensaje de error que dice: "Diferencia de Tipo en una expresión"
¿Debe ser por que el tipo del campo no es numérico?

marco3k 20-10-2020 06:57:22

Cita:

Empezado por Frami (Mensaje 538765)
HOLA,

A partir de tu comando vfp he creado el mismo en paradox:

Update "DOCLI.DB" set PuBaseHt = (SUBSTRING(PuBaseHt FROM 1 FOR 2) + "," + SUBSTRING(PuBaseHt FROM 3 FOR 20))

Pero no me funciona y aparece un mensaje de error que dice: "Diferencia de Tipo en una expresión"

¿Alguna idea de porque no funciona?

Gracias

Me parece que la consulta sql sería asi :
Código SQL [-]
Update "DOCLI.DB" set PuBaseHt = SUBSTRING(PuBaseHt FROM 1 FOR 2)  || "," || TRIM(SUBSTRING(PuBaseHt FROM 3 FOR 20))

Mi editor database desktop para paradox no abre, pero debería funcionar esta sentencia sql.

Saludos.

marco3k 21-10-2020 06:03:43

Cita:

Empezado por Frami (Mensaje 538766)
¿Cómo puedo cambiarlos a numéricos?

Con el comando este
Update "DOCLI.DB" set PuBaseHt = (SUBSTRING(PuBaseHt FROM 1 FOR 2) + "," + SUBSTRING(PuBaseHt FROM 3 FOR 20))

Me aparece un mensaje de error que dice: "Diferencia de Tipo en una expresión"
¿Debe ser por que el tipo del campo no es numérico?

Ese comando que te indique y el que tu escribiste son para campos tipo texto. Ahora si deseas pasar a numérico primero debes indicar el punto decimal ya que si lo mandas así como esta por ejemplo el valor del campo "MtTtc" en la segunda fila que escribiste en tu 1er post dice "370260" que seria un número entero de 6 dígitos, al ponerle la coma decimal sería "37,0260" seria un número de 2 dígitos y 4 decimales. Una vez hecho estos cambios en el editor de base de datos de paradox puedes cambiar el campo a valor numérico.

Avisas como te fue.

Saludos


La franja horaria es GMT +2. Ahora son las 07:19:41.

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