急急急!求大神搭救
这个是用三层架构做的项目,红色标志处出了问题:最匹配的重载方法具有一些无效参数private void punish_select_Click(object sender, EventArgs e)
{
try
{
Punish punish=new Punish();
punish.WorkerID = com_punish.Text.ToString();
punish.Cause = textBox_cause.Text.ToString();
punish.Grade = comboBox_grade.Text.ToString();
punish.Date = date_date.Value;
punish.Money = int.Parse(textbox_money.Text);
BLL.PunishManage.GetPunishID(punish);
}
catch (Exception err)
{
MessageBox.Show(err.Message.ToString());
}
}
Punish的model层
namespace Models
{
/// <summary>
/// 处分
/// </summary>
public class Punish
{
private int punishID;
/// <summary>
/// 处分编号
/// </summary>
public int PunishID
{
get { return punishID; }
set { punishID = value; }
}
private string workerID;
/// <summary>
/// 员工编号
/// </summary>
public string WorkerID
{
get { return workerID; }
set { workerID = value; }
}
private string cause;
/// <summary>
/// 原因
/// </summary>
public string Cause
{
get { return cause; }
set { cause = value; }
}
private string grade;
/// <summary>
/// 级别
/// </summary>
public string Grade
{
get { return grade; }
set { grade = value; }
}
private DateTime date;
/// <summary>
/// 日期
/// </summary>
public DateTime Date
{
get { return date; }
set { date = value; }
}
Bll层的代码
#region 根据处分编号获取处分信息--------------------编程问答-------------------- public static Punish GetPunishID(string punishID)
/// <summary>
/// 根据处分编号获取处分信息
/// </summary>
/// <param name="name">处分编号</param>
/// <returns>处分信息</returns>
public static Punish GetPunishID(string punishID)
{
try
{
Punish punish = new Punish();
string str = "select * from PunishInfo where punishID = @punishID";
OleDbDataReader odr = DBHelper.GetReader(str, new OleDbParameter("@punishID", punishID));
if (odr.Read())
{
punish.PunishID = (int)odr["punishID"];
punish.WorkerID = (string)odr["workerID"];
punish.Cause=(string)odr["cause"];
punish.Grade = (string)odr["grade"];
punish.Date = (DateTime)odr["date"];
punish.Money = (Decimal)odr["money"];
}
return punish;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
throw e;
}
}
#endregion
方法需要的参数是string类型的 punishID,你传个punish对象过去,当然出问题了 --------------------编程问答-------------------- 错误在什么地方?
--------------------编程问答-------------------- 额,看到了,
参数不匹配。 --------------------编程问答--------------------
BLL.PunishManage.GetPunishID(punish);这个出错了 --------------------编程问答--------------------
那请问解决方法是怎样呢?知道错在这里,可是就是不知道怎么修改 --------------------编程问答-------------------- 首先你获得punish.PunishID 的值,
然后调用就是了。
--------------------编程问答--------------------
...
punish.PunishID=???//这里你应该清楚赋什么值
BLL.PunishManage.GetPunishID(punish.PunishID.ToString())
...
大概理解你的意思,根據條件查找結果。
再重新寫一個參數為punish對象的方法。
public static Punish[] GetPubish(Punish punish)
{
OleDbConnection conn = new OleDbConnection(connString);//connString 是你連接Access的字符串
int i=0;
StringBuilder sb=new StringBuilder();
sb.Append("select * from PunishInfo where 1=1 ");
if(!string.IsNullOrEmpty(punish.WorkerID))
{
sb.Append(" and WorkerID='"+punish.WorkerID+"' ");
}
if(!string.IsNullOrEmpty(punish.Cause))
{
sb.Append(" and WorkerID='"+punish.Cause+"' ");
}
if(!string.IsNullOrEmpty(punish.Grade))
{
sb.Append(" and WorkerID='"+punish.Grade+"' ");
}
if(punish.Date!=null)
{
sb.Append(" and Date='"+punish.Date+"' ");
}
if(punish.Money!=0)
{
sb.Append(" and Money="+punish.Money);
}
OleDbCommand cmd = new OleDbCommand(sb.ToString(), conn);
cmd.Connection.Open();
OleDbDataReader reader = cmd.ExecuteReader();
int count = reader.RecordsAffected;
Punish[] punishs=new Punish[count];
if(reader.Read())
{
punishs[i]=new punish();
punishs[i].PunishID = Convert.ToInt32(odr["punishID"]);
punishs[i].WorkerID = odr["workerID"].ToString();
punishs[i].Cause= odr["cause"].ToString();
punishs[i].Grade = odr["grade"].ToString();
punishs[i].Date = Convert.ToDateTime(odr["date"]);
punishs[i].Money = Convert.ToDecimal(odr["money"]);
i++;
}
reader.Close();
return punishs;
}
补充:.NET技术 , C#