PDA

Click to See Complete Forum and Search --> : ADO events


Sep 15th, 2000, 01:21 PM
Could someone please help me out with this?

I am trying to use the WillChangeRecord event for the recordset.delete method.

Everything seems fine unless I set the adStatus to adStatusCancel. If I do that my program generates a run-time error that I do not seem to be able to handle.

Any idea?

Thanks

GG

DrewDog_21
Sep 15th, 2000, 01:59 PM
how about posting your code and a description of the error and where in the code it occurs

Sep 16th, 2000, 04:45 AM
Good idea.

Here it comes...

Public Sub Delete()
'On Error GoTo Err_Delete

With adoPrimaryRS
If .Supports(adDelete) Then
adoPrimaryRS.Delete
MoveNext
Else
MsgBox "Impossibile cancellare il record"
End If
End With

Exit_Delete:
Exit Sub

Err_Delete:
MsgBox Err.Number & Err.Description
Resume Exit_Delete

End Sub

Private Sub adoPrimaryRS_WillChangeRecord(ByVal adReason As ADODB.EventReasonEnum, ByVal cRecords As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
'Posizione in cui inserire il codice per la convalida
'L'evento viene richiamato in seguito alle seguenti azioni
Dim bCancel As Boolean

Select Case adReason
Case adRsnAddNew
Case adRsnClose
Case adRsnDelete
'The user is trying to delete a record from the database

'Asks before delete a record.
strMsgBoxText = "Il record selezionato sta per essere cancellato!" & vbCrLf & _
"Continuare?"
strMsgBoxTitle = "Attenzione!"

intMsgBoxResponse = MsgBox(strMsgBoxText, vbApplicationModal + vbDefaultButton2 + _
vbExclamation + vbYesNo, strMsgBoxTitle)

'The user chose no to delete the record from the database
If intMsgBoxResponse = vbNo Then bCancel = True

Case adRsnFirstChange
Case adRsnMove
Case adRsnRequery
Case adRsnResynch
Case adRsnUndoAddNew
Case adRsnUndoDelete
Case adRsnUndoUpdate
Case adRsnUpdate
End Select

If bCancel Then adStatus = adStatusCancel

End Sub

I have starte questioning whether I should ask the operator to confirm his intent to delete the record before call the .delete method. It seems to me that would make more sense. It still remain though that the code above does not work on my machine. Here's the run-time error I get

-2147217842 (80040e4e)
The change was canceled during notification; no columns are changed.

Thanks