ms access - txt - vbscript para exportar una consulta de acceso a un archivo delimitado por tabuladores no funciona
exportar datos en access (3)
Creo que hay algo mal con los espacios en su cadena de conexión
Prueba esto:
cn.Provider = "Microsoft.Jet.OLEDB.4.0"
cn.ConnectionString = db
cn.Open
HTH
Actualización: ¿Tal vez haya un problema con los derechos de acceso a la base de datos? ¿O el mdb ya ha sido abierto exclusivamente por otro usuario (Usted con su acceso en modo de diseño)?
Tengo este código:
db = "C:/Dokumente und Einstellungen/hom/Anwendungsdaten/BayWotch4/Neuer Ordner/baywotch.db5"
TextExportFile = "C:/Dokumente und Einstellungen/hom/Anwendungsdaten/BayWotch4/Neuer Ordner/Exp.txt"
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cn.Open _
"Provider = Microsoft.Jet.OLEDB.4.0; " & _
"Data Source =" & db
strSQL = "SELECT * FROM tblAuction1"
rs.Open strSQL, cn, 3, 3
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.CreateTextFile(TextExportFile, True)
a = rs.GetString
f.WriteLine a
f.Close
Que está destinado a conectarse a una base de datos de acceso y producir un archivo de texto delimitado por tabulaciones. tblAuction1 es una consulta en la base de datos, y definitivamente existe y no se omite de ninguna manera, pero me da un error que no se puede encontrar o no existe. Cuando lo cambio a tblAuction, que es el nombre de la tabla, aparece un error que indica que se ha llamado incorrectamente a WriteLine a.
editar: ahora solo aparece un problema con f.writeline a, diciendo que se ha proporcionado un argumento incorrecto. Ya no tengo un problema con tblAuction1
editar: el código sql utilizado para mi consulta:
SELECT tblAuction.article_no, tblAuction.article_name, tblAuction.subtitle, tblAuction.current_bid, tblAuction.start_price, tblAuction.bid_count, tblAuction.quant_total, tblAuction.quant_sold, tblAuction.start, tblAuction.ends, tblAuction.origin_end, tblUser.user_name, tblAuction.best_bidder_id, tblAuction.finished, tblAuction.watch, tblAuction.buyitnow_price, tblAuction.pic_url, tblAuction.private_auction, tblAuction.auction_type, tblAuction.insert_date, tblAuction.update_date, tblAuction.cat_1_id, tblAuction.cat_2_id, tblAuction.article_desc, tblAuction.countrycode, tblAuction.location, tblAuction.condition, tblAuction.revised, tblAuction.paypal_accept, tblAuction.pre_terminated, tblAuction.shipping_to, tblAuction.fee_insertion, tblAuction.fee_final, tblAuction.fee_listing, tblAuction.pic_xxl, tblAuction.pic_diashow, tblAuction.pic_count, tblAuction.item_site_id
FROM tblUser INNER JOIN tblAuction ON tblUser.id = tblAuction.seller_id;
Prueba esto
cn.Open _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Persist Security Info=False;" & _
"Data Source=" & db
He tratado de reproducir esto en varias bases de datos y máquinas, no puedo hacer que tu código falle.
Hojas :
- una base de datos corrupta, ¿podría reparar y volver a intentarlo?
- Campos en su base de datos que están lanzando la consulta, he intentado varias posibilidades pero no puedo encontrar nada que frene su código. Para excluir otras cosas, podría tratar de crear una nueva tabla y ver si su código funciona en esa tabla.
- algo malo con su dll, ¿podría probarlo en otra máquina?
Respuesta (para ver cómo llegamos a la respuesta, vea los comentarios)
Hay caracteres unicode en su base de datos que writeline no acepta porque usted creó el archivo de texto como ASCI. Los caracteres en este caso específicamente donde ♥♥♥
Para que funcione:
Set f = fs.CreateTextFile(TextExportFile, True, True)
PD
Esta pregunta fue respondida anteriormente usando la macro de texto de transferencia aquí. Como señala Remou , parece una solución más limpia. Hacer que funcione con delimitadores no predeterminados es un poco molesto. Primero comience a exportar la consulta que desea exportar haciendo clic con el botón derecho y elija exportar. En los siguientes diálogos, especifique las especificaciones y guárdelas. Al crear la macro, seleccione las especificaciones que acaba de guardar.