﻿<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>StrataFrame Forum » StrataFrame Application Framework - V1 » Business Objects and Data Access (How do I?)  » Difficulty with adding broken rules</title><generator>InstantForum 2017-1 Final</generator><description>StrataFrame Forum</description><link>http://forum.strataframe.net/</link><webMaster>StrataFrame Forum</webMaster><lastBuildDate>Tue, 09 Jun 2026 07:23:58 GMT</lastBuildDate><ttl>20</ttl><item><title>Difficulty with adding broken rules</title><link>http://forum.strataframe.net/FindPost1336.aspx</link><description>&lt;DIV style="BORDER-RIGHT: #7f9db9 0.75pt solid; PADDING-RIGHT: 6pt; BORDER-TOP: #7f9db9 0.75pt solid; PADDING-LEFT: 6pt; BACKGROUND: white; PADDING-BOTTOM: 6pt; BORDER-LEFT: #7f9db9 0.25pt solid; PADDING-TOP: 6pt; BORDER-BOTTOM: #7f9db9 0.75pt solid"&gt;&lt;P style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid #7F9DB9 .75pt; mso-border-left-alt: solid #7F9DB9 .25pt; mso-padding-alt: 6.0pt 6.0pt 6.0pt 6.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: Verdana"&gt;Hey guys, &lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid #7F9DB9 .75pt; mso-border-left-alt: solid #7F9DB9 .25pt; mso-padding-alt: 6.0pt 6.0pt 6.0pt 6.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: Verdana"&gt;My app is blowing right through the business rule evaluation (on a deletion) and not halting at a broken business rule and I am not quite sure why or what part I'm missing. Direct calls to the bo.RejectChanges() method don't stop the deletion and I can not find a way to halt the deletion and return to the calling form. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid #7F9DB9 .75pt; mso-border-left-alt: solid #7F9DB9 .25pt; mso-padding-alt: 6.0pt 6.0pt 6.0pt 6.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: Verdana"&gt;I have two tables, [car] and [car_type], where [car_type] is the "Parent" or domain table, fk'd with car.car_type_id Referencing car_type.car_type_id. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid #7F9DB9 .75pt; mso-border-left-alt: solid #7F9DB9 .25pt; mso-padding-alt: 6.0pt 6.0pt 6.0pt 6.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: Verdana"&gt;I have an interface to interact with both tables and I am testing the error condition, namely trying to delete a 'type' to which 'cars' are associated.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid #7F9DB9 .75pt; mso-border-left-alt: solid #7F9DB9 .25pt; mso-padding-alt: 6.0pt 6.0pt 6.0pt 6.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: Verdana"&gt;What I am trying to do is prevent a user from deleting a car_type if there are cars associated to it. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid #7F9DB9 .75pt; mso-border-left-alt: solid #7F9DB9 .25pt; mso-padding-alt: 6.0pt 6.0pt 6.0pt 6.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: Verdana"&gt;boCars has the following method - it counts the number of cars associated with a car_type&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid #7F9DB9 .75pt; mso-border-left-alt: solid #7F9DB9 .25pt; mso-padding-alt: 6.0pt 6.0pt 6.0pt 6.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Public Function GetCountByType(ByVal intCarTypeID As Integer) As Integer&lt;BR&gt;&amp;nbsp; Dim loCommand As New SqlCommand()&lt;BR&gt;&amp;nbsp; loCommand.Parameters.Add("@_car_type_id", SqlDbType.Int)&lt;BR&gt;&amp;nbsp; loCommand.Parameters("@_car_type_id").Value = intCarTypeID&lt;BR&gt;&amp;nbsp; loCommand.CommandText = "SELECT COUNT(*) FROM car " &amp;amp; _ &lt;BR&gt;&amp;nbsp; "WHERE car_type_id = @_car_type_id"&lt;BR&gt;&amp;nbsp; Return CType(Me.ExecuteScalar(loCommand), Integer)&lt;BR&gt;End Function&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f5080; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid #7F9DB9 .75pt; mso-border-left-alt: solid #7F9DB9 .25pt; mso-padding-alt: 6.0pt 6.0pt 6.0pt 6.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #3333bb; FONT-FAMILY: Verdana"&gt;And&amp;nbsp;boCarType has following sub on the &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #3333bb; FONT-FAMILY: Verdana; mso-bidi-font-size: 12.0pt"&gt;BeforeDelete eventhandler - it uses boCar.GetCountByType to count the related records and if it finds any it is supposed to add a broken rule, with the intention of stopping the execution of the deletion. &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f5080; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid #7F9DB9 .75pt; mso-border-left-alt: solid #7F9DB9 .25pt; mso-padding-alt: 6.0pt 6.0pt 6.0pt 6.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Private Sub boCarTypes_BeforeDelete(ByVal e As MicroFour.StrataFrame.Business.BeforeDeleteEventArgs) Handles Me.BeforeDelete&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim intGoNoGo As Integer&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim boCar As New boCars&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim strErr As String&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Try&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intGoNoGo = boCar.GetCountByType(Me.car_type_id)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (intGoNoGo &amp;gt; 0) Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strErr = "There are cars associated with this " &amp;amp; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "'car type'. In order to remove a 'car type' all " &amp;amp; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "of the cars associated with it must reassigned " &amp;amp; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "or deleted using the 'cars' form."&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Me.AddBrokenRule(boCarTypesFieldNames.car_type_name, strErr)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Me.RejectChanges()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Catch ex As Exception&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _m_Log.LogMe("boCarTypes_BeforeDelete" &amp;amp; ": " &amp;amp; ex.Message)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Finally&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; boCar.Dispose()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intGoNoGo = Nothing&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strErr = Nothing&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Try&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid #7F9DB9 .75pt; mso-border-left-alt: solid #7F9DB9 .25pt; mso-padding-alt: 6.0pt 6.0pt 6.0pt 6.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: Verdana"&gt;Now, when I trace through the code (the delete event invoked from the toolstrip delete button) everything seems to work fine (code above is executed, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #333399; FONT-FAMILY: 'Courier New'"&gt;&lt;FONT size=3&gt;boCar.GetCountByPK returns &amp;gt; 0, "Me.AddBrokenRule" &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: Verdana"&gt;executes(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #333399; FONT-FAMILY: 'Courier New'"&gt;&lt;FONT size=3&gt;Me.RejectChanges&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: Verdana"&gt; seems to have no effect)) except that the code just merrily runs along and the bo tries to commit the deletion despite the broken rule. Of course this results in an unhandled exception (which I could handle and log but I am trying to prevent it in the first place) due to the fk violation - there are child records associated with the parent record I am trying to delete. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid #7F9DB9 .75pt; mso-border-left-alt: solid #7F9DB9 .25pt; mso-padding-alt: 6.0pt 6.0pt 6.0pt 6.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: Verdana"&gt;Note that the "ParentBusinessObject" property is not set on &lt;/SPAN&gt;&lt;SPAN style="COLOR: #333399; FONT-FAMILY: 'Courier New'"&gt;&lt;FONT size=3&gt;boCar &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: Verdana"&gt;as it could have multiple parents and I am handling all of the relationships manually, this just happens to be a simple 1-1 (object to object) relationship. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid #7F9DB9 .75pt; mso-border-left-alt: solid #7F9DB9 .25pt; mso-padding-alt: 6.0pt 6.0pt 6.0pt 6.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: Verdana"&gt;So what it comes down to is&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid #7F9DB9 .75pt; mso-border-left-alt: solid #7F9DB9 .25pt; mso-padding-alt: 6.0pt 6.0pt 6.0pt 6.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: Verdana"&gt;1.) There is an intentional error - an fk violation - that I am testing&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid #7F9DB9 .75pt; mso-border-left-alt: solid #7F9DB9 .25pt; mso-padding-alt: 6.0pt 6.0pt 6.0pt 6.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: Verdana"&gt;2.) All the code and events appear to be firing correctly&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid #7F9DB9 .75pt; mso-border-left-alt: solid #7F9DB9 .25pt; mso-padding-alt: 6.0pt 6.0pt 6.0pt 6.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: Verdana"&gt;3.) The code for adding a broken rule is being executed&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid #7F9DB9 .75pt; mso-border-left-alt: solid #7F9DB9 .25pt; mso-padding-alt: 6.0pt 6.0pt 6.0pt 6.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: Verdana"&gt;4.) Despite there being a broken rule, code execution continues and it tries to commit the delete resulting in the error&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid #7F9DB9 .75pt; mso-border-left-alt: solid #7F9DB9 .25pt; mso-padding-alt: 6.0pt 6.0pt 6.0pt 6.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: Verdana"&gt;To wrap it all up - I can detect the error condition beforehand&amp;nbsp;- how do I stop the execution of the business object's deletion routine? (Similar to a rollback but before the db call is even made.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid #7F9DB9 .75pt; mso-border-left-alt: solid #7F9DB9 .25pt; mso-padding-alt: 6.0pt 6.0pt 6.0pt 6.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: Verdana"&gt;There has gotta be a way - either I'm just missing it or I'm not seeing my own error somewhere. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid #7F9DB9 .75pt; mso-border-left-alt: solid #7F9DB9 .25pt; mso-padding-alt: 6.0pt 6.0pt 6.0pt 6.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: Verdana"&gt;Thanks for your time - J &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;</description><pubDate>Fri, 02 Jun 2006 09:08:04 GMT</pubDate><dc:creator>JKelly</dc:creator></item><item><title>RE: Difficulty with adding broken rules</title><link>http://forum.strataframe.net/FindPost1343.aspx</link><description>Oh, and all of the "Before" events have&amp;nbsp;a Cancel in their event args.&amp;nbsp; So, if you need to abort an Undo(), or abort a Save(), or abort an Add() (BeforeAddNew and AfterAddNew are being added to the class right now), then you can set Cancel = True and it will abort the action; then the corresponding "After" event won't be raised either.</description><pubDate>Fri, 02 Jun 2006 09:08:04 GMT</pubDate><dc:creator>StrataFrame Team</dc:creator></item><item><title>RE: Difficulty with adding broken rules</title><link>http://forum.strataframe.net/FindPost1342.aspx</link><description>Glad you got it sorted :)&lt;/P&gt;&lt;P&gt;If you need anything else, we're here...</description><pubDate>Fri, 02 Jun 2006 09:05:32 GMT</pubDate><dc:creator>StrataFrame Team</dc:creator></item><item><title>RE: Difficulty with adding broken rules</title><link>http://forum.strataframe.net/FindPost1339.aspx</link><description>Thanks for the quick reply, Ben. Looks like we were both writing the answer at the same time. &lt;/P&gt;&lt;P&gt;And thank you for the additional info, too.&lt;/P&gt;&lt;P&gt;- J</description><pubDate>Thu, 01 Jun 2006 17:40:09 GMT</pubDate><dc:creator>JKelly</dc:creator></item><item><title>RE: Difficulty with adding broken rules</title><link>http://forum.strataframe.net/FindPost1338.aspx</link><description>&lt;FONT color=#0000ff&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;DIV style="BORDER-RIGHT: #7f9db9 0.75pt solid; PADDING-RIGHT: 6pt; BORDER-TOP: #7f9db9 0.75pt solid; PADDING-LEFT: 6pt; BACKGROUND: white; PADDING-BOTTOM: 6pt; BORDER-LEFT: #7f9db9 0.25pt solid; PADDING-TOP: 6pt; BORDER-BOTTOM: #7f9db9 0.75pt solid"&gt;&lt;P style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid #7F9DB9 .75pt; mso-border-left-alt: solid #7F9DB9 .25pt; mso-padding-alt: 6.0pt 6.0pt 6.0pt 6.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: Verdana"&gt;Okay - I &lt;EM&gt;was&lt;/EM&gt; missing something. I just found the following... &lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid #7F9DB9 .75pt; mso-border-left-alt: solid #7F9DB9 .25pt; mso-padding-alt: 6.0pt 6.0pt 6.0pt 6.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: Verdana"&gt;'&amp;nbsp;[Given the bo declaration ... ]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid #7F9DB9 .75pt; mso-border-left-alt: solid #7F9DB9 .25pt; mso-padding-alt: 6.0pt 6.0pt 6.0pt 6.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: 'Courier New'"&gt;Private Sub boCarTypes_BeforeDelete(ByVal e As MicroFour.StrataFrame.Business.BeforeDeleteEventArgs) Handles Me.BeforeDelete&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid #7F9DB9 .75pt; mso-border-left-alt: solid #7F9DB9 .25pt; mso-padding-alt: 6.0pt 6.0pt 6.0pt 6.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: Verdana"&gt;... &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid #7F9DB9 .75pt; mso-border-left-alt: solid #7F9DB9 .25pt; mso-padding-alt: 6.0pt 6.0pt 6.0pt 6.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: Verdana"&gt;' [Take 'e' as the "MicroFour.StrataFrame.Business.BeforeDeleteEventArgs" member and on error pop a modal, instructional dialog and set cancel to true]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid #7F9DB9 .75pt; mso-border-left-alt: solid #7F9DB9 .25pt; mso-padding-alt: 6.0pt 6.0pt 6.0pt 6.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: 'Courier New'"&gt;e.Cancel = True&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid #7F9DB9 .75pt; mso-border-left-alt: solid #7F9DB9 .25pt; mso-padding-alt: 6.0pt 6.0pt 6.0pt 6.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: Verdana"&gt;Sorry for the noise. I knew this kind of thing had to exist I just&amp;nbsp;couldn't find it. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #333399; FONT-FAMILY: Verdana; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;Tx - J &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;/FONT&gt;</description><pubDate>Thu, 01 Jun 2006 17:36:41 GMT</pubDate><dc:creator>JKelly</dc:creator></item><item><title>RE: Difficulty with adding broken rules</title><link>http://forum.strataframe.net/FindPost1337.aspx</link><description>The approach you're taking is one that can be taken within the CheckRuleOnCurrentRow() event, but not the BeforeDelete event.&amp;nbsp; You can add broken rules all day long within the CheckRuleOnCurrentRow event and it won't stop the delete because a delete doesn't check broken rules.&amp;nbsp; If you want to abort the delete, then you need to do this:&lt;/P&gt;&lt;P&gt;e.Cancel = True&lt;/P&gt;&lt;P&gt;Setting the Cancel property of the BeforeDeleteEventArgs to True will cause the delete to be aborted (the AfterDelete event won't even be raised in that case).&amp;nbsp; Also, the reason calling RejectChanged doesn't work is because the DataRow.Delete hasn't been called, yet.&amp;nbsp; If you call RejectChanges within the AfterDelete event, then it would undo it because DataRow.Delete() gets called between the BeforeDelete and AfterDelete events.&amp;nbsp; &lt;/P&gt;&lt;P&gt;Since you cannot add broken rules within the BeforeDelete event handler, if you want to show an error on a specific form, you can get to the ErrorProvider on the form with Form.SetErrorProvider() and Form.ClearErrorProvider, which will allow you to show errors on fields manually (using the same error provider settings, like the icon, that you set on the form).&amp;nbsp; &lt;/P&gt;&lt;P&gt;Hope this helps :)</description><pubDate>Thu, 01 Jun 2006 17:30:14 GMT</pubDate><dc:creator>StrataFrame Team</dc:creator></item></channel></rss>