Access - Exportar Consulta a .txt modificando formato campo numérico

 
Vista:
sin imagen de perfil
Val: 12
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Exportar Consulta a .txt modificando formato campo numérico

Publicado por Andre (6 intervenciones) el 30/05/2020 04:06:58
Hola,

Desde un formulario, necesito exportar una consulta a un archivo delimitado con formato .txt para ser importado desde otra aplicación.

Con el siguiente código, he logrado hacer la exportación:

Private Sub Exportar_Click()
DoCmd.TransferText acExportDelim, "Especificacion", "Consulta", "C:\NombreFichero.txt", False, ""
End Sub

Pero dos de los campos (Cantidad y VUnitario) en la consulta son campos numéricos, formato standard con dos decimales (Cantidad: 37920,30 y VUnitario: 1800,00).

En el archivo de texto, necesito que utilicen el siguiente formato (reemplazar la "," de los decimales por ".":
- Cantidad 37920.30
- VUnitario 1800.00

Si bien probé realizar cambio en la configuración de Windows, genera cambios no deseados en esta base de datos y el resto de las aplicaciones del sistema.

Desde ya, gracias por las posibles respuestas.
Saludos,

Andrés
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Exportar Consulta a .txt modificando formato campo numérico

Publicado por Anonimo (3319 intervenciones) el 30/05/2020 09:05:48
Creo entender que se intenta una exportación en CSV y el problema surge de la configuración regional (la coma como separador decimal)

Yo utilizaría (y habrá mas) una de estas posibilidades:

.- La función REPLACE (y en ella permuto la coma por un punto)
1
Salida = Replace([Entrada], ",",".")

La función STR (que a Access le sirve para aplicar una u otra configuración según destino)
1
Numero1= Str(Numero0)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Exportar Consulta a .txt modificando formato campo numérico

Publicado por Andre (6 intervenciones) el 30/05/2020 18:43:35
Gracias, voy a investigar como hacerlo, ya por lo que veo debería primero generar todos los campos con su formato correcto y luego enviar la exportación al archivo .txt o .cvs.
Si alguno me ayuda a generar el código, sería de gran utilidad. Saludos y una vez más gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Exportar Consulta a .txt modificando formato campo numérico

Publicado por Anonimo (3319 intervenciones) el 30/05/2020 20:53:53
Yo lo haría en la exportación, en tiempo real.

Para crear esa cadena de texto con formato consensuado una de las formas de hacerlo es abrir un recordset con los registros implicados y en el orden concertado.

Luego se abre un canal para escribir y se envía a el la información (ojea algo sobre Print # )

Una primicia:

1
2
MiSQL = "V:\Remesa_" & Format(Date, "mmmm") & ".csv"
Open MiSQL For Output Access Write As #Dato_N
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Exportar Consulta a .txt modificando formato campo numérico

Publicado por Andre (6 intervenciones) el 02/06/2020 01:22:08
Lo he logrado con el siguiente comando, el cual genera un nombre de archivo diferente para cada exportación.

La consulta cuenta con un solo campo, que contiene todos los datos separados por coma (,) provenientes de una consulta previa en la que tiene los campos necesarios, para realizar el intercambio de datos entre programas.

Para realizar el cambio de formato regional en los números (cambiar coma por punto), tuve que realizar una consulta un poco compleja:

Uno de los campos se llama VUnit (con formato original de tabla Estándar con 2 decimales) = 19530,25

En la consulta primaria, genero nuevos campos:

A: Int([VUnit]) dando como resultado: 19530

B: B: SiInm([VUnit]-Int([VUnit])=0;"00";Medio([VUnit]-Int([VUnit]);3;2)) dando como resultado "00" en caso de ser un número entero. Si tiene decimales, arroja como resultado los dos primeros, en este caso = 25

VaUnit: [A] & "." & [B]

Este último campo arroja como resultado "19530.25", que es el valor deseado que irá a la consulta final. El mismo procedimiento se realiza con los otros 2 campos numéricos que tiene la consulta.

Me imagino que los programadores se deben estar agarrando la cabeza, pero he buscado mil alternativas y solo he logrado la solución de esta forma.

Luego, al botón ExpConsulta del formulario, le agregué el siguiente código:

Private Sub ExpConsulta Click()

Dim AA As String
Dim BB As String
Dim CC As String
Dim DD As String

AA = Month(Date)
BB = Day(Date)
CC = Hour(Time)
DD = Minute(Time)

Archivo = "D:\xxxxxxx\" & AA & BB & CC & DD & ".txt"

DoCmd.TransferText acExportDelim, "ExportaciónGuardada", "NombreConsulta", Archivo, False, ""


End Sub


Desde ya, muchas gracias y quedo a la espera de cualquier sugerencia que pueda mejorar el proceso.
Un abrazo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Exportar Consulta a .txt modificando formato campo numérico

Publicado por Anonimo (3319 intervenciones) el 02/06/2020 08:06:24
VaUnit: [A] & "." & [B]

===> VaUnit: Str(VUnit)

Archivo = "D:\xxxxxxx\" & AA & BB & CC & DD & ".txt"

===> Archivo = "D:\xxxxxxx\" & Format(Now; "mmddhhnn") & ".txt"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Exportar Consulta a .txt modificando formato campo numérico

Publicado por Andre (6 intervenciones) el 03/06/2020 03:01:34
Gracias Anonimo...

Realmente me simplificó muchísimo tu aporte. Poder resumir los procesos con la instrucción VaUnit: Str(VUnit) es genial.
Estoy intentando que el sistema receptor de los datos, acepte de la manera que arroja el resultado:

Número entero sin decimales: 18430
Número entero con decimales: 13339.14
Número decimal: .14

Cual sentencia debería utilizar para que los número en el resultado de la consulta salgan:
Número entero sin decimales: 18430.00
Número entero con decimales: 13339.14
Número decimal: 0.14

Mil gracias,
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Exportar Consulta a .txt modificando formato campo numérico

Publicado por Anonimo (3319 intervenciones) el 03/06/2020 11:41:01
he modificado TODO esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub ExpConsulta Click()
 
Dim AA As String
Dim BB As String
Dim CC As String
Dim DD As String
 
AA = Month(Date)
BB = Day(Date)
CC = Hour(Time)
DD = Minute(Time)
 
Archivo = "D:\xxxxxxx\" & AA & BB & CC & DD & ".txt"

Por esto:

1
Archivo = "D:\xxxxxxx\" & Format(Now; "mmddhhnn") & ".txt"


Creo que se aprecia el poder de esa función (FORMAT) que en la ayuda de Access (F1) viene muy bien explicada con abundantes ejemplos en función de cada tipo de dato.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Exportar Consulta a .txt modificando formato campo numérico

Publicado por Andre (6 intervenciones) el 03/06/2020 17:07:18
Si, lo había apreciado, disculpas por no mencionarlo en el mensaje anterior. Otra gran simplificación y en estos momentos estoy analizando estudiando a pleno la función Format.

Estoy intentando solucionar el tema de los decimales, con la función: FormatNumber , que debería darme la opción de cambiar la cofiguración decimal.

Por ahora la mejor solución que he encontrado, es la siguiente:

VaUnit: Reemplazar(FormatoNúmero([VUnit];2;-1;0;0);",";".")

Una vez más, gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Exportar Consulta a .txt modificando formato campo numérico

Publicado por Andre (6 intervenciones) el 03/06/2020 19:16:49
FINALMENTE RESUELTO, quedando de la siguiente manera.

Desde un formulario, selecciono registros que definen una consulta que obtiene de 6 tablas diferentes los datos deseados.

A partir de esta, generé una nueva consulta (con un solo campo) con el siguiente código, utilizando las opciones sugeridas por Anonimo (Replace y FormatNumber):

SELECT [CLI] & "," & [ART] & "," & [DESC] & "," & Replace(FormatNumber([Cant],2,-1,0,0),",",".") & "," & Replace(FormatNumber([VUnit],3,-1,0,0),",",".") & "," & Replace(FormatNumber([Sub],2,-1,0,0),",",".") & "," & [REM] AS EXP
FROM [0820 BaseGeneraFact] LEFT JOIN [082011 RemitosIncluidos] ON [0820 BaseGeneraFact].IdRemito = [082011 RemitosIncluidos].RemitoId
WHERE ((([082011 RemitosIncluidos].GenerarFacturaId)=[Formularios]![301011 GenerarFactura]![IdGenerarFact]))
ORDER BY [0820 BaseGeneraFact].IdRemito, [082011 RemitosIncluidos].IdRemFacturar;

arrojando como resultado una línea por registro seleccionado, con los datos separados por coma (formato necesario para su exportación a txt:

000391,FLE0028,10091 R N° 24034 12/3 TOR-MDZ Santiago,1.00,43000.000,43000.00,000100024034
000391,FLE0028,10091 R N° S4034 Seguro de Carga,300000.00,0.008,2400.00,000100024034

Finalmente, en el formulario, generé un código para el botón exportación que utilizando la sentencia sugerida:

Archivo = "D:\xxxxxxx\" & Format(Now; "mmddhhnn") & ".txt"

y .... el programa receptor ha recibido los datos correctamente!!!!

Muchísimas gracias estimado Anónimo, ya que he logrado con tu aporte eliminar 3 consultas en la base de datos y al menos 15 líneas en el código de exportación.

Saludos!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar