0

1 つのフォームからメソッド フォームへの 2 つのテキスト ボックスの値に基づいてデータを表示する必要があります。

以下は、正常に機能する2つの値を抽出するコードです。

txtfrom.Text = dtResults.Rows[0]["asset_open_per"].ToString();

this.txtto.Text = DateTime.Today.ToString("yyyyMM");     

これで 2 つの値が得られたので、SQL ステートメントの where 句にこれらが必要になります。SQL ステートメントは以下のとおりです。

public static DataTable GetPostings2(string AssetNumberV, string PeriodFromV, string PeriodToV)

        {

       DataTable dtGetPostings2;

        try

          {

           dtGetPostings2 = new DataTable("GetPostings");

   SqlParameter AssetNumber = new SqlParameter("@AssetNumber", SqlDbType.VarChar, 6);
   AssetNumber.Value = AssetNumberV;

   SqlParameter PeriodFrom = new SqlParameter("@PeriodFrom", SqlDbType.VarChar, 6);
   PeriodFrom.Value = txtfrom; 

   SqlParameter PeriodTo = new SqlParameter("@PeriodTo", SqlDbType.VarChar, 6);
   PeriodTo.Value = frmAsset.txtto; 

 SqlCommand scGetPostings2 = new SqlCommand("SELECT * FROM [POSTING] WHERE [ASSET_NO] = @AssetNumber And PERIOD >= @PeriodFrom AND PERIOD <= @PeriodTo ORDER by PERIOD, JOUR_REF, JOUR_LINE", DataAccess.AssetConnection);

               scGetPostings2.Parameters.Add(AssetNumber);
               scGetPostings2.Parameters.Add(PeriodFrom);
               scGetPostings2.Parameters.Add(PeriodTo); 

               SqlDataAdapter sdaGetPostings2 = new SqlDataAdapter();
               sdaGetPostings2.SelectCommand = scGetPostings2;
               sdaGetPostings2.Fill(dtGetPostings2);

               return dtGetPostings2;
        }

私が得るエラーがあります:

非静的フィールド、メソッド、またはプロパティ 'Assets.frmAssetPostings.txtto' にはオブジェクト参照が必要です

他のtexboxについても同じ..

テキスト ボックスのプロパティを public などに変更しました。これを実現できる別の解決策はありますか。

前もって感謝します

4

4 に答える 4

1

最初にフォーム内で SQL を実行しようとしたことがありますか? app.cofig から実行してみてください。

于 2012-07-19T15:32:05.710 に答える
1

GetPostings2 内のパラメーターの値を既に渡しています。frmAsset のテキスト ボックスの代わりにそれらを使用してみませんか?

           scGetPostings2.Parameters.AddWithValue("@AssetNumber", AssetNumberV); 
           scGetPostings2.Parameters.AddWithValue("@PeriodFrom", PeriodFromV); 
           scGetPostings2.Parameters.AddWithValue("@PeriodTo", PeriodToV); 

ちなみに、GetPostings2 は静的メソッドであるため、エラーが発生します。このメソッド内では、frmAsset フォームのようなインスタンス外部オブジェクトを参照できません。

于 2012-07-19T15:32:18.123 に答える
0

TextBox オブジェクトを Sql パラメータに割り当てようとする代わりに、TextBoxes の Text プロパティを使用する必要があります。

SqlParameter AssetNumber = new SqlParameter("@AssetNumber", SqlDbType.VarChar, 6);     
AssetNumber.Value = AssetNumberV.Text;

値を読み取る残りの TextBoxes についても同じことを行います。

于 2012-07-19T15:25:17.213 に答える