|
web
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
No accessible overloadedasp.net. I get the following error: No accessible overloaded If you look at the error, there is one overloaded function that can be called (int, string, int, int). The first variable is constant that should work fine as an int and works everywhere else. The second variable is a string. The third variable is a System.Int32. (from trace) The fourth variable is a System.Int64. (from trace) The code: ****************************************************** trace.warn("type = User - " & Session("User").UserID.GetType.ToString()) trace.warn("type = ApplicantID - " & Session("ApplicantID").GetType.ToString()) HistoryLog.WriteHistoryLog(13,"Application Filed for: " & HeaderJobTitle.Text,Session("User").UserID,session("ApplicantID")) ************************************************************ Trace results: ************************** type = User - System.Int32 type = ApplicantID - System.Int64 **************************** It turns out if I change the above code to: HistoryLog.WriteHistoryLog(13,"Application Filed for: " & HeaderJobTitle.Text,Session("User").UserID,Convert.ToInt32(session("ApplicantID"))) I thought that the different sizes of integers were interchangeable (obviously the conversion works OK). I would have thought that an Int64 would work fine for an Integer field. The error messages: ******************************************************** Unhandled Execution Error No accessible overloaded 'HistoryLog.WriteHistoryLog' can be called with these arguments without a narrowing conversion: Public Sub WriteHistoryLog ( ByVal historyActionID As Integer, ByVal detail As String, ByVal userID As Integer, ByVal applicantID As Integer ) Public Sub WriteHistoryLog ( ByVal historyActionID As Integer, ByVal detail As String, ByVal firstName As String, ByVal lastName As String ) at Microsoft.VisualBasic.CompilerServices.VBBinder.set_InternalThrow(Exception Value) at Microsoft.VisualBasic.CompilerServices.VBBinder.BindToMethod(BindingFlags bindingAttr, MethodBase[] match, Object[]& args, ParameterModifier[] modifiers, CultureInfo culture, String[] names, Object& ObjState) at Microsoft.VisualBasic.CompilerServices.VBBinder.InvokeMember(String name, BindingFlags invokeAttr, Type objType, IReflect objIReflect, Object target, Object[] args, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParameters) at Microsoft.VisualBasic.CompilerServices.LateBinding.InternalLateCall(Object o, Type objType, String name, Object[] args, String[] paramnames, Boolean[] CopyBack, Boolean IgnoreReturn) at Microsoft.VisualBasic.CompilerServices.LateBinding.LateCall(Object o, Type objType, String name, Object[] args, String[] paramnames, Boolean[] CopyBack) at ASP.applicationCompletedView_aspx.SubmitIt_Click(Object s, ImageClickEventArgs e) in C:\Inetpub\wwwroot\staffingworkshop\applicant\secure\applicationCompletedView.aspx:line 666 at System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e) at System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) at System.Web.UI.Page.ProcessRequestMain() ******************************************************************* Here is the Function Call that is being called Public Shared sub WriteHistoryLog (historyActionID as Integer,detail as String,userID as Integer,applicantID as Integer) Why doesn't this work with the convert function? Thanks, Tom tshad wrote:
> I am getting the following error which makes no sense. I am doing this in In this group we would prefer to say (Integer, String, Integer, > asp.net. I get the following error: > > No accessible overloaded > > If you look at the error, there is one overloaded function that can be > called (int, string, int, int). Integer), but we know what you mean. > Well, if it's a constant that the compiler thinks looks like an Integer, > The first variable is constant that should work fine as an int and works > everywhere else. yes. > The second variable is a string. Aha.> The third variable is a System.Int32. (from trace) > The fourth variable is a System.Int64. (from trace) Show quoteHide quote > It works, I presume.> The code: > ****************************************************** > trace.warn("type = User - " & Session("User").UserID.GetType.ToString()) > trace.warn("type = ApplicantID - " & > Session("ApplicantID").GetType.ToString()) > HistoryLog.WriteHistoryLog(13,"Application Filed for: " & > HeaderJobTitle.Text,Session("User").UserID,session("ApplicantID")) > ************************************************************ > > Trace results: > ************************** > type = User - System.Int32 > type = ApplicantID - System.Int64 > **************************** > > It turns out if I change the above code to: > > HistoryLog.WriteHistoryLog(13,"Application Filed for: " & > HeaderJobTitle.Text,Session("User").UserID,Convert.ToInt32(session("ApplicantID"))) > What would you like to happen if session("ApplicantID") happened to be > I thought that the different sizes of integers were interchangeable > (obviously the conversion works OK). I would have thought that an Int64 > would work fine for an Integer field. ten billion (which doesn't fit in an Integer) ? > As it turns out, the full error message does tell you exactly what the > The error messages: > ******************************************************** > Unhandled Execution Error > > No accessible overloaded 'HistoryLog.WriteHistoryLog' can be called with > these arguments without a narrowing conversion: problem is... > ******************************************************************* I though it *does* work when you use Convert.ToInt32 (or CInt) ?> > Here is the Function Call that is being called > > Public Shared sub WriteHistoryLog (historyActionID as Integer,detail as > String,userID as Integer,applicantID as Integer) > > Why doesn't this work with the convert function? One the the things about VB.NET is that it likes to be type-safe, especially if you (as you always should) have Option Strict On. One of the type safety features is that when you are doing something which could result in the loss of information, you must be explicit about it. So you can say Dim ss As Short = 32 Dim ii As Integer = ss with no problem, because all Short values can be held in an Integer. But were you to try Dim ii As Integer = 32 Dim ss As Short = ii you would get a warning, because Integer to Short is a *narrowing* conversion - there are some Integer values which can't be held in a Short, so such an assignment is *unsafe*. Even though it is obvious to us that 32 will fit in a Short, the compiler pretty much only works one line at a time, and all it sees is that you are trying to fit a (potential) quart in a pint pot. It's exactly the same in your problem. Sure, session("ApplicantID") might only ever *be* a small number, but the *variable* is an Int64, so the compiler will not *automatically* convert it to an Int32, which is what would have to happen for the calling signature to match the definition signature. Thus the error message. -- Larry Lard larryl***@googlemail.com The address is real, but unread - please reply to the group For VB and C# questions - tell us which version "Larry Lard" <larryl***@googlemail.com> wrote in message Sorry, my C is showing through.news:4is3itF57d5dU1@individual.net... > tshad wrote: >> I am getting the following error which makes no sense. I am doing this >> in asp.net. I get the following error: >> >> No accessible overloaded >> >> If you look at the error, there is one overloaded function that can be >> called (int, string, int, int). > > In this group we would prefer to say (Integer, String, Integer, Integer), > but we know what you mean. Show quoteHide quote > Yes it does.>> >> The first variable is constant that should work fine as an int and works >> everywhere else. > > Well, if it's a constant that the compiler thinks looks like an Integer, > yes. > >> The second variable is a string. >> The third variable is a System.Int32. (from trace) >> The fourth variable is a System.Int64. (from trace) > > Aha. > >> >> The code: >> ****************************************************** >> trace.warn("type = User - " & Session("User").UserID.GetType.ToString()) >> trace.warn("type = ApplicantID - " & >> Session("ApplicantID").GetType.ToString()) >> HistoryLog.WriteHistoryLog(13,"Application Filed for: " & >> HeaderJobTitle.Text,Session("User").UserID,session("ApplicantID")) >> ************************************************************ >> >> Trace results: >> ************************** >> type = User - System.Int32 >> type = ApplicantID - System.Int64 >> **************************** >> >> It turns out if I change the above code to: >> >> HistoryLog.WriteHistoryLog(13,"Application Filed for: " & >> HeaderJobTitle.Text,Session("User").UserID,Convert.ToInt32(session("ApplicantID"))) > > It works, I presume. > But that would never happen.>> >> I thought that the different sizes of integers were interchangeable >> (obviously the conversion works OK). I would have thought that an Int64 >> would work fine for an Integer field. > > What would you like to happen if session("ApplicantID") happened to be ten > billion (which doesn't fit in an Integer) ? > I'm not really sure why it is showing as Int64, but I would have thought that it would convert the type unless, as you say, the value is out of bounds. Obviously that is not the case, as you explain below. Thanks, Tom Show quoteHide quote >> Sorry, I meant "does".>> The error messages: >> ******************************************************** >> Unhandled Execution Error >> >> No accessible overloaded 'HistoryLog.WriteHistoryLog' can be called with >> these arguments without a narrowing conversion: > > As it turns out, the full error message does tell you exactly what the > problem is... >> ******************************************************************* >> >> Here is the Function Call that is being called >> >> Public Shared sub WriteHistoryLog (historyActionID as Integer,detail as >> String,userID as Integer,applicantID as Integer) >> >> Why doesn't this work with the convert function? > > I though it *does* work when you use Convert.ToInt32 (or CInt) ? Show quoteHide quote > > One the the things about VB.NET is that it likes to be type-safe, > especially if you (as you always should) have Option Strict On. One of the > type safety features is that when you are doing something which could > result in the loss of information, you must be explicit about it. > > So you can say > > Dim ss As Short = 32 > Dim ii As Integer = ss > > > with no problem, because all Short values can be held in an Integer. But > were you to try > > Dim ii As Integer = 32 > Dim ss As Short = ii > > you would get a warning, because Integer to Short is a *narrowing* > conversion - there are some Integer values which can't be held in a Short, > so such an assignment is *unsafe*. Even though it is obvious to us that 32 > will fit in a Short, the compiler pretty much only works one line at a > time, and all it sees is that you are trying to fit a (potential) quart in > a pint pot. > > It's exactly the same in your problem. Sure, session("ApplicantID") might > only ever *be* a small number, but the *variable* is an Int64, so the > compiler will not *automatically* convert it to an Int32, which is what > would have to happen for the calling signature to match the definition > signature. Thus the error message. > > -- > Larry Lard > larryl***@googlemail.com > The address is real, but unread - please reply to the group > For VB and C# questions - tell us which version tshad wrote:
Show quoteHide quote > "Larry Lard" <larryl***@googlemail.com> wrote in message The compiler has to be strict; it can't know that the applicant ID > news:4is3itF57d5dU1@individual.net... >> tshad wrote: >>> I thought that the different sizes of integers were interchangeable >>> (obviously the conversion works OK). I would have thought that an Int64 >>> would work fine for an Integer field. >> What would you like to happen if session("ApplicantID") happened to be ten >> billion (which doesn't fit in an Integer) ? >> > > But that would never happen. > > I'm not really sure why it is showing as Int64, but I would have thought > that it would convert the type unless, as you say, the value is out of > bounds. Obviously that is not the case, as you explain below. values 'will always' be convertible, unless we help it by providing the explicit conversion - by doing so we are saying "Don't worry dear compiler, I take full responsibility for the runtime problems that might occur by trying to convert a too-large Int64 into an Int32. Please carry on compiling." As to why it's an Int64 to start with - I don't actually know enough ASP.NET to be able to suggest an explanation. -- Larry Lard larryl***@googlemail.com The address is real, but unread - please reply to the group For VB and C# questions - tell us which version
DEBUG: can we disable try/catch ?
Microsoft (R) Visual Basic Compiler has encountered a problem and needs to close. :o( How do I handle this How to ping an IP address by using sockets in Visual Basic .NET Programmable LEGO blocks? Newbie question - VB.net, referencing controls Question: arraylist and item Week Ending last API question.... how to hardcode lots of text into a textbox/RichTextbox? |
|||||||||||||||||||||||