1

近接検索の助けが必要です。不動産データベースで select ステートメントを実行して、検索条件に最も近い行 (ユーザーが入力した数値) を特定する必要があります。次に、これらの値を gridview コントロールに表示する必要があります。

私が理解できないのは、複数の計算列の値を追加して、近接結果を含む最終的な列を 1 つ作成する方法です。

複数の計算列を合計して 1 つの列にし、この列でグループ化する方法を誰かが教えてくれますか?

以下は私が試したコードですが、エラー例外が発生します。

aQueryString = "SELECT Top " + txtNumRows.Text;
aQueryString += "propno, ";

if (txtMaxAsk.Text != "")
    aQueryString += "askprice, ";

aQueryString += "sqr(((askprice - " + txtMaxAsk.Text;
aQueryString += ")/1000000)^2) AS m1,";

if (txtMinSqFt.Text != "")
    aQueryString += "sqft, ";

aQueryString += "sqr(((sqft - " + txtMinSqFt.Text;
aQueryString += ")/6000)^2) AS m2 ";
aQueryString += "sum(m1) + sum(m2) FROM property ORDER BY 4 ";

anAccessCommand = anAccessConnection.CreateCommand();
anAccessCommand.CommandText = aQueryString;
gvProperty.DataSource = anAccessCommand.CommandText;
anAccessReader = anAccessCommand.ExecuteReader();
gvProperty.DataSource = anAccessReader;
gvProperty.Visible = true;

try
{
    gvProperty.DataBind();
}
catch (Exception ex)
{
    Response.Write("Binding exception in Button1_Click<BR>");
    Response.Write("Access Exception Handler: {0} " + ex.ToString());
}

これは私が得る OleDbException です:

The SELECT statement includes a reserved word or an argument name that is misspelled or missing, or the punctuation is incorrect.

4

1 に答える 1

0

この行の最後にカンマがありません:

aQueryString += ")/6000)^2) AS m2 ";

訂正:

aQueryString += ")/6000)^2) AS m2, ";
于 2013-11-02T01:42:05.263 に答える