0

我需要根据从一个表单到方法表单的两个文本框的值来显示数据。

下面是我提取我的两个值的代码,它们工作正常:

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

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

现在我有我的两个值,我将需要这些作为 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 也一样..

我已将文本框的属性更改为公共等,是否有另一种解决方案可以实现这一点。

提前致谢

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

this.txtto.Text我假设是一个 Texbox,但您 PeriodTo.Value = frmAsset.txtto; 在 GetPostings2 方法中使用它

您将需要以这种方式使用它frmAsset.txtto.Text; and frmAsset.txtfrom.Text;

于 2012-07-19T15:26:56.660 回答
0

您需要使用 TextBoxes 的 Text 属性,而不是尝试将 TextBox 对象分配给我们的 Sql 参数。

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

对您从中读取值的其余文本框执行相同操作。

于 2012-07-19T15:25:17.213 回答