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

わかりました、私がやろうとしているのは、州ではなく(このコードが取得する方法)、郵便番号に基づいてタイムゾーンを見つけることです。これは明らかに一部の州 (KY、TN、OK など) がタイム ゾーンで分割されているためです。

したがって、最終的には、この関数で郵便番号を調べて、その郵便番号がどのタイム ゾーンにあるかを調べて、そのタイム ゾーンを返すようにしたいと考えています。

それが明らかでない場合。この情報が取得されるテーブルの名前は「Zips」です。これは、zip、city、state、county、areacode、および timezone の範囲の複数の列で構成されています。表のタイムゾーン列には、各タイムゾーンに対応する「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 に答える