Abort an operation

Abort an operation

am 15.01.2007 20:41:19 von dwaldman

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!!!!

Re: Abort an operation

am 15.01.2007 20:58:07 von Dave Anderson

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.

Re: Abort an operation

am 15.01.2007 21:23:25 von dwaldman

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?

Re: Abort an operation

am 15.01.2007 21:45:12 von Dave Anderson

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.

Re: Abort an operation

am 15.01.2007 21:59:38 von dwaldman

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......



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

Re: Abort an operation

am 15.01.2007 22:09:11 von Mike Brind

"Mangler" wrote in message
news:1168894778.288517.248720@m58g2000cwm.googlegroups.com.. .
>
> 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......
>
>
>
> 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
>
>

>

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

Re: Abort an operation

am 15.01.2007 22:29:14 von dwaldman

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 :(

Re: Abort an operation

am 16.01.2007 08:55:16 von Dave Anderson

Mangler wrote:
> 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

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/3aa44a 43-2c6c-424f-8801-6ef2675227d3.asp



--
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.

Re: Abort an operation

am 17.01.2007 01:01:31 von Mangler

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/3aa44a 43-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

Re: Abort an operation

am 17.01.2007 23:16:31 von Mangler

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

Re: Abort an operation

am 18.01.2007 00:54:17 von Dave Anderson

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.

Re: Abort an operation

am 18.01.2007 09:21:48 von Mike Brind

"Mangler" wrote in message
news:1169072191.372106.287080@38g2000cwa.googlegroups.com...
>
> 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

Re: Abort an operation

am 18.01.2007 15:28:17 von Mangler

Thanks guys, its working now. Appreciate the help.