我正在使用telerik报告,我有一张桌子。 textbox16具有我需要在查询上使用的值来设置textbox26上的值。每行在textbox16上都有不同的值(唯一)。
问题是在textbox26上我得到了所有行的错误值!
当我在textbox26_itemdatabound中调试程序时,会输出正确的值。
我做错了什么以及如何修复它?
MySqlConnection con = new MySqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["stockConnectionString"].ConnectionString);
private void textBox26_ItemDataBound(object sender, EventArgs e)
{
decimal balance = 0, debit = 0;
Telerik.Reporting.Processing.TextBox textBox = (Telerik.Reporting.Processing.TextBox)sender;
string text = textBox.Text;
textBox26.Value = text;
string querty = "SELECT Sum(st.Debit),comp.balance FROM statemnt st left join companie comp on st.accountcode=comp.code and comp.type=1 " +
"where st.accountcode=@compcode and (Date(st.DocDate)>=(CURDATE() - interval 30 day)) ";
MySqlCommand cmd = new MySqlCommand(querty, con);
cmd.Parameters.AddWithValue("compcode", text);
con.Open();
MySqlDataReader Reader = cmd.ExecuteReader();
if (!Reader.HasRows)
{
return;
}
while (Reader.Read())
{
try
{
debit = Convert.ToDecimal(Reader.GetString(0));
}
catch { debit = 0; }
try
{
balance = Convert.ToDecimal(Reader.GetString(1));
this.textBox26.Value = balance.ToString("#.##");
}
catch
{
balance = 0;
}
}
Reader.Close();
con.Close();
if (balance <= 0)
{
this.textBox26.Value = "0.00";
this.textBox26.Value = "0.00";
this.textBox26.Value = "0.00";
this.textBox26.Value = "0.00";
this.textBox26.Value = "0.00";
return;
}
else
{
if (debit < balance)
{
balance = balance - debit;
this.textBox26.Value = debit.ToString("#.##");
}
}
}
private void textBox16_ItemDataBound(object sender, EventArgs e)
{
textBox26.Value = textBox16.Value;
}
结果:
答案 0 :(得分:0)
我能够使用下面的代码完成它!我从textBox26_ItemDataBound中删除它并将我的代码添加到textBox16_ItemDataBound并且它工作正常!
private void textBox16_ItemDataBound(object sender, EventArgs e)
{
decimal balance = 0, debit = 0;
Telerik.Reporting.Processing.TextBox txt = (Telerik.Reporting.Processing.TextBox)sender;
string text = txt.ToString();
//SPLIT WARD (textBox26) TextBox[Text=-99]
string s = text;
string[] words = s.Split('=');
text = words[1];
words = text.Split(']');
text = words[0];
string querty = "SELECT Sum(st.Debit),comp.balance FROM companie comp left join statemnt st on st.accountcode=comp.code and st.AccountType='DB' and comp.type=1 and (Date(st.DocDate)>=(CURDATE() - interval 30 day))" +
"where comp.code=@compcode ";
MySqlCommand cmd = new MySqlCommand(querty, con);
cmd.Parameters.AddWithValue("compcode", text);
con.Open();
MySqlDataReader Reader = cmd.ExecuteReader();
if (!Reader.HasRows)
{
return;
}
while (Reader.Read())
{
try
{
debit = Convert.ToDecimal(Reader.GetString(0));
}
catch { debit = 0; }
try
{
balance = Convert.ToDecimal(Reader.GetString(1));
this.textBox6.Value = balance.ToString("n2");
}
catch
{
balance = 0;
}
}
Reader.Close();
if (balance <= 0)
{
this.textBox7.Value = "0.00";
this.textBox15.Value = "0.00";
this.textBox13.Value = "0.00";
this.textBox26.Value = "0.00";
//textbox6
con.Close();
return;
}
else
{
if (debit < balance)
{
balance = balance - debit;
if (debit == 0)
{
this.textBox7.Value = "0.00";
}
else
{
this.textBox7.Value = debit.ToString("n2");
}
}
else
{
this.textBox7.Value = balance.ToString("n2");
this.textBox15.Value = "0.00";
this.textBox13.Value = "0.00";
this.textBox26.Value = "0.00";
con.Close();
return;
}
querty = " SELECT Sum(st.Debit) FROM companie comp left join statemnt st on st.accountcode=comp.code and st.AccountType='DB' and comp.type=1 and Date(st.DocDate)<=(CURDATE() - interval 31 day) and (Date(st.DocDate)>=(CURDATE() - interval 60 day)) " +
"where comp.code=@compcode ";
cmd = new MySqlCommand(querty, con);
cmd.Parameters.AddWithValue("compcode", text);
try
{//string x=cmd.ExecuteScalar().ToString();
debit = Convert.ToDecimal(cmd.ExecuteScalar());
}
catch { debit = 0; }
if (debit < balance)
{
this.textBox15.Value = debit.ToString("n2");
balance = balance - debit;
}
else
{
this.textBox15.Value = balance.ToString("n2");
this.textBox13.Value = "0.00";
this.textBox26.Value = "0.00";
con.Close();
return;
}
querty = " SELECT Sum(st.Debit) FROM companie comp left join statemnt st on st.accountcode=comp.code and st.AccountType='DB' and comp.type=1 and Date(st.DocDate)<=(CURDATE() - interval 61 day) and (Date(st.DocDate)>=(CURDATE() - interval 90 day))" +
"where comp.code=@compcode ";
cmd = new MySqlCommand(querty, con);
cmd.Parameters.AddWithValue("compcode", text);
try
{
debit = Convert.ToDecimal(cmd.ExecuteScalar());
}
catch
{
debit = 0;
}
if (debit < balance)
{
this.textBox13.Value = debit.ToString("n2");
balance = balance - debit;
this.textBox26.Value = balance.ToString("n2");
con.Close();
}
else
{
this.textBox13.Value = balance.ToString("n2");
this.textBox26.Value = "0.00";
con.Close();
return;
}
}