Access - Añadir informaciòn a Fichero TXT

 
Vista:

Añadir informaciòn a Fichero TXT

Publicado por Daniel (74 intervenciones) el 11/04/2005 20:07:50
Hola,
Estoy utilizando un código para la exportacion de querys a ficheros de texto:
Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "Exportacion Splash"
DoCmd.OpenForm stDocName, , , stLinkCriteria

CurrentDb.Execute "SELECT * INTO [TEXT;DATABASE=" _
& CurrentProject.Path & "].CAB.txt FROM CAB where CAB.[Numero de la factura] = '" & Me.[Numero de la factura] & "'"

Funciona perfectamente. El problema es que cuando el fichero CAB.txt existe e intento exportar nuevos datos me da error de fichero existente..

¿COMO HACER PARA QUE ME AÑADA LA NUEVA INFORMACION A CONTINUACION DE LA QUE YA TENIA?
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
Imágen de perfil de Alejandro

Agregar datos a un archivo de texto existente en VBA

Publicado por Alejandro (4142 intervenciones) el 30/05/2023 23:09:59
Para agregar nueva información a un archivo de texto existente en lugar de reemplazarlo, puedes utilizar el método `OpenTextFile` del objeto `FileSystemObject` en lugar del comando `SELECT * INTO` en tu código.

Aquí tienes un ejemplo de cómo modificar tu código para agregar datos a un archivo de texto existente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Dim stDocName As String
Dim stLinkCriteria As String
Dim fso As Object
Dim file As Object
Dim filePath As String
 
stDocName = "Exportacion Splash"
DoCmd.OpenForm stDocName, , , stLinkCriteria
 
' Ruta y nombre de archivo de texto
filePath = CurrentProject.Path & "\CAB.txt"
 
' Crear instancia del objeto FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
 
' Verificar si el archivo existe
If fso.FileExists(filePath) Then
    ' Abrir el archivo existente en modo de escritura (append)
    Set file = fso.OpenTextFile(filePath, 8) ' 8 = ForAppending
 
    ' Mover al final del archivo
    file.SkipLine
 
Else
    ' Crear un nuevo archivo si no existe
    Set file = fso.CreateTextFile(filePath, True)
End If
 
' Exportar los datos de la consulta al archivo de texto
CurrentDb.Execute "INSERT INTO [TEXT;" & filePath & "] SELECT * FROM CAB WHERE CAB.[Numero de la factura] = '" & Me.[Numero de la factura] & "'"
 
' Cerrar el archivo
file.Close
 
' Liberar los objetos
Set file = Nothing
Set fso = Nothing

En este código, se utiliza el objeto `FileSystemObject` para verificar si el archivo de texto `CAB.txt` ya existe. Si existe, se abre en modo de escritura (append) y se mueve al final del archivo utilizando el método `SkipLine`. Si el archivo no existe, se crea uno nuevo. Luego, se ejecuta una consulta de inserción (`INSERT INTO`) para agregar los nuevos datos al archivo de texto.

Espero que esta solución te ayude a agregar nueva información al archivo de texto existente en lugar de reemplazarlo. ¡Buena suerte!
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