exportar tabla a txt manteniendo el tamaño de todos los campos aunque estos sean nulos

26/05/2015 - 13:51 por kko | Informe spam
Buenas

Necesito exportar una tabla a txt, para ello habia pensado hacerlo mediante una cosulta.

ejemplo tabla:

campo1 : AAA 'tamaño 3
campo2: 'tamaño 10
campo3: CC tamaño 3


si hago una consulta normal:

select campo1 & camp2 & campo3 from tabla;

saldria esto:

AAACC



yo lo que querria es que me saliera esto otro:

AAA CC


en plan cutre, que si funciona seria:

select campo1& iif(campo2 is null,' ',campo2)&campo3 from tabla;


la solucion es sencilla si fueran 3 campos, pero si tengo 20...
seria bueno que hubiera una funcion que se le pasara el campo y el tamaño del campo y el hiciera la conversion
Alguien podria ayudarme ?

Un millon de gracias

Preguntas similare

Leer las respuestas

#1 José Mª Fueyo
26/05/2015 - 16:58 | Informe spam
Hola
No nos comentas que versión de Access utilizas.
Deberías crearte una especificación de exportación de texto (ancho fijo), y utilizarla mediante el método acExportFixed del objeto DoCmd.

Salu2,
José Mª Fueyo
Respuesta Responder a este mensaje
#2 kko
26/05/2015 - 20:16 | Informe spam
Perdonar, utilizo Access 2003

Acabo de encontrar una funcion , la rpad, retocada un poquillo para que me acepte los campos nulos que me soluciona en parte el problema, digo en parte porque no se porque en algunos registros con datos me sale #Error.

' chr(32) corresponde al espacio en blanco

select Rpad([tabla1].campo1,chr(32),3)& Rpad([tabla1].campo2,chr(32),10)&
Rpad([tabla1].campo3,chr(32),3) as Expr1 from tabla1;

Aprovecho tambien para preguntar si existe un limite de longitud en el campo Expr1

os paso dicha funcion por si a alguien pueda servirle:

Function Rpad(MyValue$, MyPadCharacter$, MyPaddedLength%)
Dim PadString As String

If (Len(MyValue) > 0) Then
PadLength = MyPaddedLength - Len(MyValue)
Else
PadLength = MyPaddedLength

End If

For x = 1 To PadLength
PadString = MyPadCharacter & PadString
Next
Rpad = MyValue + PadString

End Function
Respuesta Responder a este mensaje
#3 José Mª Fueyo
27/05/2015 - 09:35 | Informe spam
Hola
Sigo pensando que con una especificación de importación/exportación lo tendrías solucionado.
Mira a ver sí esto te puede servir
http://www.blueclaw-db.com/export-s...ations.htm

Respecto a los valores que te dan error con tu función, ¿la has depurado?

Salu2,
José Mª Fueyo
Respuesta Responder a este mensaje
#4 kko
27/05/2015 - 09:43 | Informe spam
si ya lo he solucionado , he modificado la funcion rpad

Public Function RPad1(s As String, L As Integer) As String
If Len(s) < L Then
RPad1 = s & Space(L - Len(s))
Else
RPad1 = s
End If

y en la consulta para que los campos nulos me salga su tamaño:

select iif([tabla1].[campo2] is null,space(10);rpad([tabla1].[campo2],10))

con esto consigo que si el campo es nulo , me ponga como formato el tamaño del campo y si no lo es y el tamaño de len(campo2) <10 me lo rellene de espacios. Con el metodo que tu comentas esto no me lo hacia.

Gracias de todos modos
Respuesta Responder a este mensaje
#5 José Mª Fueyo
27/05/2015 - 09:54 | Informe spam
Hola de nuevo
Tienes la función Nz que permite tratar los valores nulos. Mira en la ayuda para más información.

Salu2,
José Mª Fueyo
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida