将文本框值传递给sql语句

时间:2012-07-19 15:21:53

标签: c# sql

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

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

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;
        }

我得到的错误是:

  

非静态字段,方法或者需要对象引用   property'Assets.frmAssetPostings.txtto'

和其他texbox一样..

我已经将文本框的属性更改为public等,是否有其他解决方案可以实现。

提前致谢

4 个答案:

答案 0 :(得分:1)

您是否尝试先在表单中执行SQL,然后尝试从app.cofig

执行此操作

答案 1 :(得分:1)

好吧,你已经在GetPostings2中传递了参数的值,为什么不使用它们而不是你的frmAsset的文本框呢?

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

顺便说一句,你得到错误是因为GetPostings2是一个静态方法,在这个方法中你不能像frmAsset表单那样引用实例外部对象。

答案 2 :(得分:0)

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

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

对于正在读取值的其余TextBox,执行相同的操作。

答案 3 :(得分:0)

this.txtto.Text我假设是Texbox,但您在GetPostings2方法中将其用作PeriodTo.Value = frmAsset.txtto;

您需要以frmAsset.txtto.Text; and frmAsset.txtfrom.Text;

的方式使用它