Manual Insert Fails

I'm trying to insert a record to a sql server using an objectdatasource but I'm getting an exception when it gets to inserting the date field. The exception is:
"Object reference not set to an instance of an object."

The variable has the correct date in it so I'm not really sure what this means. I will post a copy of all the code I'm using in case someone can see what I'm doing wrong. Thanks for any help on this.

Code Behind on the Onclick event:
        Dim strWorkOrderID As String = txtWorkOrderID.Text
        Dim datDateWorked As Date = txtDateWorked.Text
        Dim strWorkPerformed As String = txtWorkDone.Text
        odsWorkOrderDetail.InsertParameters("WorkOrderID").DefaultValue = strWorkOrderID.ToString()
        odsWorkOrderDetail.InsertParameters("WorkDone").DefaultValue = strWorkPerformed.ToString()
        odsWorkOrderDetail.InsertParameters("DateWorked").DefaultValue = datDateWorked.ToShortDateString()  ****Fails Here****
<asp:ObjectDataSource ID="odsWorkOrderDetail" runat="server" 
                    InsertMethod="AddWorkOrderDetail" OldValuesParameterFormatString="{0}" 
                    SelectMethod="GetWorkOrderDetails" TypeName="WorkOrderBLL">
                        <asp:Parameter Name="WorkOrderID" Type="String" />
                        <asp:Parameter Name="WorkOrderID" Type="String" />
                        <asp:Parameter Name="WorkDate" Type="DateTime" />
                        <asp:Parameter Name="WorkDone" Type="String" />
 <System.ComponentModel.DataObjectMethod(System.ComponentModel.DataObjectMethodType.Insert, False)> _
   Public Function AddWorkOrderDetail _
                  (ByVal workOrderID As String, _
                   ByVal workDate As Date, _
                   ByVal workDone As String) As Boolean
        Dim workOrderDetail As New WorkOrderDAL.FAC_WorkOrderDetailsDataTable
        Dim workOrderDetailRecord As WorkOrderDAL.FAC_WorkOrderDetailsRow = workOrderDetail.NewFAC_WorkOrderDetailsRow()
        workOrderDetailRecord.WorkOrderID = workOrderID
        workOrderDetailRecord.WorkDate = workDate
        workOrderDetailRecord.WorkDone = workDone
        Dim rowsAffected As Integer = DetailsAdapter.Update(workOrderDetail)
        Return rowsAffected = 1
    End Function
Stored Procedure:
ALTER PROCEDURE dbo.spInsertFAC_WorkOrderDetails
@WorkOrderID varchar(15),
@WorkDate datetime,
@WorkDone varchar (1000))
INSERT INTO dbo.FAC_WorkOrderDetails ([WorkOrderID], [WorkDate], [WorkDone])
     VALUES (@WorkOrderID, @WorkDate, @WorkDone);
SELECT WorkOrderID, WorkDate, WorkDone FROM dbo.FAC__WorkOrderDetails 

Open in new window

Who is Participating?
prairiedogConnect With a Mentor Commented:
Parameter name does not match?
<asp:Parameter Name="WorkDate" Type="DateTime" />
odsWorkOrderDetail.InsertParameters("DateWorked").DefaultValue = datDateWorked.ToShortDateString()  
dates really stink in cross platform programming, and you're taking a test string, changing it to a data, then to a date string, then passing it to a database. What happens when you declare datDateWorked  as a string instead and pass the value thusly?

AkAlanAuthor Commented:
Same exact error. I even tried to hard code the date like this:
odsWorkOrderDetail.InsertParameters("DateWorked").DefaultValue = #1/1/2008#
it still gave me the same exact error
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

AkAlanAuthor Commented:
Thanks, I must be way too close to this.
It happens. Especially after you have seen your own code for a thousand times, you will need a pair eyes from another person to find this kind of error.
AkAlanAuthor Commented:
That did the trick. Now I have another problem but that will be for another post if I can't figure it out. Thanks, I looked at this for 4 hours.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.