[AccessD] Problem Exporting to a CSV file with a Column Namethat has a #

Brad Marks BradM at blackforestltd.com
Wed Apr 20 15:49:22 CDT 2011


All,

Thanks for the advice and insights.

I am planning to experiment with the ideas posted.

I like the sounds of the "roll your own" export (I am a product of the
1960s :-)

I have never used Access to tweak a flat file, so that also is something
that sounds interesting, at least to have in the bag-of-tricks.  (If
someone has a simple example that they are willing to share, I would
appreciate it).

Thanks again,
Brad




-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Stuart
McLachlan
Sent: Wednesday, April 20, 2011 4:54 AM
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] Problem Exporting to a CSV file with a Column
Namethat has a #

Hi Brad,

Listen to Gustav ;-)

Especially for import.  You willl find all sorts of CSV file formats.
The biggest problem is the 
inconsistent use of "quotes".  Sometime all dates and strings are
quoted, sometimes they are 
only quoted if they contain a comma, sometimes you will get numbers
quoted because they 
are formatted to include commas and others which are not because they
don't include 
commas, sometimes you will get embedded real quotes represented as
double quotes.  You 
can get all of these variations in a single file.  The built in Import
function can't handle many 
of them.

What I do is import the line, strip the quotes and convert it into Tab
delimited strings without 
extraneous quotes.  

Function ConvertLine(strIn As String) As String
    'Converts CSV(either quoted or non-quoted text) to TAB delimited
    Dim inquotes As Boolean
    Dim strC As String
    Dim x As Long

   'Change real delimiter commas to Tabs
   'ie those that aren't inside quotes
    For x = 1 To Len(strIn)
        strC = Mid$(strIn, x, 1)
        If strC = "," And Not inquotes Then
            Mid$(strIn, x, 1) = Chr$(9)
        End If
        If strC = """" Then
            inquotes = Not inquotes
        End If
    Next

    ' there may be real quotes escaped as "paired" quotes
   ' so change them temporarily to a non print character
   strln = Replace(strln,"""""",chr$(1))

    'get rid of all the remaining quotes
    strln = Replace(strIn, """", "")

    're-instate the escaped quotes
    ConvertLine = Replace(strln,Chr$(1),"""")
End Function

Then I split the record using  
...
Line Input #ff strInputLine
strData() = Split(Convertline(strInputLine),Chr$(9))
...

Once you have done that, you can convert the strings to other data types
as required.

-- 
Stuart

On 20 Apr 2011 at 9:59, Gustav Brock wrote:

> Hi Brad
> 
> Listen to Stuart. 
> Once you have this set up you are in total control and will never look
> back. The same goes for importing text files.
> 
> /gustav
> 
> 
> >>> stuart at lexacorp.com.pg 20-04-2011 05:40 >>>
> The best solution is not to use the built in Access export routine. 
> Roll your own and you can put anything you want in the file.
> 
> Aircode:
> 
> Function Export() as Long
> Dim rs as DAO.Recordset
> Dim ff as long
> ff = Freefile
> set rs = CurrentDB.Openrecordset("qryMyExport")
> ff = Freefile
> Open "myExportFile.csv" for Output as #ff
> Print #1,"First fieldname,Employee #,Third fieldname"
> While not rs.Eof
>    Print #1 rs(0) & "," & rs(1) & "," & rs(2)
>    rs.movenext
> Wend
> Close #ff
> End Function
> 
> -- 
> Stuart
> 
> On 19 Apr 2011 at 17:23, Brad Marks wrote:
> 
> > All, 
> > 
> > We are just starting to use an Access 2007 application to feed data
> > to another outside system via a CSV file. 
> > 
> > This outside system is very rigid and we need to use exact field
> > names on the CSV file that we are creating.
> > 
> > The catch is that one of the fields is call "Employee #".
> > 
> > We set up an Export Specification (called Export-Query1 for our
> > testing) and we are using the following command to do the export
> > 
> > DoCmd.RunSavedImportExport "Export-Query1"
> > 
> > When we run the application, everything works nicely, except the
> > field named "Employee #" is somehow being renamed "Employee ." in
> > the generated CSV file.
> > 
> > We have run a number of tests and it looks like we have stumbled
> > upon either a "bug" a "feature", or something that we just don't
> > understand.
> > 
> > Is there a way to force Access to not replace the "#" with a "."  ?
> > 
> > Thanks for your help,
> > 
> > Brad 
> 
> 
> -- 
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
> 



-- 
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.





More information about the AccessD mailing list