当系统在vb.net中使用OLEDB连接时具有UK日期格式(dd / mm / yyyy)时,无法从Excel工作表中提取正确的数据

时间:2014-03-11 09:38:50

标签: sql vb.net excel oledb

我开发了一款Windows应用。在vb.net中从excel文件中提取数据。 excel文件中的数据将位于第32列,其中第2列将具有如下日期和时间: 2/31/2013 8:55:47 AM 我们为此工具遵循的日期格式是m / d / yy(美国格式) 要提取数据,我们正在使用OLEDB连接。基于用户在GUI中选择的日期范围提取数据。在我们的查询中,我们使用 运算符。 以下是我们正在使用的查询:

Select * 
  from [DTCs from MID 161$] 
 where CDate(F2) BETWEEN #12/01/2013# 
                     And #12/12/2013# 
       And F17 IN ('PLDM') 
       And (F20 Like '%') 
       And (   F25 Like 'D%' 
            Or F25 Like 'E%') 
       And F4 IN ('36','263','33','342','149','341') 
       And (   F5 Like '%' 
            Or F5 Like 'History N/A' 
            Or F5 IS NULL)

这是执行此查询的功能:

Function GetDataInDataTable(ByVal FilePath As String, ByVal SQL_Query As String, ByVal ver As String) As DataTable

    Dim MyCommand As OleDb.OleDbDataAdapter
    Dim MyConnection As New OleDb.OleDbConnection()
    Dim DS As DataSet = Nothing
    Dim dt As DataTable = Nothing
    Dim ColName As String
    Dim user_Name As String = Nothing
    user_Name = My.User.Name
    user_Name = Replace(user_Name, "\", "_")
    Try

        If Val(ver) < 12 Then
            MyConnection = New OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" & FilePath & "';" & "Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""")
        Else
            MyConnection = New OleDb.OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data Source= '" & FilePath & "';" & "Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1""")
        End If

        MyConnection.Open()

        MyCommand = New OleDb.OleDbDataAdapter(SQL_Query, MyConnection)

        DS = New System.Data.DataSet()

        MyCommand.Fill(DS)
        dt = DS.Tables(0)

        MyConnection.Close()

        dt.Columns("RAW DIAGNOSTICS AND EVENTS INFORMATION").ColumnName = "SN"
        ColName = dt.Columns(29).ColumnName
        dt.Columns(ColName).ColumnName = "F30"

        ColName = dt.Columns(15).ColumnName
        dt.Columns(ColName).ColumnName = "F16"

        ColName = dt.Columns(35).ColumnName
        dt.Columns(ColName).ColumnName = "F36"
    Catch ex As OleDbException
            Return Nothing
    Catch ex As Exception
        Return nothing
    End Try
    return dt
End Function

我面临的问题是,当系统的日期格式更改为英国格式(dd / mm / yyyy)时,工具不会在给定日期之间提取确切数据。 Thanx提前...

0 个答案:

没有答案