我开发了一款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提前...