Access - Error exportando a TXT (con archivo de especif.)

 
Vista:

Error exportando a TXT (con archivo de especif.)

Publicado por Paco (38 intervenciones) el 20/05/2009 23:47:48
Hola, he buscado y leído bastante sobre como exportar una CONSULTA a un fichero de texto (TXT), pero el caso es que no me funciona, yo tengo una tabla y sobre esa tabla he creado una consulta con sólo unos cuantos campos de la tabla que son los datos que me interesan, y quiero que la exportación se haga con tabulaciones entre campo y campo y sin comillas.

He ído a Archivo Exportar, teniendo seleccionada la tabla, ya que si selecciono la consulta no me dá las opciones de crear un archivo de especificaciones,

En el archivo de especificaciones hago todo bien y lo guardo dándole un nombre (ESPECIFICACION_1), luego en el formulario de donde tomo los datos de la consulta tengo esto:

La consulta se llama CORREOS_EXPORTA

DoCmd.TransferText acExportDelim, "ESPECIFICACION_1", "CORREOS_EXPORTA", "C:CORREO.TXT", False, ""

Pues bien, me arroja el siguiente error: "los datos que esta exportando no coinciden con el formato descrito en el archivo schema.ini"

Yo no he hecho nada con el archivo schema.ini, ni tan siquiera lo he creado, he pensado que es porque los campos de la consulta no son todos los que hay en la tabla que es con la que he creado el archivo de especificaciones, pero según creia yo el archivo de especificaciones valía para cualquier tabla, y/o consulta sin tener en cuenta campos ni nada, o no lo sé, la verdad es que estoy hecho un lío.

Gracias.
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

