Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

Using ADO to open a CSV File...

Posted on 2006-11-15
7
Medium Priority
?
2,657 Views
Last Modified: 2013-12-25
Hi Experts,

I am trying to access a CSV File using ADO and having some trouble.

The connection string that i'm using is as follows:

    Set con = New ADODB.Connection
    con.ConnectionString = _
        "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
        "DefaultDir=" & txtDir.Text
    con.Open
   
    SQLStr = "Select * FROM " & txtFile.Text & " WHERE 1 = '2006/11/15'"

The format of the file is as follows and has over 65535 lines (currently at 4Mb and growing on a daily basis):

2006/05/25;08:17:37;0;1;0;0;1
2006/05/25;08:17:40;0;1;0;0;1
2006/05/25;08:17:44;0;1;0;0;1
2006/05/25;08:18:26;0;1;0;0;0
2006/05/25;08:18:42;0;1;0;0;0


I would like to be able to search for results using the first two fields using SQL statements. Please note however that the CSV file does not have a header (is this a problem??).


Any sample code for this would be appreciated.

Regards,
robbrownuk

0
Comment
Question by:robbrownuk
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
7 Comments
 
LVL 65

Expert Comment

by:rockiroads
ID: 17948346
Have u considered linking this csv file into MS Access (linked table, not import) then running access queries?
or import into another db?

Not sure what default fields are, is it F1, F2, F3 ? try that
0
 
LVL 29

Accepted Solution

by:
leonstryker earned 375 total points
ID: 17948448
Take a look here: http://www.carlprothman.net/Default.aspx?tabid=90#ODBCDriverForText

I n your sample you are using ; as a seperator so you will need to use schema.ini file and set:

Format=Delimited(";")

You do not need column headers but will need to specify that in your schema.ini and can refer to the columns by their order as F1, F2, and so on.

Leon
0
 
LVL 29

Expert Comment

by:leonstryker
ID: 17948455
You could also use the Jet driver, which not require you to use a schema.ini file:

http://www.carlprothman.net/Default.aspx?tabid=87#OLEDBProviderForMicrosoftJetText

Leon
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
LVL 2

Author Comment

by:robbrownuk
ID: 17949304
Thanks leonstryker,

Your second suggestion seems to be a step in the right direction, However it only works if i use a comma instead of the semicolon.

Also I cant seem to filter the records for a specific date. I have the following code which returns no results:

  cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
          "Data Source=" & PathtoTextFile & ";" & _
          "Extended Properties=""text;HDR=YES;FMT=Delimited"""
 
  Dim FilterDate As Date
  FilterDate = CDate("24/05/2006")
 
  rs.Open "select * from log2.txt WHERE 0 = " & FilterDate, _
          cn, adOpenStatic, adLockReadOnly, adCmdText

 
  'Make sure we have some records to display
  If rs.EOF Then GoTo NoData
 
  MsgBox rs(0)
 
NoData:
  rs.Close
  cn.Close


Anymore suggestions??

Thanks,
robbrownuk
0
 
LVL 29

Expert Comment

by:leonstryker
ID: 17949359
Well, this:

WHERE 0 = " & FilterDate

is guarantied to return you nothing, since FilterDate is never going to be 0

>it only works if i use a comma instead of the semicolon.

Right, because CSV implies that it is a Comma Seperated Values. In your case its just a text file with CVS extension.

>HDR=YES

In you case the HDR should be NO, since you have no header row.

Leon
0
 
LVL 2

Author Comment

by:robbrownuk
ID: 17951675
> WHERE 0 = " & FilterDate

> is guarantied to return you nothing, since FilterDate is never going to be 0

I was under the impression that "0" represents field 0 (the date). So, how do you run queries on a CSV without any headers (i.e. how do you reference the data columns)?


---
robbrownuk
0
 
LVL 2

Author Comment

by:robbrownuk
ID: 17954419
Thanks again leonstryker,

You pointed me in the right direction with your first post, so the points are yours...

The "Microsoft Text Driver" with the schema.ini file work very well. For info, here is what my schema.ini file contains:-

============================
[log.txt]
ColNameHeader=False
Format=Delimited(;)
MaxScanRows=0
CharacterSet=OEM
Col1=F1 Char Width 10
Col2=F2 Char Width 8
Col3=F3 Char Width 1
Col4=F4 Char Width 1
Col5=F5 Char Width 1
Col6=F6 Char Width 1
Col7=F7 Char Width 1
============================

Thanks!
robbrownuk
0

Featured Post

Hire Technology Freelancers with Gigs

Work with freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely, and get projects done right.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

If you have ever used Microsoft Word then you know that it has a good spell checker and it may have occurred to you that the ability to check spelling might be a nice piece of functionality to add to certain applications of yours. Well the code that…
When designing a form there are several BorderStyles to choose from, all of which can be classified as either 'Fixed' or 'Sizable' and I'd guess that 'Fixed Single' or one of the other fixed types is the most popular choice. I assume it's the most p…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
Suggested Courses

604 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question