Link to home
Start Free TrialLog in
Avatar of dn_learner
dn_learner

asked on

error when i have a different delimeter when reading a .csv file

Hi,

I have  code that reads a .csv file and displays the data in a datagrid. It works fine when the delimeter is a COMMA, but gives me an error when i have a PIPE delimeter.  Please help me out.

Here is the code that iam using to accomplish the task
-----------------------------------------------------------------------------------------------------------------------------
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ''Put user code to initialize the page here
     
        Dim PathtoTextFile As String = "c:\DataFolder\"
        Dim oCon As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
                     "Data Source=" & PathtoTextFile & ";" & _
                     "Extended Properties=""text;HDR=YES;FMT=Delimited""")

        Dim oCmd As New System.Data.OleDb.OleDbDataAdapter("SELECT program, description FROM datafile.csv", oCon)
        Dim dstemp As New DataSet
        oCmd.Fill(dstemp)

        DataGrid1.DataSource = dstemp
        DataGrid1.DataBind()
    End Sub
----------------------------------------------------------------------------------------------------------------------------

Here is the error that i get:
----------------------------------------------------------------------------------------------------------------
Exception Details: System.Data.OleDb.OleDbException: No value given for one or more required parameters.

Source Error:


Line 48:
Line 49:         Dim dstemp As New DataSet
Line 50:         oCmd.Fill(dstemp)
Line 51:
Line 52:         DataGrid1.DataSource = dstemp
 
------------------------------------------------------------------------------------------------------------------
ASKER CERTIFIED SOLUTION
Avatar of sachiek
sachiek
Flag of Singapore image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
There is one intresting other method also.
You can convert this csv into XML. This you can do it now with MS-Office 2003 or you need to download a utlity recently release by microsoft then can disply in datagrid.

Else you can also do it by yourself. Look into this article.
http://www.devcity.net/Articles/36/1/delimit_xml.aspx
If you still not able to solve it let me know.


Sachi
have a look at this link .. explains reading a tab delimted text file ...

Reading a Delimited File Using ASP.Net and VB.Net - Usage
http://www.dotnet247.com/247reference/a.aspx?u=http://www.devarticles.com/c/a/ASP.NET/Reading-a-Delimited-File-Using-ASP.Net-and-VB.Net/
Avatar of dn_learner
dn_learner

ASKER

Hi guys,

i really appreicate the help you provided.

as suggested by sachiek,  i read the csv file, replaced all the PIPES with a COMMA and wrote the data to a new file. And then I used that new file in my SELECT statement to read the data and displayed it into a datagrid.

I added the following code before the block of code that you see above in my original post.
--------------------------------------------------------------------------------------------------------
objStreamReader = File.OpenText(MapPath("datafile.csv"))
        strInput = objStreamReader.ReadLine()
        While strInput <> Nothing
             strInput = Replace(strInput, "|", ",")
            objStreamWriter.Write(strInput)
            objStreamWriter.Write(objStreamWriter.NewLine())
            strInput = objStreamReader.ReadLine()
        End While
        objStreamReader.Close()
        objStreamWriter.Close()
---------------------------------------------------------------------------------------------------------
Please let me know if you like the code or would u have done it differently.

Thanks a lot.