First of all you have not used to declare the proper data type for your methods and thus make you to get confused. Here is the rearrangement of your code which would make sense.
In Data Access Layer
//Change the return type as string since you are using ExecuteScalar.
//You can change the method type based on the return type.
public string Max_Member_Id(Configure_MasterPL obj, Member_MasterPL objmem)
{
SqlCon.Open();
sqlCmd = new SqlCommand("SELECT ISNULL(MAX(CONVERT(NUMERIC,MEMNO)),0)+1 FROM MEMBER_MASTER WITH (NOLOCK), SqlCon);
objmem.MemberID= Convert.ToString(sqlCmd.ExecuteScalar());
sqlCmd.Dispose();
SqlCon.Close();
return objmem.MemberID;
}
In Bussiness Layer
//Change the type string
public string MaxMemcode(Configure_MasterPL obj, Member_MasterPL memobj)
{
return objMember.Max_Member_Id(obj,memobj);
}
In Presentation Layer
//ExecuteScalar method to retrieve a single value (for example, an aggregate value) from a database. Thus you can not assign that for the DataSet.
private void max()
{
string MEM_CODE = "";
objMemberMasterPL.MemberID = "0";
MEM_CODE= objMemberMasterBAL.MaxMemcode(objMemberMasterPL);
}
Hope this would help in some way or other.