我需要根据从一个表单到方法表单的两个文本框的值来显示数据。
下面是我的代码,用于提取我的两个值,它们正常工作:
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等,是否有其他解决方案可以实现。
提前致谢
答案 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;