【问题标题】:Passing textbox value to a sql statement将文本框值传递给 sql 语句
【发布时间】:2012-07-19 15:21:52
【问题描述】:

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

下面是我提取两个值的代码,效果很好:

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也一样..

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

提前致谢

【问题讨论】:

    标签: c# sql


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-02-10
            • 1970-01-01
            • 2023-03-25
            • 2014-01-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多