2013-10-22 30 views
0

我讓我的代碼工作得很好,但是當我生成CSV文件的新更新版本時,它突然在我身上出錯,並給我一個類型不匹配的問題。當在VB中合併兩個csv文件時類型不匹配

這是我現在的代碼。

Dim A As String = "ADusers.csv" 
    Dim B As String = "MlnExp.csv" 
    Dim filePath As String = "C:\CSV" 

    Try 
     Dim ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & (filePath) & "\;Extended Properties='text;HDR=Yes'" 

     Dim sSql As String = "SELECT *" _ 
     & "FROM ([" & (B) & "] B LEFT JOIN [" & (A) & "] A ON B.EmployeeNumber = A.employeeID)" 

     Dim conn As OleDb.OleDbConnection = New OleDb.OleDbConnection(ConnectionString) 
     Dim Command As OleDb.OleDbCommand = New OleDb.OleDbCommand(sSql, conn) 
     Command.CommandType = CommandType.Text 
     conn.Open() 

     Dim da As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(sSql, conn) 
     Dim dt As DataTable = New DataTable 
     da.Fill(dt) 

     DataGrid1.DataSource = dt 
     DataGrid1.Update() 

     conn.Close() 
     lblStatus.Text = "CSV combined... Now saving to file." 


    Catch ex As Exception 
     MsgBox(ex.Message, MsgBoxStyle.Exclamation) 


    End Try 

在通過之前,合併兩個CSV文件,然後將它們顯示在我的數據網格中。但現在我的漁獲拋回

的類型不匹配的表達

+0

你試過調試過嗎? –

+0

是的。我得到的錯誤 '在System.Data.dll中發生'System.Data.OleDb.OleDbException'類型的未處理異常 其他信息:類型在表達式中不匹配。 – SpookyFries

回答

0

我會檢查B.EmployeeNumber = A.employeeID在這兩個文件之一 是文本值(左對齊)和其他是一個整數(右對齊)

+0

他們倆看起來好像他們在右對齊CSV文件,但是當我實際上點擊對齊按鈕時,它神奇地決定工作......我有兩個由PowerShell寫入的csv文件,因此它們應該是平等的。任何想法我如何強迫他們保持這種方式? – SpookyFries

+0

在VB中怎麼樣?我可以強迫他們進行整合嗎?在你的sql語句中使用 – SpookyFries

+0

可能這樣做...... SELECT *「_&」FROM([「&(B)&」] B LEFT JOIN [「&(A)&」] ONCAST(B.EmployeeNumber AS INT)= CAST(A.employeeID AS INT) – user2615302