AkAlan
asked on
Where to put Try CAtch code for inserting a new record
I have an unbound Formview that is used for adding a new Work Order against an equipment item. In the ItemInserting event I have code that generates the pk (WorkOrderID) for the table that the record is being inserted to. I want to put a Try_Catch there which would allow me to redirect the user if for some reason the sql server is down and a new WorkOrderID did not get generated. If succesful then I want to provide a message box that tells the user the new WorkOrderID and allows them to either go to another web page to further document the Work Order or add another Work Order.
Where would be the best place to put the Try Catch function to make sure a new WorkOrderID was generated? I put it where I thought it might go but not too sure.
Which event would I use to redirect the user once a new record was inserted and a WorkOrderID generated? ItemInserted perhaps?
To redirect the user once the record is inserted I would need the WorkOrderID generated, how do I store that in a global variable after it is generated so I can then grab it later?
Thanks for any help
I have inserted what I have so far.
Where would be the best place to put the Try Catch function to make sure a new WorkOrderID was generated? I put it where I thought it might go but not too sure.
Which event would I use to redirect the user once a new record was inserted and a WorkOrderID generated? ItemInserted perhaps?
To redirect the user once the record is inserted I would need the WorkOrderID generated, how do I store that in a global variable after it is generated so I can then grab it later?
Thanks for any help
I have inserted what I have so far.
Protected Sub fvAddWorkOrder_ItemInserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.FormViewInsertEventArgs) Handles fvAddWorkOrder.ItemInserting
Dim newWorkOrderID As New NewWorkOrderID 'Class created to gerenrate next incramental WorkOrderID
Dim txtDate As TextBox = DirectCast(fvAddWorkOrder.FindControl("txtDateOpened"), TextBox)
Dim dateOpened As Date = txtDate.Text ' date needed to pass into the class to detrmine next woID
Dim nextWorkOrderID As String = newWorkOrderID.NewWorkOrderID(dateOpened).ToString()
Try
e.Values("WorkOrderID") = nextWorkOrderID
Catch ex As Exception
MsgBox("There was a problem generating the Work Order. Contact System Administrator at 552-7604")
Return
End Try
End Sub
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks, both suggestions make tons of sence. Any thoughts on where to put the code for redirecting the user once the database has been updated with the new record. Item_Inserted? I don't know the ramifications of interupting the process of inserting.
ASKER
Thanks, I got your second responce just as I submitted my last post. I'll give all those a try. Thanks a bunch for your help.
ASKER
Thanks again, I'm a newby coming from Access and this is different enough to give me a great challenge. People like you make it much easier.
Try
Dim nextWorkOrderID As String = newWorkOrderID.NewWorkOrde
e.Values("WorkOrderID") = nextWorkOrderID
Catch...
If that object has customer errors, you could identify it exactly by declaring ex to be a specific error type (Just as an example):
Catch ex As NewWorkOrderID_InvalidCast
To catch my made-up exception type.
-------
On another note, VB.NET is *not* case sensitive. So, declaring a variable name identical to a class name is strongly discouraged, since you could run into all kinds of namespace qualification issues. So this line:
Dim newWorkOrderID As New NewWorkOrderID
Has the potential to give you problems down the road. Give it a number or someother unique value to keep your sanity trying to debug. For example:
Dim newWorkOrderID1 As New NewWorkOrderID