I have the following stored procedure and access vba script.
______________stored procedure_________________
ALTER PROCEDURE dbo.UpdateTask
@task_id int,
@task_type_id int,
@task_status_id int,
@order_item_id int,
@task_desc varchar(50),
@order_datetime datetime,
@due_date smalldatetime,
@instructions varchar(1000),
@user_id varchar(20),
@ts rowversion
AS
BEGIN
declare @Error int;
declare @RowCount int;
UPDATE task SET
task_desc = @task_desc --, last_update_datetime = getdate()
WHERE task_id = @task_id AND ts = @ts
SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT;
--return -1
IF (@Error <> 0)
RETURN -1
IF (@RowCount = 0)
BEGIN
declare @lastUpdate datetime;
declare @lastUpdateStr varchar(50);
declare @lastUpdateUser varchar(20);
SELECT @lastUpdate = last_update_datetime
FROM task WHERE task_id = @task_id
IF @lastUpdate is not null
BEGIN
SET @lastUpdateStr = CONVERT(varchar(50),@lastU
pdate,9); --date format?
RAISERROR('The row with id %d has been updated since it was read. Last update:%s by:. UPDATE fails.',16,1,@task_id,@las
tUpdateStr
);
--RETURN -1
END
ELSE
BEGIN
RAISERROR('The row with id %d does not exist. UPDATE fails',16,1,@task_id);
--RETURN -1
END
END
RETURN 0
END
_______________________Acc
ess Script____________________
________
Public Function InsertTask(TaskTypeID As Integer, TaskStatusID As Integer, OrderItemID As Integer, taskDesc As String, OrderDate As Date, dueDate As Date, Instructions As String, user As String, Optional taskID As Long, Optional ts As Variant) As Boolean
On Error GoTo insertTaskErr
Set rs = New ADODB.Recordset
Set rs = New ADODB.Recordset
Dim cn As ADODB.Connection
Dim cmd As ADODB.Command
Dim prmTaskType As New ADODB.parameter
Dim prmTaskStatus As New ADODB.parameter
Dim prmOrderItemID As New ADODB.parameter
Dim prmTaskDescription As New ADODB.parameter
Dim prmTaskOrdered As New ADODB.parameter
Dim prmTaskDue As New ADODB.parameter
Dim prmTaskInstructions As New ADODB.parameter
Dim prmTaskUser As ADODB.parameter
Dim prmTaskTs As ADODB.parameter
Dim prmTaskID As ADODB.parameter
Dim myrowcount As Integer
Set cmd = New ADODB.Command
cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandType = ADODB.adCmdStoredProc
If taskID > 0 Then
cmd.CommandText = "UpdateTask"
Else
cmd.CommandText = "InsertTask"
End If
Set prmReturn = cmd.CreateParameter("Retur
n_Value", adInteger, adParamReturnValue)
cmd.Parameters.Append prmReturn
If taskID > 0 Then
Set prmTaskID = cmd.CreateParameter("@task
_id", adInteger, adParamInput)
cmd.Parameters.Append prmTaskID
prmTaskID = taskID
End If
Set prmTaskType = cmd.CreateParameter("@task
_type_id",
adInteger, adParamInput)
cmd.Parameters.Append prmTaskType
prmTaskType = TaskTypeID
Set prmTaskStatus = cmd.CreateParameter("@task
_status_id
", adInteger, adParamInput)
cmd.Parameters.Append prmTaskStatus
prmTaskStatus = TaskStatusID
Set prmOrderItemID = cmd.CreateParameter("@orde
r_item_id"
, adInteger, adParamInput)
cmd.Parameters.Append prmOrderItemID
prmOrderItemID = OrderItemID
Set prmTaskDescription = cmd.CreateParameter("@task
_desc", adVarChar, adParamInput, 50)
cmd.Parameters.Append prmTaskDescription
prmTaskDescription = taskDesc
Set prmTaskOrdered = cmd.CreateParameter("@orde
r_datetime
", adDBTimeStamp, adParamInput)
cmd.Parameters.Append prmTaskOrdered
prmTaskOrdered = OrderDate
Set prmTaskDue = cmd.CreateParameter("@due_
date", adDBTimeStamp, adParamInput)
cmd.Parameters.Append prmTaskDue
prmTaskDue = dueDate
Set prmTaskInstructions = cmd.CreateParameter("@inst
ructions",
adVarChar, adParamInput, 1000)
cmd.Parameters.Append prmTaskInstructions
prmTaskInstructions = Instructions
Set prmTaskUser = cmd.CreateParameter("@user
_id", adVarChar, adParamInput, 20)
cmd.Parameters.Append prmTaskUser
prmTaskUser = user
If taskID > 0 Then
Set prmTaskTs = cmd.CreateParameter("@ts",
adVarBinary, adParamInput, 8)
cmd.Parameters.Append prmTaskTs
prmTaskTs = ts
End If
cmd.Execute
InsertTask = True
insertTaskExit:
Exit Function
insertTaskErr:
MsgBox Err.Number & " " & Err.Description
InsertTask = False
Resume insertTaskExit
End Function
_________________________E
nd of Access Script____________________
The problem is that I can't get the RAISEERROR to send the vba code into the Error Loop of VBA. The only time this worked is if I included a RAISEERROR at the top of the stored procedure.
Any thoughts would be appreciated.
Start Free Trial