基于邮政编码的时区(非州)

时间:2013-03-14 21:42:19

标签: vb.net timezone zipcode

好的人,我在这里假设是一个简单的逻辑问题。

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

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”。它由多个列组成,包括zip,city,state,county,areacode和timezone。时区是表中的列,只有诸如“5,6,7,8等”的值对应于每个时区。 5 =东部,6 =中央,等等..

感谢任何指导。

1 个答案:

答案 0 :(得分:1)

看起来非常直接,除非我不理解某事。您首先需要更改方法签名以获取邮政编码:

Function GetTimeZone(ByVal zipcode As Integer) As Integer

然后,您必须将查询更改为按该邮政编码搜索:

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

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

相关问题