Abort an operation

Discussion in 'ASP General' started by Mangler, Jan 15, 2007.

  1. Mangler

    Mangler Guest

    Does anyone have some good advice for the following situation?

    If a condition is true, an insert is restricted ( aborted ) otherwise
    the insert is allowed. I have been killing myself on this for a week
    with no success. I just need some advise at this point. Currently I
    am running a stored proc that returns yes or no based on the variables
    that a user is inputting. If the sp result is yes ( a record already
    exists ) the insert isnt allowed and the user is forced to update the
    existing record.

    I am not much of a coder yet ( still learning ) and dreamweaver code is
    confusing me!!!!
    Mangler, Jan 15, 2007
    #1
    1. Advertising

  2. Mangler wrote:
    > If a condition is true, an insert is restricted ( aborted ) otherwise
    > the insert is allowed. I have been killing myself on this for a week
    > with no success. I just need some advise at this point. Currently I
    > am running a stored proc that returns yes or no based on the variables
    > that a user is inputting. If the sp result is yes ( a record already
    > exists ) the insert isnt allowed and the user is forced to update the
    > existing record.


    I often use Add/Update procedures for this type of thing -- that is, one
    procedure that can do either. You can structure them in several ways. Here
    is the simplest form:

    IF EXISTS (SELECT * FROM myTable WHERE ...) BEGIN
    UPDATE ...
    END
    ELSE BEGIN
    INSERT ...
    END

    Depending on your DB constraints, you can do it this way, too:

    IF NOT EXISTS (SELECT ...) BEGIN
    INSERT ... -- new record, empty except for key
    END

    UPDATE ... -- unconditionally



    --
    Dave Anderson

    Unsolicited commercial email will be read at a cost of $500 per message. Use
    of this email address implies consent to these terms.
    Dave Anderson, Jan 15, 2007
    #2
    1. Advertising

  3. Mangler

    Mangler Guest

    Dave Anderson wrote:
    > I often use Add/Update procedures for this type of thing -- that is, one
    > procedure that can do either. You can structure them in several ways. Here
    > is the simplest form:
    >
    > IF EXISTS (SELECT * FROM myTable WHERE ...) BEGIN
    > UPDATE ...
    > END
    > ELSE BEGIN
    > INSERT ...
    > END
    >
    > Depending on your DB constraints, you can do it this way, too:
    >
    > IF NOT EXISTS (SELECT ...) BEGIN
    > INSERT ... -- new record, empty except for key
    > END
    >
    > UPDATE ... -- unconditionally
    >
    >
    >
    > --
    > Dave Anderson
    >
    > Unsolicited commercial email will be read at a cost of $500 per message. Use
    > of this email address implies consent to these terms.



    I can see where that goes....I just have to figure out all of the
    syntax and what not but thanks for the idea.

    Quick question if you dont mind. In my existing page, I have
    everything working except the abort edit script. I was told that it
    doesnt matter where in the code you put that script. I find that hard
    to believe because when I place it anywhere other that where it is now,
    everything doesnt work, including the SP. But when I put it in the
    place its at now, all inserts are aborted. This has me confued, do you
    have any insight on why this is happening?
    Mangler, Jan 15, 2007
    #3
  4. Mangler wrote:
    > In my existing page, I have everything working except the
    > abort edit script. I was told that it doesnt matter where
    > in the code you put that script. I find that hard to believe
    > because when I place it anywhere other that where it is now,
    > everything doesnt work, including the SP. But when I put it
    > in the place its at now, all inserts are aborted. This has
    > me confued, do you have any insight on why this is happening?


    Without seeing what you are doing, there is no way to guess. Can you provide
    a little bit of code to highlight the issue?




    --
    Dave Anderson

    Unsolicited commercial email will be read at a cost of $500 per message. Use
    of this email address implies consent to these terms.
    Dave Anderson, Jan 15, 2007
    #4
  5. Mangler

    Mangler Guest

    Dave Anderson wrote:
    >
    > Without seeing what you are doing, there is no way to guess. Can you provide
    > a little bit of code to highlight the issue?
    >
    > --
    > Dave Anderson


    Again, sorry about the dreamweaver code......

    <CODE>

    If (MM_i <> LBound(MM_fields)) Then
    MM_tableValues = MM_tableValues & ","
    MM_dbValues = MM_dbValues & ","
    End If
    MM_tableValues = MM_tableValues & MM_columns(MM_i)
    MM_dbValues = MM_dbValues & MM_formVal
    Next
    MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues
    & ") values (" & MM_dbValues & ")"
    If spDupresult = "YES" Then '********************Problem Area
    MM_abortEdit = true '********************If I put this
    here, all inserts are aborted but everything else
    '********************works
    fine, if I move it; everything goes nuts
    If (Not MM_abortEdit) Then
    ' execute the insert
    Set MM_editCmd = Server.CreateObject("ADODB.Command")
    MM_editCmd.ActiveConnection = MM_editConnection
    MM_editCmd.CommandText = MM_editQuery
    MM_editCmd.Execute
    MM_editCmd.ActiveConnection.Close

    If (MM_editRedirectUrl <> "") Then
    Response.Redirect(MM_editRedirectUrl)
    End If
    End If
    End If
    End If

    </CODE>
    Mangler, Jan 15, 2007
    #5
  6. Mangler

    Mike Brind Guest

    "Mangler" <> wrote in message
    news:...
    >
    > Dave Anderson wrote:
    >>
    >> Without seeing what you are doing, there is no way to guess. Can you
    >> provide
    >> a little bit of code to highlight the issue?
    >>
    >> --
    >> Dave Anderson

    >
    > Again, sorry about the dreamweaver code......
    >
    > <CODE>
    >
    > If (MM_i <> LBound(MM_fields)) Then
    > MM_tableValues = MM_tableValues & ","
    > MM_dbValues = MM_dbValues & ","
    > End If
    > MM_tableValues = MM_tableValues & MM_columns(MM_i)
    > MM_dbValues = MM_dbValues & MM_formVal
    > Next
    > MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues
    > & ") values (" & MM_dbValues & ")"
    > If spDupresult = "YES" Then '********************Problem Area
    > MM_abortEdit = true '********************If I put this
    > here, all inserts are aborted but everything else
    > '********************works
    > fine, if I move it; everything goes nuts
    > If (Not MM_abortEdit) Then
    > ' execute the insert
    > Set MM_editCmd = Server.CreateObject("ADODB.Command")
    > MM_editCmd.ActiveConnection = MM_editConnection
    > MM_editCmd.CommandText = MM_editQuery
    > MM_editCmd.Execute
    > MM_editCmd.ActiveConnection.Close
    >
    > If (MM_editRedirectUrl <> "") Then
    > Response.Redirect(MM_editRedirectUrl)
    > End If
    > End If
    > End If
    > End If
    >
    > </CODE>
    >


    That would rather suggest that MM_abortEdit is always false. Have you done
    a Response.write MM_AbortEdit to check its value ? And/Or a Response.Write
    for spDupresult to check its value? And have you found the Find-and-Replace
    thingy in Dreamweaver that allows you to select the current folder and
    replace all the instances of MM_ with ""? :)

    --
    Mike Brind
    Mike Brind, Jan 15, 2007
    #6
  7. Mangler

    Mangler Guest

    Mike Brind wrote:


    > That would rather suggest that MM_abortEdit is always false. Have you done
    > a Response.write MM_AbortEdit to check its value ? And/Or a Response.Write
    > for spDupresult to check its value?


    Yes, that is how I confirmed spDupresult is working

    <% IF (spDupresult) = "YES" Then Response.Write("The requested insert
    has been denied. A record already exsists, please scroll down and
    update the respective part.") END IF %>

    As for MM_AbortEdit- like you said, always seems to stay false.

    > And have you found the Find-and-Replace
    > thingy in Dreamweaver that allows you to select the current folder and
    > replace all the instances of MM_ with ""? :)


    No, looking now......

    I a lost as to how to get this last part working. Very frustrated :(
    Mangler, Jan 15, 2007
    #7
  8. Mangler

    Mangler Guest

    Dave Anderson wrote:

    > Why are you assuming (Not MM_abortEdit) is true in the absence of assigning
    > a value to MM_abortEdit? Remember, (Not Null) is (Null), and not (True):
    > http://msdn.microsoft.com/library/en-us/script56/html/3aa44a43-2c6c-424f-8801-6ef2675227d3.asp


    Thats easy... inexperience! But, because of people like you ( who set
    me straight ) I am learning. I will re-look at the code with my new
    found knowlege and see what happens.

    Thanks....

    Respectfully,

    Danny
    Mangler, Jan 17, 2007
    #8
  9. Mangler

    Mangler Guest

    Hi guys,

    Still not having luck here......


    With the understanding that false = true and true = false I have this:

    If spDupresult = "YES" Then
    MM_abortEdit = false
    Else

    If MM_abortEdit = true Then
    ' execute the insert


    Got any more suggestions?

    Respectfully,
    Danny
    Mangler, Jan 17, 2007
    #9
  10. Mangler wrote:
    > Still not having luck here......
    >
    >
    > With the understanding that false = true and true = false I have this:
    >
    > If spDupresult = "YES" Then
    > MM_abortEdit = false
    > Else
    >
    > If MM_abortEdit = true Then
    > ' execute the insert
    >
    >
    > Got any more suggestions?


    I'm not sure you saw my point. In your example, you never show what
    the initial value of MM_abortEdit is. If it is Null, then consider the
    following:

    Sub WrongWay(spDupresult)
    Dim MM_abortEdit
    MM_abortEdit = Null
    If spDupresult = "YES" Then MM_abortEdit = True
    Response.Write(MM_abortEdit & ":" & Not MM_abortEdit)
    If MM_abortEdit Then Response.Write(":Yes")
    If Not MM_abortEdit Then Response.Write(":No")
    Sub

    Sub RightWay(spDupresult)
    Dim MM_abortEdit
    If spDupresult = "YES" Then
    MM_abortEdit = True
    Else
    MM_abortEdit = False
    End If
    Response.Write(MM_abortEdit & ":" & Not MM_abortEdit)
    If MM_abortEdit Then Response.Write(":Yes")
    If Not MM_abortEdit Then Response.Write(":No")
    Sub

    Call WrongWay("YES") ' True:False:Yes
    Call WrongWay("NO") ' :
    Call RightWay("YES") ' True:False:Yes
    Call RightWay("NO") ' False:True:No

    As you can see, your code example "fits" the WrongWay model. You assigned
    one possible boolean value (True), but then tested for (Not False), never
    considering that there might be a (Not Null) alternative that does nothing.

    It is worth asking why you don't simply use the inequality operator directly
    and skip the extra variable:

    If spDupresult <> "YES" Then
    ' execute the insert
    ...
    End If



    --
    Dave Anderson

    Unsolicited commercial email will be read at a cost of $500 per message. Use
    of this email address implies consent to these terms.
    Dave Anderson, Jan 17, 2007
    #10
  11. Mangler

    Mike Brind Guest

    "Mangler" <> wrote in message
    news:...
    >
    > Hi guys,
    >
    > Still not having luck here......
    >
    >
    > With the understanding that false = true and true = false I have this:
    >
    > If spDupresult = "YES" Then
    > MM_abortEdit = false
    > Else
    >
    > If MM_abortEdit = true Then
    > ' execute the insert
    >
    >
    > Got any more suggestions?
    >


    Only the same one as before: use Response.Write to test the value of all the
    variables as you go through the code. It is an invaluable way to catch
    logical errors.

    Also, as Dave pointed out, an uninitialised variable will be null or empty.
    You should set a default value for MM_abortEdit, which in your case is true.

    Actually, as Dave also pointed out in his latest post, If spDupresult <>
    "YES" Then 'execute the insert will bypass the additional unnecessary
    MM_abortEdit variable.

    --
    Mike Brind
    Mike Brind, Jan 18, 2007
    #11
  12. Mangler

    Mangler Guest

    Thanks guys, its working now. Appreciate the help.
    Mangler, Jan 18, 2007
    #12
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Prasad Dannani

    Bulk Import - Thread was being Abort

    Prasad Dannani, Sep 1, 2005, in forum: ASP .Net
    Replies:
    0
    Views:
    524
    Prasad Dannani
    Sep 1, 2005
  2. Lothar Scholz

    How to abort a ftp operation

    Lothar Scholz, Jul 6, 2004, in forum: Python
    Replies:
    1
    Views:
    964
    Ville Vainio
    Jul 6, 2004
  3. david ullua
    Replies:
    13
    Views:
    665
  4. raan
    Replies:
    2
    Views:
    449
  5. Buzz Lightyear
    Replies:
    10
    Views:
    1,119
    Alexander Bartolich
    Aug 12, 2009
Loading...

Share This Page