当前位置:编程学习 > C#/ASP.NET >>

急急急!求大神搭救

这个是用三层架构做的项目,红色标志处出了问题:最匹配的重载方法具有一些无效参数
  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 根据处分编号获取处分信息
        /// <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
--------------------编程问答--------------------  public static Punish GetPunishID(string punishID)

方法需要的参数是string类型的 punishID,你传个punish对象过去,当然出问题了 --------------------编程问答-------------------- 错误在什么地方?

--------------------编程问答-------------------- 额,看到了,
参数不匹配。 --------------------编程问答--------------------
 BLL.PunishManage.GetPunishID(punish);
这个出错了 --------------------编程问答--------------------
引用 1 楼 q107770540 的回复:
 public static Punish GetPunishID(string punishID)

方法需要的参数是string类型的 punishID,你传个punish对象过去,当然出问题了



那请问解决方法是怎样呢?知道错在这里,可是就是不知道怎么修改 --------------------编程问答-------------------- 首先你获得punish.PunishID 的值,
然后调用就是了。

...
punish.PunishID=???//这里你应该清楚赋什么值
BLL.PunishManage.GetPunishID(punish.PunishID.ToString())
...
--------------------编程问答--------------------
引用 5 楼 ljywan123 的回复:
Quote: 引用 1 楼 q107770540 的回复:

 public static Punish GetPunishID(string punishID)

方法需要的参数是string类型的 punishID,你传个punish对象过去,当然出问题了



那请问解决方法是怎样呢?知道错在这里,可是就是不知道怎么修改

大概理解你的意思,根據條件查找結果。
再重新寫一個參數為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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,