ADO.NET :: Isnull And Nullable Int Data Type?
Dec 9, 2010I want to convert the following SQL line to LINQ :
[Code]....
I want to convert the following SQL line to LINQ :
[Code]....
I am making a website to store invoices so i can mail them to clients. So i got a table for clients, invoices and one with invoice products/services. When an invoice has no products/services added to them and it returns null i get the error "the null value cannot be assigned to a member with type System.Decimal which is a non-nullable value type."
I just started with linq. Before i always used mysql. Mostly i just had to call data from 1 table so forgive me if my linq query isn't really correct.
Dim invoices = From i In db.invoices _
Group Join p In db.products On i.id Equals p.invoiceId Into invoiceProducts = Group _
Select New With {i.client.naam, i.titel, (From iP In invoiceProducts Select iP.prijs).Sum}
i show the client's name, the title of the invoice and the total amount the clients will need to pay for products and services.
I am LINQ querrying against a datatable. However, I am unsuccessfull with catching null values. Here is my code that is giving me the following error.
[Code]....
I am checking to see if minperc is null. However to check that it still is trying to convert the value to double. Cant figure out a way around it. Here is the error: Cannot cast DBNull.Value to type 'System.Double'. Please use a nullable type.
Why following Code giving Nullable Error, it should converted to int right?int? abc=Session["test"] as int;t be used with a reference type or nullable type ('int' is a non-nullable value type)
View 9 RepliesI have (or so I think!) a simple problem.
I will greatly simplify my model to speed this along.
I have a model class lets call it item:
public class Item
{
[Required(ErrorMessage="Must indicate if product is to be tracked by serial number.")]
public bool TrackedBySerial { get; set; }
}
I have an "Add" view where I create a DropDownList like so:
<%= Html.DropDownListFor(model=>model.TrackedBySerial, new SelectList(new List<object> {null,true,false},null),"Select One") %>
<%= Html.ValidationMessageFor(model => model.TrackedBySerial) %>
My problem is that unless I create my boolean value in the model to be a nullable type, I can't force the blank default value.
If I use the Html.DropDownList() instead of DropDownListFor() , is there any way for me to use ModelState.IsValid -- or do I need to mix my own custom validation in my controller as well?
Update: So I got the functionality I was looking for, its just a bit more verbose than I'd have liked. Is there a better way to do this?
Controller:
[HttpPost]
public ActionResult Add(InventoryItem newItem)
{
try
{
//get the selected form value
string formVal = Request.Form["TrackBySerial"];
//convert to true, false, or null
bool? selectedValue = TryParseNullable.TryParseNullableBool(formVal);
//if there is no value, add an error
if (!selectedValue.HasValue).....
view:
<div class="editor-field">
<%=Html.DropDownList("TrackBySerial","- Select One- ") %>
<%=Html.ValidationMessage("TrackBySerial") %>
<%= Html.ValidationMessageFor(model => model.TrackedBySerial) %>
</div>
I have a question regarding routing and an issue that I am currently having in my application. I have an action, providers/List/, which accepts two parameters, a zipCode and a page value for paging results. I have defined this route as follows in my global.asax, /providers/{zipCode}/{page}
I have created another action in this controller, Dashboard, which does not expect any parameters, so I am assuming that the route would ultimately be /providers/dashboard, if I am not mistaken. What is happening is that for some reason I am getting a routing error regarding zipCode not being a non-nullable type. It makes me think that the first action's route is what is getting hit instead of going to the dashboard action. I am sure that it has something to do with the route entry that I have made in my global.asax file.
When i click on the page that represents a controller the following error was displayed:-
"The null value cannot be assigned to a member with type System.Int32 which is a non-nullable value type"
On this link of code
var articleapproval = articletyperepository.FindAllArticlesRequireMyApproval().ToList();
while the FindAllArticlesRequireMyApproval execute the following LINQ statement :-
var articleapproval= articletyperepository.FindAllArticlesRequireMyApproval().ToList();
where this methods calls the following LINQ statement:-
My code:
[Code]....
If the value is null writes out that error.How to check if the value is null? And if the value is null, I want to store + 1
I've written the following Extension Method
<Extension()>
Public Function ToUtcIso8601(ByVal dt As Date) As String
Return String.Format("{0:s}Z", dt)
End Function
But I also need a Nullable version of the same method... how exactly do I do this?
This is what I was thinking, but I'm not sure if this is the right way
[code]....
I have a problem:
I've created usual Controller and View(Edit view) for editing my Entity (EntityFramework)
Here is view example:
<div class="editor-field">
@Html.EditorFor(model => model.BirthDate)
@Html.ValidationMessageFor(model => model.BirthDate)
</div>
BirthDate is Nullable<DateTime>
but during loading my View I get this exception
The model item passed into the dictionary is null, but this dictionary requires a non-null model item of type 'System.DateTime'.
That's because of BirthDate is null in database but it is nullable and I expect that it just leaves the filed empty.
And I have Shared EditorTemplate:
@model System.Nullable<System.DateTime>
@if (Model.HasValue)
I have to believe that I'm just missing something silly on this one. It SHOULD work... but alas, it is not. Here is my code:
SELECT s.[id], s.[familyid], s.[lastname], s.[firstname], s.[middlename], s.[suffix], s.[nickname], s.[dob], fix(datediff(d, isnull(s.DOB, Now()), NOW()) / 365) as AGE, s.[allergies], s.[notes], s.[photographsOK], s.[school], f.[city], f.[state] FROM [Students] s, [families] f, [employee] e where s.[familyid] = f.[id] and f.[franchise] = e.[franchisename] and e.[username] = @Username order by f.[lastname]"
This was working fine before I put the "IsNull"handler in the datediff function to handle problems with null dates. Now I get the following error when I try to run it.Wrong number of arguments used with function in query expression 'fix(datediff('d', isnull(s.[DOB], now()), NOW()) / 365)'. I even tried using just the ISNULL(s.[DOB], NOW()) without the Datediff and get the same error.
I have dropdownlist that maps from a SQL foreign key, which can be NULL.
Currently, I've added a "Please select..." to the top of my dropdown list and assigned it a value of 0.
I know how to map from the drop down list to SQL using a CASE statement in my UpdateCommand.
But how to I map from the SELECT statement to my dropdownlist? If this foreign key contains null I get "Item not in Dropdown list". I'd like to show "Please Select..." as the dropdownlist item if the SQL item contains NULL. I saw something online that says to use the value '''' for 'Please select...', but I don't think it's right, plus it doesn't work.
Do I have to do something in my SELECT statement or do I have to do something on DDL.Databind?
I have the following:
[code]....
I keep getting this error:
Message = "The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value."
What i'm trying to do is group by ContentObjectId and then get StartDate that is greater than today.
I'm using entity framwork and MS SQL2008
I have a FormView that allows a user to register for a company event. I want to do a couple of things with this form.
1. I need to write this data to a MS SQL database
2. I need to send an email confirmation of their registration to their email.
I know how to do both of these things, but i am having trouble doing both at the same time.
It would be nice if I could do it in one click, but I coded it into two pages to try to help simplify it.
The first page allows the user to input their information into a formview and when they click the submit button, it places those answers into session variables:
[Code]....
[Code]....
The Second page confirms the users information by taking those session variables and placing them into labels:
[Code]....
[Code]....
However, after I place information into the formview on the first page, it throws up this error:
"Conversion from type 'TextBox' to type 'String' is not valid".
I have this error "The given value of type String from the data source cannot be converted to type datetime of the specified target column." when I used sqlbulkcopy to do the transaction
Here is my code:
[code]....
I have built a dataset named Transaction_Time.I called it on Page_Load
Transaction_Time tranTme = new Transaction_Time();
put it in the session.
Session["Transaction"] = tranTme;
Then I call that session and cast to dataset.
DataSet dstTranTime = (DataSet)Session["Transaction"];
I got the following error.Unable to cast object of type 'Transaction_Time' to type 'System.Data.DataSet'.
[InvalidCastException: Unable to cast object of type 'Transaction_Time' to type 'System.Data.DataSet'.]
Transaction_Time.Page_Load(Object sender, EventArgs e) in c:InetpubwwwrootWilliam29_11_2010Transaction_Time.aspx.cs:47
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627
It is OK for some other pages. But for some page, it doesn't.
If I have a linq query that creates the anonymous type below:
select new
{
lf.id,
lf.name
lf.desc,
plf.childId
};
Is it possible to assign a specific type to one of the members? Specifically I would like to make lf.id a null-able int rather than an int...
I have a gridview which I'm trying to get the display of phonenumbers listed in a certain display format; (xxx) xxx-xxxx.If I have the code such as this, it displays the unformatted phone number and (000) 000-0000 for the null items.
[Code]....
i 'm working on AIRLINE RESERVATION PORTAL and it's ok how to do this ?
the user most select the number of passenger and passenger's type (Adult,Child,Infant) for example he select 2-adult,3child,1-Infant
and go next , in the next page i have to generate three type of multi application form for each passenger type
2 adult application form
3 Child application form
1 Infant application form
depend on last selected vales , to save the applications in database
I am having problem with rowdatabound, want to add if conditions intact, i am using teh following two if conditions and they don't look right. i found them on google.
If e.Row.RowState = DataControlRowState.Normal Or e.Row.RowState = DataControlRowState.Alternate Then end if
If e.Row.RowState = DataControlRowState.Edit Or e.Row.RowState = 5 Then end if
With datagrids i use these and they work excellent:
If e.Item.ItemType = System.Web.UI.WebControls.ListItemType.Item OrElse e.Item.ItemType = System.Web.UI.WebControls.ListItemType.AlternatingItem Then
end if.....
I'm trying to pass email addresses from an array to a stored procedure, then display the results in my gridview. I get the following error:No mapping exists from object type System.String[] to a known managed provider native type.On this line: Dim DR As SqlDataReader = MyCommand.ExecuteReader
[Code]....
I have a ASP.NET MVC view that displays a single ServiceProvider object. In this view there is a selectlist that lists one or more ServiceProviderGroup objects and uses the Id property for the value and the Name property for the text. In this list I also show a entry with a value of -1 and text of "No Provider". When the Edit[Post] method is called the Id value from the select list maps to a nullable property (GroupId) on a ServiceProvider object. When a value other the -1 is selected from the list it works as expected. But, when the value is -1, I want a NULL reference to be applied to the GroupId property during the UpdateModel call. Within the Edit method, prior to calling UpdateModel, I have tried replacing the entry within the Controller.ValueProvider with a null reference and adding a ValueProviderResult which contains a null reference, but the UpdateModel always has an issue (InvalidOperationException).
View 3 RepliesI have a property int? MyProperty as a member in my datasource (ObjectDataSource). Can I bind this to a TextBox, like
<asp:TextBox ID="MyTextBox" runat="server" Text='<%# Bind("MyProperty") %>' />
Basically I want to get a null value displayed as blank "" in the TextBox, and a number as a number. If the TextBox is blank MyProperty shall be set to null. If the TextBox has a number in it, MyProperty should be set to this number.If I try it I get an exception: "Blank is not a valid Int32".
But how can I do that? How to work with nullable properties and Bind?
I have a problem with passing a model to a controllerIn my controller I have a HttpPost function that gets a EF model.The problem is that the form does not contains all properties of the EF model.When the function is called that gets this EF model, I get error messge of fields that are not nullable in the EF model.That's because the fields are not in the form, so the not nullable properties gets no value.
View 5 RepliesI am a c#/asp.net developer and I am having to work on a VB/asp.net. I started out with VB.NET but after years away from it I'm getting confused with the syntax.
I have two variables
Dim originalDate as DateTime?
Dim newDate as DateTime?
Both nullable datetimes, originalDate is a nullable date I am getting from the database and newDate time is set in code, I need to compare them, they can either both have dates, neither have dates or one have and one not.
I have a bit of code as follows:
if origEndDate = origEndDate then
When both origEndDate and origEndDate are "nothing" this statement is false (well when I run it in the watch window it comes back as nothing)!
I don't understand why this is the case because I was under the impression doing an "=" compares the two values and as they are the same surely it should be true?
What syntax should I be using as in C# I can do the above as so:
if (origEndDate == origEndDate) { }
and it will come back as true.