Abort an operation

M

Mangler

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

Dave Anderson

Mangler said:
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
 
M

Mangler

Dave said:
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?
 
D

Dave Anderson

Mangler said:
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?
 
M

Mangler

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

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

Mike Brind

Mangler said:
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 ""? :)
 
M

Mangler

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

Mangler

M

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
 
D

Dave Anderson

Mangler said:
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
 
M

Mike Brind

Mangler said:
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.
 

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top