0

好的,我在这里,我认为这是一个简单的逻辑问题。

我将首先向您展示我的代码(至少我认为您需要的所有代码)然后解释问题。

Function GetTimeZone(ByVal state As String) As Integer

    Dim TaxConnStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ConfigurationManager.AppSettings("Database")
    Dim dbConnection As OleDbConnection = New OleDbConnection(TaxConnStr)
    Try



        Dim queryString As String
        queryString = "SELECT Top 1 Zips.State, Zips.TimeZone "
        queryString += "FROM Zips "
        queryString += "WHERE (((Zips.State)='" & state & "'));"

        Dim dbCommand As OleDbCommand = New OleDbCommand
        dbCommand.CommandText = queryString
        dbCommand.Connection = dbConnection

        Dim dataAdapter As OleDbDataAdapter = New OleDbDataAdapter
        dataAdapter.SelectCommand = dbCommand
        Dim dataSet As DataSet = New DataSet
        dataAdapter.Fill(dataSet)
        If dataSet.Tables(0).Rows.Count >= 1 Then
            Return dataSet.Tables(0).Rows(0).Item("TimeZone")
        Else
            Return 0
        End If

    Catch ex As Exception
        Console.WriteLine(ex.Message)
        myLogger.Log(ex.Message)
    Finally
        dbConnection.Close()
    End Try
end Function

好的,我要做的不是根据州(此代码如何获取它)而是根据邮政编码找出时区。这显然是 b/c 一些州(KY、TN、OK 等)按其时区划分。

所以我最终希望这个函数查看邮政编码......找出邮政编码所在的时区......然后返回时区。

如果不是很明显。从中提取此信息的表名为“Zips”。它由几列组成,包括邮编、城市、州、县、区号和时区。表中的时区列只有“5、6、7、8等”等值来对应每个时区。5 = 东部,6 = 中部,依此类推..

感谢您的任何指导。

4

1 回答 1

1

看起来很简单,除非我不明白。您首先需要更改方法签名以获取邮政编码:

Function GetTimeZone(ByVal zipcode As Integer) As Integer

然后,您必须更改查询以按该邮政编码进行搜索:

queryString = "SELECT Top 1 Zips.TimeZone "
queryString += "FROM Zips "
queryString += "WHERE (((Zips.Zip)=" & zipcode & "));"

其他一切都应该按原样工作。

于 2013-03-14T21:48:44.567 回答