RE:Error exportando a TXT (con archivo de especif.

Publicado por Enrique (1299 intervenciones) el 21/05/2009 12:15:40
Hola Paco:
Hay una forma más fácil de crear un fichero de texto con los campos selecionados en una consulta, sin necesidad de usar el comando TransferText, que como tu sabes necesita crear previamente una Expecificación que suele dar problemas. Te aconsejo que lo hagas de esta otra forma.

Necesitas un Formulario con un Botón de Comando: Comando1 y un Módulo.

'En la Sección de declaraciones de la ventana VBA de un Formulario:
Option Compare Database
Private cnn As ADODB.Connection
Private rst As ADODB.Recordset
Option Explicit

Evento Al hacer click de un botón de comando en el mismo Formulario:
Private Sub Comando1_Click()
Set cnn = Application.CurrentProject.Connection
Set rst = New ADODB.Recordset
rst.Open "Select Campo1, Campo2, Campo4, Campo7, Campo 10 From TablaOrigen", cnn, adOpenStatic, adLockOptimistic
Call Crea_Fichero(CurrentProject.path & "Mi Fichero.txt", rst)
MsgBox "El Fichero se ha creado correctamente en " & CurrentProject.path & ".", vbInformation, "Crear Fichero de texto"
rst.Close: Set rst = Nothing
cnn.Close: Set cnn = Nothing
End Sub

'En un Módulo: (Aquí no tienes que cambiar NADA, solo el Space(2) si quieres más o menos de dos espacios entre Campos):
Option Compare Database
Option Explicit

Function Crea_Fichero(ruta As String, rst As ADODB.Recordset) As Boolean
On Error GoTo Err_function

Dim Columna
Dim Fila As Integer

Open ruta For Output As #1
rst.MoveFirst

For Fila = 0 To rst.RecordCount - 1
Print #1, Trim(rst.Fields(0));
For Columna = 1 To rst.Fields.Count - 1
'Deja 2 espacios en blanco entre cada campos del registro
Print #1, Space(2) & Trim(rst.Fields(Columna));
Next

'Crea una nueva línea por cada registro
Print #1, Chr(13)

'Se mueve al siguiente registro
rst.MoveNext
Next

Close #1
Exit Function
Err_function:
MsgBox Err.Description, vbCritical
Close
End Function

En la linea del rst.Open del Evento Click del botón, cambia Campo1, Campo2, etc. por los campos de tu Tabla que necesites y TablaOrigen por el nombre real de tu Tabla. Por último asegurate de que tengas marcada la Referencia: Microsoft ActiveX Data Objects 2.1 Library (o superior, 2.5 - 2.6, con 2.1 es suficiente)

Saludos y suerte
Enrique
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

RE:Error exportando a TXT (con archivo de especif.

Publicado por Paco (38 intervenciones) el 21/05/2009 16:28:07
Hola Enrique, ante todo muchas gracias por tu ayuda, te cuento:

Me ha funcionado perfectamente tomando como origen los campos que yo he querido pero desde una tabla, cuando intento hacer lo mismo con una consulta almacenada, ya que sólo quiero que exporte los registros que estan entre una fecha y otra ( valores que tomo de dos cajas de texto ) entonces en ese caso me arroja el siguiente error:

"se ha producido error en tiempo de ejecucion -2147217904(80040e10), no se han especificado valores para alguno de los parametros requeridos"

supongo que en la misma línea desde donde selecciono los campos también podría ponerle dicha condición, trataré de hacerlo.

Otra cosa, cuando dices que tenga marcada la referencia : Microsoft ActiveX Data Objects... ¿ a qué te refieres exactamente ?, ¿ a instalar algún tipo de control activeX ?.

Un saludo.
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

RE:Error exportando a TXT (con archivo de especif.

Publicado por Enrique (1299 intervenciones) el 21/05/2009 16:55:58
Hola Paco:
Efectivamente, tienes que poner el criterio de seleccion de las fechas en la línea que indicas, pues ADO no acepta directamente el nombre de la tabla/consulta como en DAO y no olvides ponerlos entre el signo almohadilla #.

En cuanto a la Referencia de ADO, como seguro que tendrás Access 2000 o 2003, no has tenido problemas porque ya entran marcadas por defecto en estas versiones (la 2.1 en 2000 y la 2.5 en 2003), pero de todas formas aunque sea solo por curiosidad lo puedes comprobar. En la ventana de VBA (donde se introducen los Eventos), en la barra de menus, pulsa en "Herramientas" y luego en la opcion "Referencias" y la verás marcada al principio de la Lista.

Saludos
Enrique
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

RE:Error exportando a TXT (con archivo de especif.

Publicado por Paco (38 intervenciones) el 21/05/2009 20:32:57
Hola Enrique, a ver si me puedes echar una mano, he creado la sentencia sql a través de una consulta, luego la he adaptado a la línea del rst.open pero debo de tener algo mal porque no consigo filtrar los registros, me da error de que sobran paréntesis o de expresió no válida, he probado de muchas formas pero supongo que mi poca experiencia en código pesa demasiado,

cuando me indicas ponerlo entre almohadillas, te referías a las cajas de texto únicamente, he probado de estas formas sin que ninguna de resultado:

WHERE CORREON.FECHA_ENTR>=#[TXT_FECHADESDE]# And CORREON.FECHA_ENTR<=#[TXT_FECHAHASTA]#", cnn, adOpenStatic, adLockOptimistic


WHERE ((CORREON.FECHA_ENTR)>=[Formularios]![CORREO_DEPURA]![TXT_FECHADESDE] And (CORREON.FECHA_ENTR)<=[Formularios]![CORREO_DEPURA]![TXT_FECHAHASTA]))

Gracias y 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

RE:Error exportando a TXT (con archivo de especif.

Publicado por Enrique (1299 intervenciones) el 21/05/2009 22:37:39
Hola Paco:

Para acertar con total seguridad, lo mejor sería probarlo directamente, pero como no me es posible, no me queda más remedio que indicarte dos posibles opciones. Creo que deberían funcionar las dos, aunque ya me dirás:

Prueba primero con esta:

WHERE [FECHA_ENTR]>=#" & [TXT_FECHADESDE] & "# And [FECHA_ENTR]<=#" & [TXT_FECHAHASTA] & "#", cnn, adOpenStatic, adLockOptimistic

Y si no funciona, prueba con esta otra:

WHERE [FECHA_ENTR] Between #" & [Forms]![CORREO_DEPURA]![TXT_FECHADESDE] & "# And #" & [Forms]![CORREO_DEPURA]![TXT_FECHAHASTA] & "#", cnn, adOpenStatic, adLockOptimistic

Si no funciona ninguna de las dos, tendrías que enviarme la mdb para intentar conseguirlo, porque puede que haya algun detalle que se me escape.

Saludos
Enrique
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

RE:Error exportando a TXT (con archivo de especif.

Publicado por Paco (38 intervenciones) el 21/05/2009 23:14:27
Enrique, me funcionan las dos, pero hay dos cosas que te queria comentar

la primera es que si algún campo lo tengo vacio en la exportación en el fichero de texto resultante me aparece la leyenda "nulo", y eso no me interesa, en ese caso quiero que si el campo de la tabla no tiene datos pues que aparezca el espacio vacio. ¿es posible?

la otra cosa es que no se porqué pero no funciona bien el filtro de las fechas, es decir, me genera el txt pero los registros que me exporta a veces si coinciden con las fechas que yo he seleccionado en las cajas de texto pero otras veces no, he hecho muchas pruebas y no sé qué patron sigue para a veces hacermelo bien y otras veces no, ¿se te ocurre qué puede ser?

Muchísimas gracias.

Paco.
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

RE:Error exportando a TXT (con archivo de especif.

Publicado por Enrique (1299 intervenciones) el 22/05/2009 10:19:29
Paco, a mi no me ocurren ninguno de los dos problemas que indicas, pero te comento lo siguiente por si te sirviera de ayuda:

Problema 1.
A mi no me pasa eso, si un campo está en blanco, me deja los dos espacios indicados en la Función del Módulo, en el Space(X) entre Campo y Campo.

Problema 2.
Asegurate que introduces las fechas correctamente, usando esta Máscara de entrada: 99/99/00;0;_ (Introduciendo 020509 lo convierte a 02/05/2009) y en la propiedad Formato de los campos FechaDesde y FechaHasta en el formulario escribe: dd/mm/aaaa

He comprobado que con este sistema funciona perfectamente aunque la FechaDesde no exista en la Tabla siempre que sea anterior a la FechaHasta y existan fechas entre "Desde" y "Hasta" en la Tabla Origen. Le he añadido un Order By al final para que el TXT se genere ordenado por fechas de menor a mayor:

WHERE [FECHA_ENTR] Between #" & [Forms]![CORREO_DEPURA]![TXT_FECHADESDE] & "# And #" & [Forms]![CORREO_DEPURA]![TXT_FECHAHASTA] & "# ORDERBY [FECHA_ENTR]", cnn, adOpenStatic, adLockOptimistic

Otra cosa, para que en los campos donde introduces las fechas te aparezcan por defecto la más antigua en "Desde" y la más moderna en "Hasta", recordándote las fechas que tienes en la tabla, haz esto:

En la propiedad "Valor predeterminado" del Campo TXT_FECHADESDE:
=DMín("[FECHA_ENTR]";"NOMBRETABLA")

En la propiedad "Valor predeterminado" del Campo TXT_FECHAHASTA :
=DMáx("[FECHA_ENTR]";"NOMBRETABLA")

Saludos y espero que lo consigas.
Enrique
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

RE:Error exportando a TXT (con archivo de especif.

Publicado por Paco (38 intervenciones) el 22/05/2009 18:59:49
Hola Enrique, mira he probado todo lo que me has dicho y sigo teniendo algunos fallos que entiendo pueden deberse al formato de la fecha ya que a veces me hace el filtrado bien y otras veces no, incluso algunas veces me ha mandado el error de que "bof o Eof ha sido true" y me genera el txt vacío, ese es el menor de los problemas ya que podría olvidarme de restringir y mandar toda la tabla al fichero de texto pero el otro problema que tengo es que aparece "nulo" cuando el primer campo está vacio, ojo sólo cuando es el primer campo, si es un campo intermedio efectivamente dá los dos espacios, éste si es un problema grave para mi ya que no puedo tener un fichero con esa leyenda "nulo".

Ya que para mi es muy importante este tema debido a que voy a trabajar con ficheros de texto, no sólo este, me pregunto si sería mucho abusar que me permitieras enviarte por mail la base y así a ver si tu ves algún error que a mi, por mi poca experiencia en access se me escapa.

No sé si está permitido dar el mail a través del foro pero no se me ocurre de otra forma, como no sé el tuyo te pongo mi dirección y me dices si te puedo enviar el archivo, sin compromiso, en caso de que estes muy ocupado lo entenderé perfectamente.

Muchas gracias y saludos.

Paco
[email protected]
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

RE:Error exportando a TXT (con archivo de especif.

Publicado por Enrique (1299 intervenciones) el 23/05/2009 20:41:16
Hola Paco:
El problema de las fechas no entiendo porqué te ocurre, eso tendría que verlo directamente en tu base de datos, pero el problema de los Nulos es fácil resolverlo. Te vas al Módulo y cambias esta parte del código:

For fila = 0 To rst.RecordCount - 1
If IsNull(rst.Fields(0)) Or rst.Fields(0) = "" Then
Print #1, Space(XX);
Else
Print #1, Trim(rst.Fields(0));
End If
For Columna = 1 To rst.Fields.Count - 1
Print #1, Space(2) & Trim(rst.Fields(Columna));
Next

En Space(XX), sustituye XX por la longitud del primer campo (el que ahora te aparece con Nulo), por ejemplo, si es un Campo de Texto de 20 caracteres, pones 20, para que los campos de cada registro queden alineados en el TXT y no quede el Segundo campo pegado a la izquierda. Si es un campo Numérico, como estos no tienen longitud, pones 5, 6 o 7, es igual puesto que si ese campo es numérico de todas formas no quedaría alineado.

Mi e-mail es: ersova1ARROBAhotmail.com

Saludos
Enrique
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